理解Chunks
Chunks类型
entry chunks
:webpack运行时候和模块加载的入口文件normal chunks
:除了entry chunks外,使用过程中动态加载的内容,例如jsonpinitial chunks
:通过CommonsChunkPlugin
生成的相关文件
entry chunks
之前已经涉及不再深究,下面介绍的是normal chunks
(懒加载)的主要应用。
webpack的强大之处在于,能够拆分应用代码成更小的文件,实现动态加载。
通过lunr实例介绍懒加载
lunr
是一个前端实现全文检索的插件,以下为实现代码
webpack检测
require.ensure
,然后拆分被依赖的文件,这种方式同样适用于路由,在用户点击相应路由后,开始加载相应的内容。通过require.ensure
也可以是先滚动加载等。
webpack的动态加载
除了require.ensure
还有一个配置项需要知道require.context
,它允许require
进在编译时候不确定的内容。这种技术应用在生成静态,测试时候。
例如静态网站构建:(markdown内容在pages下)
// 通过加载器处理页面,此时markdown还没有,此时加载会在有md文件时候处理
const req = require.context(
'json!yaml-frontmatter!./pages',
true, // Load files recursively. Pass false to skip recursion.
/^\.\/.*\.md$/ // Match files ending with .md.
);
实际应用项目Antwar,静态网站生成器