diff --git a/src/server/create-renderer.js b/src/server/create-renderer.js index 502b6fa6d1d..fa57f11d221 100644 --- a/src/server/create-renderer.js +++ b/src/server/create-renderer.js @@ -31,6 +31,7 @@ export type RenderOptions = { clientManifest?: ClientManifest; serializer?: Function; runInNewContext?: boolean | 'once'; + contentPlaceholder?: string; }; export function createRenderer ({ @@ -43,7 +44,8 @@ export function createRenderer ({ shouldPreload, shouldPrefetch, clientManifest, - serializer + serializer, + contentPlaceholder }: RenderOptions = {}): Renderer { const render = createRenderFunction(modules, directives, isUnaryTag, cache) const templateRenderer = new TemplateRenderer({ @@ -52,7 +54,8 @@ export function createRenderer ({ shouldPreload, shouldPrefetch, clientManifest, - serializer + serializer, + contentPlaceholder }) return { diff --git a/src/server/template-renderer/index.js b/src/server/template-renderer/index.js index c8927b2de2c..735a86b8422 100644 --- a/src/server/template-renderer/index.js +++ b/src/server/template-renderer/index.js @@ -17,6 +17,7 @@ type TemplateRendererOptions = { shouldPreload?: (file: string, type: string) => boolean; shouldPrefetch?: (file: string, type: string) => boolean; serializer?: Function; + contentPlaceholder?: string; }; export type ClientManifest = { @@ -55,11 +56,11 @@ export default class TemplateRenderer { this.inject = options.inject !== false // if no template option is provided, the renderer is created // as a utility object for rendering assets like preload links and scripts. - - const { template } = options + + const { template, contentPlaceholder } = options this.parsedTemplate = template ? typeof template === 'string' - ? parseTemplate(template) + ? parseTemplate(template, contentPlaceholder) : template : null diff --git a/test/ssr/ssr-template.spec.js b/test/ssr/ssr-template.spec.js index d30f096668a..7ab8535a0f7 100644 --- a/test/ssr/ssr-template.spec.js +++ b/test/ssr/ssr-template.spec.js @@ -5,6 +5,7 @@ import VueSSRClientPlugin from '../../packages/vue-server-renderer/client-plugin import { createRenderer as createBundleRenderer } from './ssr-bundle-render.spec.js' const defaultTemplate = `
` +const customContentPlaceholderTemplate = `` const interpolateTemplate = `