wip(ssr): element scopeId
This commit is contained in:
@@ -44,7 +44,8 @@ import {
|
||||
CREATE_TEXT,
|
||||
PUSH_SCOPE_ID,
|
||||
POP_SCOPE_ID,
|
||||
WITH_SCOPE_ID
|
||||
WITH_SCOPE_ID,
|
||||
CREATE_BLOCK
|
||||
} from './runtimeHelpers'
|
||||
import { ImportItem } from './transform'
|
||||
|
||||
@@ -333,14 +334,28 @@ function genModulePreamble(
|
||||
context: CodegenContext,
|
||||
genScopeId: boolean
|
||||
) {
|
||||
const { push, helper, newline, scopeId, runtimeModuleName } = context
|
||||
// generate import statements for helpers
|
||||
if (genScopeId) {
|
||||
ast.helpers.push(WITH_SCOPE_ID)
|
||||
if (ast.hoists.length) {
|
||||
ast.helpers.push(PUSH_SCOPE_ID, POP_SCOPE_ID)
|
||||
const { push, helper, newline, scopeId, runtimeModuleName, ssr } = context
|
||||
|
||||
if (!__BROWSER__) {
|
||||
// in ssr mode, `withId` helper is only needed if the template contains
|
||||
// de-optimized component slots (which uses the createVNode helper)
|
||||
if (
|
||||
ssr &&
|
||||
!(
|
||||
ast.helpers.includes(CREATE_VNODE) || ast.helpers.includes(CREATE_BLOCK)
|
||||
)
|
||||
) {
|
||||
genScopeId = false
|
||||
}
|
||||
if (genScopeId) {
|
||||
ast.helpers.push(WITH_SCOPE_ID)
|
||||
if (ast.hoists.length) {
|
||||
ast.helpers.push(PUSH_SCOPE_ID, POP_SCOPE_ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// generate import statements for helpers
|
||||
if (ast.helpers.length) {
|
||||
push(
|
||||
`import { ${ast.helpers.map(helper).join(', ')} } from ${JSON.stringify(
|
||||
@@ -348,21 +363,25 @@ function genModulePreamble(
|
||||
)}\n`
|
||||
)
|
||||
}
|
||||
if (!__BROWSER__ && ast.ssrHelpers && ast.ssrHelpers.length) {
|
||||
push(
|
||||
`import { ${ast.ssrHelpers
|
||||
.map(helper)
|
||||
.join(', ')} } from "@vue/server-renderer"\n`
|
||||
)
|
||||
}
|
||||
if (ast.imports.length) {
|
||||
genImports(ast.imports, context)
|
||||
newline()
|
||||
}
|
||||
if (genScopeId) {
|
||||
push(`const withId = ${helper(WITH_SCOPE_ID)}("${scopeId}")`)
|
||||
newline()
|
||||
|
||||
if (!__BROWSER__) {
|
||||
if (ast.ssrHelpers && ast.ssrHelpers.length) {
|
||||
push(
|
||||
`import { ${ast.ssrHelpers
|
||||
.map(helper)
|
||||
.join(', ')} } from "@vue/server-renderer"\n`
|
||||
)
|
||||
}
|
||||
if (ast.imports.length) {
|
||||
genImports(ast.imports, context)
|
||||
newline()
|
||||
}
|
||||
if (genScopeId) {
|
||||
push(`const withId = ${helper(WITH_SCOPE_ID)}("${scopeId}")`)
|
||||
newline()
|
||||
}
|
||||
}
|
||||
|
||||
genHoists(ast.hoists, context)
|
||||
newline()
|
||||
push(`export `)
|
||||
|
||||
Reference in New Issue
Block a user