Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vue-loader
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pi-plusplus
fork-from-github
vue-loader
Commits
ad3cebdd
Commit
ad3cebdd
authored
Mar 19, 2018
by
Evan You
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: improve hmr code generation
parent
f418bd95
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
16 deletions
+27
-16
hotReload.js
lib/hotReload.js
+23
-6
index.js
lib/index.js
+1
-1
index.js
lib/template-loader/index.js
+3
-9
No files found.
lib/hotReload.js
View file @
ad3cebdd
const
hotReloadAPIPath
=
require
.
resolve
(
'vue-hot-reload-api'
)
const
hotReloadAPIPath
=
require
.
resolve
(
'vue-hot-reload-api'
)
module
.
exports
=
function
genHotReloadCode
(
id
,
functional
)
{
exports
.
genHotReloadCode
=
(
id
,
functional
)
=>
{
// TODO handle CSSModules and style injection disposal
// TODO handle CSSModules and style injection disposal
return
wrap
(
`
if (!module.hot.data) {
api.createRecord('
${
id
}
', component.options)
} else {
api.
${
functional
?
`rerender`
:
`reload`
}
('
${
id
}
', component.options)
}
`
)
}
exports
.
genTemplateHotReloadCode
=
id
=>
{
return
wrap
(
`
if (module.hot.data) {
require('
${
hotReloadAPIPath
}
').rerender('
${
id
}
', {
render: render,
staticRenderFns: staticRenderFns
})
}
`
)
}
function
wrap
(
inner
)
{
return
`
return
`
/* hot reload */
/* hot reload */
if (module.hot) {
if (module.hot) {
...
@@ -9,11 +30,7 @@ if (module.hot) {
...
@@ -9,11 +30,7 @@ if (module.hot) {
api.install(require('vue'))
api.install(require('vue'))
if (api.compatible) {
if (api.compatible) {
module.hot.accept()
module.hot.accept()
if (!module.hot.data) {
${
inner
.
trim
()}
api.createRecord('
${
id
}
', component.options)
} else {
api.
${
functional
?
`rerender`
:
`reload`
}
('
${
id
}
', component.options)
}
}
}
}
}
`
.
trim
()
`
.
trim
()
...
...
lib/index.js
View file @
ad3cebdd
...
@@ -5,7 +5,7 @@ const qs = require('querystring')
...
@@ -5,7 +5,7 @@ const qs = require('querystring')
const
loaderUtils
=
require
(
'loader-utils'
)
const
loaderUtils
=
require
(
'loader-utils'
)
const
selectBlock
=
require
(
'./selector'
)
const
selectBlock
=
require
(
'./selector'
)
const
plugin
=
require
(
'./plugin'
)
const
plugin
=
require
(
'./plugin'
)
const
genHotReloadCode
=
require
(
'./hotReload'
)
const
{
genHotReloadCode
}
=
require
(
'./hotReload'
)
const
componentNormalizerPath
=
require
.
resolve
(
'./runtime/componentNormalizer'
)
const
componentNormalizerPath
=
require
.
resolve
(
'./runtime/componentNormalizer'
)
module
.
exports
=
function
(
source
)
{
module
.
exports
=
function
(
source
)
{
...
...
lib/template-loader/index.js
View file @
ad3cebdd
...
@@ -6,7 +6,7 @@ const compiler = require('vue-template-compiler')
...
@@ -6,7 +6,7 @@ const compiler = require('vue-template-compiler')
const
transpile
=
require
(
'vue-template-es2015-compiler'
)
const
transpile
=
require
(
'vue-template-es2015-compiler'
)
const
transformAssetUrl
=
require
(
'./modules/assetUrl'
)
const
transformAssetUrl
=
require
(
'./modules/assetUrl'
)
const
transformSrcset
=
require
(
'./modules/srcset'
)
const
transformSrcset
=
require
(
'./modules/srcset'
)
const
hotReloadAPIPath
=
require
.
resolve
(
'vue-hot-reload-api
'
)
const
{
genTemplateHotReloadCode
}
=
require
(
'../hotReload
'
)
// Loader that compiles raw template into JavaScript functions.
// Loader that compiles raw template into JavaScript functions.
// This is injected by the global pitcher (../pitch) for template
// This is injected by the global pitcher (../pitch) for template
...
@@ -141,16 +141,10 @@ function actuallyCompile (sourceTemplate, options, loaderContext, query) {
...
@@ -141,16 +141,10 @@ function actuallyCompile (sourceTemplate, options, loaderContext, query) {
}
}
code
+=
`export { render, staticRenderFns }`
code
+=
`export { render, staticRenderFns }`
}
}
// hot-reload
// hot-reload
if
(
needsHotReload
)
{
if
(
needsHotReload
)
{
code
+=
code
+=
genTemplateHotReloadCode
(
id
)
'
\
nif (module.hot) {
\
n'
+
' module.hot.accept()
\
n'
+
' if (module.hot.data) {
\
n'
+
' require("'
+
hotReloadAPIPath
+
'")'
+
' .rerender("'
+
options
.
id
+
'", { render: render, staticRenderFns: staticRenderFns })
\
n'
+
' }
\
n'
+
'}'
}
}
return
code
return
code
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment