From: Evan You Date: Wed, 5 Feb 2020 03:49:47 +0000 (-0500) Subject: wip(ssr): handle ``).code) + .toMatchInlineSnapshot(` + "const { _renderAttrs, _interpolate } = require(\\"vue\\") + + return function ssrRender(_ctx, _push, _parent) { + let _temp0 + + _push(\`\${ + _interpolate((\\"value\\" in _temp0) ? _temp0.value : \\"fallback\\") + }\`) + }" + `) }) }) @@ -95,7 +109,7 @@ describe('ssr: element', () => { expect( getCompiledString(``) ).toMatchInlineSnapshot( - `"\`\`"` + `"\`\`"` ) }) diff --git a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts index 1c1d115746..4f76441089 100644 --- a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts +++ b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts @@ -17,7 +17,9 @@ import { createArrayExpression, ExpressionNode, JSChildNode, - ArrayExpression + ArrayExpression, + createAssignmentExpression, + TextNode } from '@vue/compiler-dom' import { escapeHtml, isBooleanAttr, isSSRSafeAttrName } from '@vue/shared' import { createSSRCompilerError, SSRErrorCodes } from '../errors' @@ -26,7 +28,8 @@ import { SSR_RENDER_CLASS, SSR_RENDER_STYLE, SSR_RENDER_DYNAMIC_ATTR, - SSR_RENDER_ATTRS + SSR_RENDER_ATTRS, + SSR_INTERPOLATE } from '../runtimeHelpers' export const ssrTransformElement: NodeTransform = (node, context) => { @@ -54,9 +57,38 @@ export const ssrTransformElement: NodeTransform = (node, context) => { if (hasDynamicVBind) { const { props } = buildProps(node, context, node.props, true /* ssr */) if (props) { - openTag.push( - createCallExpression(context.helper(SSR_RENDER_ATTRS), [props]) + const propsExp = createCallExpression( + context.helper(SSR_RENDER_ATTRS), + [props] ) + if (node.tag === 'textarea') { + //