mirror of https://github.com/vuejs/core.git
refactor(compiler-vapor): fast path for string
This commit is contained in:
parent
c0b7515369
commit
7f8a94b48e
|
@ -56,9 +56,12 @@ export interface CodegenContext {
|
|||
newline(): CodeFragment
|
||||
multi(
|
||||
codes: [left: string, right: string, segment: string],
|
||||
...fn: Array<false | CodeFragment[]>
|
||||
...fn: Array<false | string | CodeFragment[]>
|
||||
): CodeFragment[]
|
||||
call(
|
||||
name: string,
|
||||
...args: Array<false | string | CodeFragment[]>
|
||||
): CodeFragment[]
|
||||
call(name: string, ...args: Array<false | CodeFragment[]>): CodeFragment[]
|
||||
withIndent<T>(fn: () => T): T
|
||||
|
||||
helpers: Set<string>
|
||||
|
@ -116,8 +119,9 @@ function createCodegenContext(ir: RootIRNode, options: CodegenOptions) {
|
|||
const frag: CodeFragment[] = []
|
||||
fns = fns.filter(Boolean)
|
||||
frag.push(left)
|
||||
for (const [i, fn] of fns.entries()) {
|
||||
for (let [i, fn] of fns.entries()) {
|
||||
if (fn) {
|
||||
if (isString(fn)) fn = [fn]
|
||||
frag.push(...fn)
|
||||
if (i < fns.length - 1) frag.push(seg)
|
||||
}
|
||||
|
|
|
@ -16,9 +16,9 @@ export function genInsertNode(
|
|||
newline(),
|
||||
...call(
|
||||
vaporHelper('insert'),
|
||||
[element],
|
||||
[`n${oper.parent}`],
|
||||
[`n${oper.anchor}`],
|
||||
element,
|
||||
`n${oper.parent}`,
|
||||
`n${oper.anchor}`,
|
||||
),
|
||||
]
|
||||
}
|
||||
|
@ -31,8 +31,8 @@ export function genPrependNode(
|
|||
newline(),
|
||||
...call(
|
||||
vaporHelper('prepend'),
|
||||
[`n${oper.parent}`],
|
||||
...oper.elements.map(el => [`n${el}`]),
|
||||
`n${oper.parent}`,
|
||||
...oper.elements.map(el => `n${el}`),
|
||||
),
|
||||
]
|
||||
}
|
||||
|
@ -46,8 +46,8 @@ export function genAppendNode(
|
|||
newline(),
|
||||
...call(
|
||||
vaporHelper('append'),
|
||||
[`n${oper.parent}`],
|
||||
...oper.elements.map(el => [`n${el}`]),
|
||||
`n${oper.parent}`,
|
||||
...oper.elements.map(el => `n${el}`),
|
||||
),
|
||||
]
|
||||
}
|
||||
|
|
|
@ -16,13 +16,12 @@ export function genSetEvent(
|
|||
|
||||
const name = genName()
|
||||
const handler = genFinalizedHandler()
|
||||
const opt = !!options.length && [
|
||||
`{ ${options.map(v => `${v}: true`).join(', ')} }`,
|
||||
]
|
||||
const opt =
|
||||
!!options.length && `{ ${options.map(v => `${v}: true`).join(', ')} }`
|
||||
|
||||
return [
|
||||
newline(),
|
||||
...call(vaporHelper('on'), [`n${oper.element}`], name, handler, opt),
|
||||
...call(vaporHelper('on'), `n${oper.element}`, name, handler, opt),
|
||||
]
|
||||
|
||||
function genName(): CodeFragment[] {
|
||||
|
@ -38,7 +37,7 @@ export function genSetEvent(
|
|||
}
|
||||
}
|
||||
|
||||
function genEventHandler(): CodeFragment[] {
|
||||
function genEventHandler() {
|
||||
const exp = oper.value
|
||||
if (exp && exp.content.trim()) {
|
||||
const isMemberExp = isMemberExpression(exp.content, ctxOptions)
|
||||
|
@ -64,10 +63,10 @@ export function genSetEvent(
|
|||
}
|
||||
}
|
||||
}
|
||||
return ['() => {}']
|
||||
return '() => {}'
|
||||
}
|
||||
|
||||
function genFinalizedHandler(): CodeFragment[] {
|
||||
function genFinalizedHandler() {
|
||||
let expr = genEventHandler()
|
||||
|
||||
if (nonKeys.length) {
|
||||
|
|
|
@ -11,7 +11,7 @@ export function genSetHtml(
|
|||
newline(),
|
||||
...call(
|
||||
vaporHelper('setHtml'),
|
||||
[`n${oper.element}`],
|
||||
`n${oper.element}`,
|
||||
genExpression(oper.value, context),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -19,7 +19,7 @@ export function genSetModelValue(
|
|||
|
||||
return [
|
||||
newline(),
|
||||
...call(vaporHelper('on'), [`n${oper.element}`], name, handler),
|
||||
...call(vaporHelper('on'), `n${oper.element}`, name, handler),
|
||||
]
|
||||
|
||||
function genName(): CodeFragment[] {
|
||||
|
|
|
@ -9,7 +9,7 @@ export function genSetProp(
|
|||
): CodeFragment[] {
|
||||
const { call, newline, vaporHelper, helper } = context
|
||||
|
||||
const element = [`n${oper.element}`]
|
||||
const element = `n${oper.element}`
|
||||
const expr = genExpression(oper.key, context)
|
||||
|
||||
// fast path for static props
|
||||
|
|
|
@ -11,7 +11,7 @@ export function genSetText(
|
|||
newline(),
|
||||
...call(
|
||||
vaporHelper('setText'),
|
||||
[`n${oper.element}`],
|
||||
`n${oper.element}`,
|
||||
genExpression(oper.value, context),
|
||||
),
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue