Skip to content

Commit

Permalink
align Vue integrations (#1699)
Browse files Browse the repository at this point in the history
  • Loading branch information
brillout committed Jun 14, 2024
1 parent 775d83b commit 9e46c99
Show file tree
Hide file tree
Showing 34 changed files with 72 additions and 77 deletions.
6 changes: 3 additions & 3 deletions boilerplates/boilerplate-vue-ts/renderer/+onRenderClient.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { getPageTitle } from './getPageTitle'
import type { OnRenderClientAsync } from 'vike/types'

let app: ReturnType<typeof createApp>
let app: ReturnType<typeof createVueApp>
const onRenderClient: OnRenderClientAsync = async (pageContext): ReturnType<OnRenderClientAsync> => {
// This onRenderClient() hook only supports SSR, see https://vike.dev/render-modes for how to modify onRenderClient()
// to support SPA
if (!pageContext.Page) throw new Error('My onRenderClient() hook expects pageContext.Page to be defined')

if (!app) {
app = createApp(pageContext)
app = createVueApp(pageContext)
app.mount('#app')
} else {
app.changePage(pageContext)
Expand Down
4 changes: 2 additions & 2 deletions boilerplates/boilerplate-vue-ts/renderer/+onRenderHtml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export { onRenderHtml }
import { renderToString as renderToString_ } from '@vue/server-renderer'
import type { App } from 'vue'
import { escapeInject, dangerouslySkipEscape } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import logoUrl from './logo.svg'
import type { OnRenderHtmlAsync } from 'vike/types'
import { getPageTitle } from './getPageTitle'
Expand All @@ -14,7 +14,7 @@ const onRenderHtml: OnRenderHtmlAsync = async (pageContext): ReturnType<OnRender
// onRenderHtml() to support SPA
if (!pageContext.Page) throw new Error('My render() hook expects pageContext.Page to be defined')

const app = createApp(pageContext)
const app = createVueApp(pageContext)

const appHtml = await renderToString(app)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { createApp }
export { createVueApp }

import { createSSRApp, h, markRaw, reactive, ref } from 'vue'
import PageLayout from './PageLayout.vue'
Expand All @@ -7,7 +7,7 @@ import type { PageContext } from 'vike/types'
import { setData } from './useData'
import { isObject, objectAssign } from './utils'

function createApp(pageContext: PageContext) {
function createVueApp(pageContext: PageContext) {
const { Page } = pageContext

const pageRef = ref(markRaw(Page))
Expand Down
4 changes: 2 additions & 2 deletions boilerplates/boilerplate-vue/renderer/+onRenderClient.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { getPageTitle } from './getPageTitle'

let app
Expand All @@ -11,7 +11,7 @@ async function onRenderClient(pageContext) {
if (!pageContext.Page) throw new Error('My onRenderClient() hook expects pageContext.Page to be defined')

if (!app) {
app = createApp(pageContext)
app = createVueApp(pageContext)
app.mount('#app')
} else {
app.changePage(pageContext)
Expand Down
4 changes: 2 additions & 2 deletions boilerplates/boilerplate-vue/renderer/+onRenderHtml.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export { onRenderHtml }

import { renderToString as renderToString_ } from '@vue/server-renderer'
import { escapeInject, dangerouslySkipEscape } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import logoUrl from './logo.svg'
import { getPageTitle } from './getPageTitle'

Expand All @@ -12,7 +12,7 @@ async function onRenderHtml(pageContext) {
// onRenderHtml() to support SPA
if (!pageContext.Page) throw new Error('My render() hook expects pageContext.Page to be defined')

const app = createApp(pageContext)
const app = createVueApp(pageContext)

const appHtml = await renderToString(app)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
export { createApp }
export { createVueApp }

import { createSSRApp, h, markRaw, reactive, ref } from 'vue'
import PageLayout from './PageLayout.vue'
import { setPageContext } from './usePageContext'
import { setData } from './useData'
import { isObject } from './utils'

function createApp(pageContext) {
function createVueApp(pageContext) {
const { Page } = pageContext

const pageRef = ref(markRaw(Page))
Expand Down
11 changes: 3 additions & 8 deletions docs/pages/usePageContext/+Page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ with
to make `pageContext` accessible from any Vue component.

```js
// app.js
// createVueApp.js

const app = createSSRApp(/*...*/)
app.provide('pageContext', pageContext)
Expand Down Expand Up @@ -96,13 +96,12 @@ Examples:
- JavaScript: <RepoLink path='/boilerplates/boilerplate-vue/renderer/usePageContext.js' />
- TypeScript: <RepoLink path='/boilerplates/boilerplate-vue-ts/renderer/usePageContext.ts' />


### Vue 3 - `globalProperties`

Alternatively, you can make `pageContext` available to all Vue components by using [app.config.globalProperties](https://v3.vuejs.org/api/application-config.html#globalproperties).

```js
// app.js
// createVueApp.js

const app = createSSRApp(/*...*/)
app.config.globalProperties.$pageContext = pageContext
Expand All @@ -123,11 +122,7 @@ const pageContext = getCurrentInstance().appContext.config.globalProperties.$pag
</script>
```

Example:
- [/boilerplates/boilerplate-vue/renderer/app.js (@abff8de)](https://github.com/vikejs/vike/blob/abff8debc4c7cd6ab11e99e757379e5237a6c18c/boilerplates/boilerplate-vue/renderer/app.js#L26)
(`app.config.globalProperties.$pageContext = pageContext`)
- [/boilerplates/boilerplate-vue/renderer/Link.vue (@abff8de)](https://github.com/vikejs/vike/blob/abff8debc4c7cd6ab11e99e757379e5237a6c18c/boilerplates/boilerplate-vue/renderer/Link.vue#L2)
(accessing `pageContext` from any Vue component)
Example: [/boilerplates/boilerplate-vue/](https://github.com/vikejs/vike/tree/main/boilerplates/boilerplate-vue).

### Vue 2

Expand Down
4 changes: 2 additions & 2 deletions examples/cloudflare-workers-vue/renderer/+onRenderClient.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'

async function onRenderClient(pageContext) {
const app = createApp(pageContext)
const app = createVueApp(pageContext)
app.mount('#app')
}
4 changes: 2 additions & 2 deletions examples/cloudflare-workers-vue/renderer/+onRenderHtml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ export { onRenderHtml }
import { pipeToWebWritable, pipeToNodeWritable } from '@vue/server-renderer'

import { escapeInject, stampPipe } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import type { OnRenderHtmlAsync } from 'vike/types'
import type { Writable } from 'stream'

const onRenderHtml: OnRenderHtmlAsync = async (pageContext): ReturnType<OnRenderHtmlAsync> => {
const app = createApp(pageContext)
const app = createVueApp(pageContext)

// Streaming is optional: we can use renderToString() instead.
const pipe = isWorker()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createSSRApp, h } from 'vue'
import PageLayout from './PageLayout.vue'

export { createApp }
export { createVueApp }

function createApp(pageContext) {
function createVueApp(pageContext) {
const { Page, pageProps } = pageContext
const PageWithLayout = {
render() {
Expand Down
4 changes: 2 additions & 2 deletions examples/graphql-apollo-vue/renderer/+onBeforeRender.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
export default onBeforeRender

import { renderToString } from '@vue/server-renderer'
import { createApp } from './app'
import { createVueApp } from './createVueApp'

async function onBeforeRender(pageContext) {
const app = createApp(pageContext, pageContext.apolloClient)
const app = createVueApp(pageContext, pageContext.apolloClient)
const appHtml = await renderToString(app)
const apolloInitialState = pageContext.apolloClient.extract()
return {
Expand Down
4 changes: 2 additions & 2 deletions examples/graphql-apollo-vue/renderer/+onRenderClient.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
import fetch from 'cross-fetch'

Expand All @@ -12,6 +12,6 @@ function onRenderClient(pageContext) {
connectToDevTools: true
})

const app = createApp(pageContext, defaultClient)
const app = createVueApp(pageContext, defaultClient)
app.mount('#app')
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { createSSRApp, h, provide } from 'vue'
import PageLayout from './PageLayout.vue'
import { setPageContext } from './usePageContext'
export { createApp }
export { createVueApp }
import { DefaultApolloClient } from '@vue/apollo-composable'

function createApp(pageContext, apolloClient) {
function createVueApp(pageContext, apolloClient) {
const { Page, pageProps } = pageContext
const PageWithLayout = {
setup() {
Expand Down
6 changes: 3 additions & 3 deletions examples/vue-full/renderer/+onRenderClient.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { getPageTitle } from './getPageTitle'
import type { OnRenderClientAsync } from 'vike/types'

let app: ReturnType<typeof createApp>
let app: ReturnType<typeof createVueApp>
const onRenderClient: OnRenderClientAsync = async (pageContext): ReturnType<OnRenderClientAsync> => {
if (!app) {
app = createApp(pageContext)
app = createVueApp(pageContext)
app.mount('#app')
} else {
app.changePage(pageContext)
Expand Down
4 changes: 2 additions & 2 deletions examples/vue-full/renderer/+onRenderHtml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ export { onRenderHtml }

import { renderToNodeStream } from '@vue/server-renderer'
import { escapeInject } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { getPageTitle } from './getPageTitle'
import type { OnRenderHtmlAsync } from 'vike/types'

const onRenderHtml: OnRenderHtmlAsync = async (pageContext): ReturnType<OnRenderHtmlAsync> => {
const app = createApp(pageContext)
const app = createVueApp(pageContext)
const stream = renderToNodeStream(app)

const title = getPageTitle(pageContext)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { createApp }
export { createVueApp }

import { createSSRApp, h, markRaw, reactive, ref } from 'vue'
import PageLayout from './PageLayout.vue'
Expand All @@ -7,7 +7,7 @@ import type { PageContext } from 'vike/types'
import { setData } from './useData'
import { isObject, objectAssign } from './utils'

function createApp(pageContext: PageContext) {
function createVueApp(pageContext: PageContext) {
const { Page } = pageContext

const pageRef = ref(markRaw(Page))
Expand Down
4 changes: 2 additions & 2 deletions examples/vue-minimal/renderer/+onRenderClient.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// https://vike.dev/onRenderClient
export { onRenderClient }

import { createApp } from './app'
import { createVueApp } from './createVueApp'

async function onRenderClient(pageContext) {
const app = createApp(pageContext)
const app = createVueApp(pageContext)
app.mount('#app')
}
4 changes: 2 additions & 2 deletions examples/vue-minimal/renderer/+onRenderHtml.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ export { onRenderHtml }

import { renderToString } from '@vue/server-renderer'
import { escapeInject, dangerouslySkipEscape } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'

async function onRenderHtml(pageContext) {
const app = createApp(pageContext)
const app = createVueApp(pageContext)
const appHtml = await renderToString(app)

return escapeInject`<!DOCTYPE html>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createSSRApp, h } from 'vue'
import PageLayout from './PageLayout.vue'

export { createApp }
export { createVueApp }

function createApp(pageContext) {
function createVueApp(pageContext) {
const { Page, pageProps } = pageContext
const PageWithLayout = {
render() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createApp } from './app'
import { createVueApp } from './createVueApp'

export { render }

async function render(pageContext) {
const app = createApp(pageContext)
const app = createVueApp(pageContext)
app.mount('#app')
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { pipeToWebWritable, pipeToNodeWritable } from '@vue/server-renderer'

import { escapeInject, stampPipe } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import type { Writable } from 'stream'

export { render }
Expand All @@ -11,7 +11,7 @@ export { passToClient }
const passToClient = ['pageProps']

async function render(pageContext: any) {
const app = createApp(pageContext)
const app = createVueApp(pageContext)

// Streaming is optional: we can use renderToString() instead.
const pipe = isWorker()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createSSRApp, h } from 'vue'
import PageLayout from './PageLayout.vue'

export { createApp }
export { createVueApp }

function createApp(pageContext) {
function createVueApp(pageContext) {
const { Page, pageProps } = pageContext
const PageWithLayout = {
render() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export { render }

import { createApp } from './app'
import { createVueApp } from './createVueApp'
import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
import fetch from 'cross-fetch'

Expand All @@ -11,6 +11,6 @@ function render(pageContext) {
connectToDevTools: true
})

const app = createApp(pageContext, defaultClient)
const app = createVueApp(pageContext, defaultClient)
app.mount('#app')
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { renderToString } from '@vue/server-renderer'
import { escapeInject, dangerouslySkipEscape } from 'vike/server'
import { createApp } from './app'
import { createVueApp } from './createVueApp'
import logoUrl from './logo.svg'

export { render }
Expand Down Expand Up @@ -39,7 +39,7 @@ async function render(pageContext) {
}

async function onBeforeRender(pageContext) {
const app = createApp(pageContext, pageContext.apolloClient)
const app = createVueApp(pageContext, pageContext.apolloClient)
const appHtml = await renderToString(app)
const apolloInitialState = pageContext.apolloClient.extract()
return {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { createSSRApp, h, provide } from 'vue'
import PageShell from './PageShell.vue'
import { setPageContext } from './usePageContext'
export { createApp }
export { createVueApp }
import { DefaultApolloClient } from '@vue/apollo-composable'

function createApp(pageContext, apolloClient) {
function createVueApp(pageContext, apolloClient) {
const { Page, pageProps } = pageContext
const PageWithLayout = {
setup() {
Expand Down
Loading

0 comments on commit 9e46c99

Please sign in to comment.