]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-ssr): import helpers from correct packages
authorEvan You <yyx990803@gmail.com>
Wed, 5 Feb 2020 16:20:50 +0000 (11:20 -0500)
committerEvan You <yyx990803@gmail.com>
Wed, 5 Feb 2020 16:20:50 +0000 (11:20 -0500)
packages/compiler-ssr/__tests__/ssrElement.spec.ts
packages/compiler-ssr/__tests__/ssrVShow.spec.ts
packages/compiler-ssr/src/runtimeHelpers.ts
packages/compiler-ssr/src/ssrCodegenTransform.ts

index 61df86ce1e8f8645b3c526f7e9b2f8a0f5f4ac53..1f08706fd3f84ea3ab590258d02c3d02af1063c4 100644 (file)
@@ -51,7 +51,7 @@ describe('ssr: element', () => {
     test('<textarea> with dynamic v-bind', () => {
       expect(compile(`<textarea v-bind="obj">fallback</textarea>`).code)
         .toMatchInlineSnapshot(`
-        "const { _renderAttrs, _interpolate } = require(\\"vue\\")
+        "const { _renderAttrs, _interpolate } = require(\\"@vue/server-renderer\\")
 
         return function ssrRender(_ctx, _push, _parent) {
           let _temp0
index 6f7a0b8d170f759010545077fb2d076ca53a82ae..48f11f842440b7801318b67191dba57ac378ce34 100644 (file)
@@ -3,7 +3,7 @@ import { compile } from '../src'
 describe('ssr: v-show', () => {
   test('basic', () => {
     expect(compile(`<div v-show="foo"/>`).code).toMatchInlineSnapshot(`
-      "const { _renderStyle } = require(\\"vue\\")
+      "const { _renderStyle } = require(\\"@vue/server-renderer\\")
 
       return function ssrRender(_ctx, _push, _parent) {
         _push(\`<div\${_renderStyle((_ctx.foo) ? null : { display: \\"none\\" })}></div>\`)
@@ -14,7 +14,7 @@ describe('ssr: v-show', () => {
   test('with static style', () => {
     expect(compile(`<div style="color:red" v-show="foo"/>`).code)
       .toMatchInlineSnapshot(`
-      "const { _renderStyle } = require(\\"vue\\")
+      "const { _renderStyle } = require(\\"@vue/server-renderer\\")
 
       const _hoisted_1 = {\\"color\\":\\"red\\"}
 
@@ -30,7 +30,7 @@ describe('ssr: v-show', () => {
   test('with dynamic style', () => {
     expect(compile(`<div :style="{ color: 'red' }" v-show="foo"/>`).code)
       .toMatchInlineSnapshot(`
-      "const { _renderStyle } = require(\\"vue\\")
+      "const { _renderStyle } = require(\\"@vue/server-renderer\\")
 
       return function ssrRender(_ctx, _push, _parent) {
         _push(\`<div\${_renderStyle([
@@ -46,7 +46,7 @@ describe('ssr: v-show', () => {
       compile(`<div style="color:red" :style="{ fontSize: 14 }" v-show="foo"/>`)
         .code
     ).toMatchInlineSnapshot(`
-      "const { _renderStyle } = require(\\"vue\\")
+      "const { _renderStyle } = require(\\"@vue/server-renderer\\")
 
       const _hoisted_1 = {\\"color\\":\\"red\\"}
 
@@ -66,7 +66,8 @@ describe('ssr: v-show', () => {
         `<div v-bind="baz" style="color:red" :style="{ fontSize: 14 }" v-show="foo"/>`
       ).code
     ).toMatchInlineSnapshot(`
-      "const { mergeProps, _renderAttrs } = require(\\"vue\\")
+      "const { mergeProps } = require(\\"vue\\")
+      const { _renderAttrs } = require(\\"@vue/server-renderer\\")
 
       const _hoisted_1 = {\\"color\\":\\"red\\"}
 
index 6c98e3ce10b1864c6c4db95e53770219132f616e..392b0eadc7c91411f35ad2f00ce592c005606488 100644 (file)
@@ -10,9 +10,7 @@ export const SSR_RENDER_ATTR = Symbol(`renderAttr`)
 export const SSR_RENDER_DYNAMIC_ATTR = Symbol(`renderDynamicAttr`)
 export const SSR_RENDER_LIST = Symbol(`renderList`)
 
-// Note: these are helpers imported from @vue/server-renderer
-// make sure the names match!
-registerRuntimeHelpers({
+export const ssrHelpers = {
   [SSR_INTERPOLATE]: `_interpolate`,
   [SSR_RENDER_COMPONENT]: `_renderComponent`,
   [SSR_RENDER_SLOT]: `_renderSlot`,
@@ -22,4 +20,8 @@ registerRuntimeHelpers({
   [SSR_RENDER_ATTR]: `_renderAttr`,
   [SSR_RENDER_DYNAMIC_ATTR]: `_renderDynamicAttr`,
   [SSR_RENDER_LIST]: `_renderList`
-})
+}
+
+// Note: these are helpers imported from @vue/server-renderer
+// make sure the names match!
+registerRuntimeHelpers(ssrHelpers)
index ade82b0c78896bcd4a55600c7b082289206d1a95..8a0758aed0947e9bc85bbb70a2c3b151025b6009 100644 (file)
@@ -14,7 +14,7 @@ import {
   CallExpression
 } from '@vue/compiler-dom'
 import { isString, escapeHtml, NO } from '@vue/shared'
-import { SSR_INTERPOLATE } from './runtimeHelpers'
+import { SSR_INTERPOLATE, ssrHelpers } from './runtimeHelpers'
 import { processIf } from './transforms/ssrVIf'
 import { processFor } from './transforms/ssrVFor'
 
@@ -38,7 +38,14 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) {
   }
 
   ast.codegenNode = createBlockStatement(context.body)
-  ast.ssrHelpers = [...context.helpers]
+
+  // Finalize helpers.
+  // We need to separate helpers imported from 'vue' vs. '@vue/server-renderer'
+  ast.ssrHelpers = [
+    ...ast.helpers.filter(h => h in ssrHelpers),
+    ...context.helpers
+  ]
+  ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers))
 }
 
 export type SSRTransformContext = ReturnType<typeof createSSRTransformContext>