-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Webpack代码分割 #7
Comments
|
单页面应用打包
entry
入口分割以上的配置会让webpack从两个入口打包,最终会生成两个文件,
index.js
里会包含index.js
的代码以及所有依赖模块的代码,chunk.js
里会包含Array.js
、String.js
的代码以及它们依赖的代码,同时以上两个模块里还会包含webpack的运行时代码。这样的配置没有什么卵用,因为如果
index.js
和Array.js
都引用了一个A.js
的模块,那么这个模块会分别被打进两个模块里,并不会达到提取公共模块的目的,此时需要CommonChunkPlugin插件了。这种配置下打出来的
chunk.js
和第一种配置时一样,但是会把index.js
和chunk.js
里的共用代码都从index.js
里抽离出来,webpack运行时代码也会抽离出来,index.js
的体积会减小很多。这样做的目的是给
chunk.js
设置一个较长时间的缓存提升性能,因为chunk.js
按照设想都是第三方库,每次打包hash
都不会发生变化。但是现实是,改动了index.js
里的内容,chun k.js
也会发生改变。原因是webpack的运行时代码包含么个模块的引用id,模块发生变化会导致运行时代码变化,而我们的运行时代码是包含在chunk.js
里的。增加一个插件,
chunks
参数指定从chunk.js
模块里提取代码,然后生成一个manifest.js
模块,原本在chunk.js
里的运行时代码会被提取出来,这样每次改动业务代码(index.js
)的时候,只有index.js
和manifest.js
代码hash会发生变动,达到了优化的目的。我测试了用这种配置也可以达到目的,我猜测大概的是因为
CommonChunkPlugin
会把webpack的运行时代码打包到最后一个模块里,区别就是:配置1在生成manifest.js
模块时只会去提取chunk.js
模块,配置2下,插件会运行两遍,只不过第二遍没有公共代码可以提取里,所以manifest.js
里只包含运行时代码。chunks
缺省时插件会提取所有的entry chunk
,所以生成manifest.js
时指定模块效率更佳。The text was updated successfully, but these errors were encountered: