同步操作将从 璃安猫/fed-e-task-02-02 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
1、Webpack 的构建流程主要有哪些环节?如果可以请尽可能详尽的描述 Webpack 打包的整个过程。
答: Webpack的构建流程主要有:相关插件工作、解析文件依赖并形成依赖树 、 加载器加载、编译转换相关文件 、 将加载器放入打包结果
Webpack打包过程如下:
2、Loader 和 Plugin 有哪些不同?请描述一下开发 Loader 和 Plugin 的思路。
答:两者的不同:Loader仅在加载环节工作,而Plugin通过钩子机制实现的,几乎在webpack每个环节都可以进行工作;Loader输出的结果必须是JS代码 ,Plugin本质上是一个函数或包含apply方法的对象,对返回结果没有要求。
开发Loader: 首先模块导出的内容是一个执行函数,该执行函数内部是对资源的处理过程。该执行函数的形参为输入内容,返回结果为加载内容/处理结果。值得注意的是,该返回结果会被直接插入到webpack工作文件中,因此返回结果必须是JS内容。
module.exports = source => {
// source为文件内容
// 处理过程
// result必须是JS代码格式
return result
}
开发Plugin: 首先定义一个类,在类当中定义一个apply方法,apply方法的参数为此次构建的所有配置信息,构建类的实例后apply方法在webpack启动时会自动调用。接着在这个apply方法中注册webpack相应节点的钩子函数, 在钩子函数中编写相关操作代码。
class Name {
// compiler对象参数 webpack工作时最核心的对象 包含此次构建的所有配置信息 也是通过该对象去注册钩子函数
apply (compiler) {
// 注册webpack相应节点的钩子函数 具体钩子名称及时间参考官网
// 若生成资源到 output 目录之前执行 则使用emit钩子 使用如下
// 第一个参数为插件名称 第二个为挂载函数
compiler.hooks.emit.tap('pluginName', compilation => {
// compilation => 可以理解为此次打包的上下文
// 相关操作代码
})
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。