Skip to content

Commit cfd981d

Browse files
committed
refactor: optimize template exports
1 parent 03bdf81 commit cfd981d

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

lib/loader.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,16 @@ module.exports = function (content) {
208208
output += '/* template */\n'
209209
const template = parts.template
210210
if (template) {
211-
output +=
212-
(template.src
213-
? getImportForSrc('template', template)
214-
: getImport('template', template)) + '\n'
211+
output += `import {` +
212+
`render as __vue_render__, ` +
213+
`staticRenderFns as __vue_static_render_fns__` +
214+
`} from ${
215+
template.src
216+
? getSrcRequestString('template', template)
217+
: getRequestString('template', template)
218+
}\n`
215219
} else {
216-
output += 'var __vue_template__ = null\n'
220+
output += 'var __vue_render__, __vue_static_render_fns__\n'
217221
}
218222

219223
// <template functional>
@@ -264,7 +268,8 @@ module.exports = function (content) {
264268
`import normalizeComponent from ${componentNormalizerRequest}\n` +
265269
'var Component = normalizeComponent(\n' +
266270
` __vue_script__,\n` +
267-
' __vue_template__,\n' +
271+
` __vue_render__,\n` +
272+
` __vue_static_render_fns__,\n` +
268273
' __vue_template_functional__,\n' +
269274
' __vue_styles__,\n' +
270275
' __vue_scopeId__,\n' +

lib/runtime/component-normalizer.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
export default function normalizeComponent (
88
scriptExports,
9-
compiledTemplate,
9+
render,
10+
staticRenderFns,
1011
functionalTemplate,
1112
injectStyles,
1213
scopeId,
@@ -27,9 +28,9 @@ export default function normalizeComponent (
2728
: scriptExports
2829

2930
// render functions
30-
if (compiledTemplate) {
31-
options.render = compiledTemplate.render
32-
options.staticRenderFns = compiledTemplate.staticRenderFns
31+
if (render) {
32+
options.render = render
33+
options.staticRenderFns = staticRenderFns
3334
options._compiled = true
3435
}
3536

@@ -79,10 +80,10 @@ export default function normalizeComponent (
7980
// go through the normalizer
8081
options._injectStyles = hook
8182
// register for functioal component in vue file
82-
var render = options.render
83+
var originalRender = options.render
8384
options.render = function renderWithStyleInjection (h, context) {
8485
hook.call(context)
85-
return render(h, context)
86+
return originalRender(h, context)
8687
}
8788
} else {
8889
// inject component registration as beforeCreate hook

lib/template-compiler/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ module.exports = function (html) {
4545
compiled.errors.map(e => ` - ${e}`).join('\n') +
4646
'\n'
4747
)
48-
code = `export default { render:function () {}, staticRenderFns: [] }`
48+
code =
49+
`export var render = function () {}\n` +
50+
`export var staticRenderFns = []`
4951
} else {
5052
const bubleOptions = options.buble
5153
const stripWith = bubleOptions.transforms.stripWith !== false
@@ -75,7 +77,7 @@ module.exports = function (html) {
7577
if (!isProduction && stripWith) {
7678
code += `render._withStripped = true\n`
7779
}
78-
code += `export default { render: render, staticRenderFns: staticRenderFns }`
80+
code += `export { render, staticRenderFns }`
7981
}
8082
// hot-reload
8183
if (needsHotReload) {

0 commit comments

Comments
 (0)