Part2.模块二:模块化开发与规范化标准

简答题

1.Webpack 的构建流程主要有哪些环节?如果可以请尽可能详尽的描述 Webpack 打包的整个过程。

解:
初始化参数:
      根据用户在命令窗口输入的参数以及webpack.js文件的配置,得到最后的配置。
开始编译:
      根据上一步得到的最终配置初始化得到一个compiler对象,注册所有的插件plugins,插入开始监听webpack构建过程的生命周期的环节(事件),不同的环节会有相应的处理,然后开始执行编译。
确定入口:
      根据webpack.config.js文件的entry入口,开始解析文件构建AST语法书,找出依赖,递归下去。
编译模块:
      地柜过程中,根据文件类型和loader配置,调用相应的loader对不同的文件做不同的转换处理,再找出改模块依赖的模块,然后递归本步骤,知道项目中依赖的所有模块都经过本步骤的编译处理。
      编译过程中,有一系列的插件在不同的环节做相应的事情,比如UglifyPlugin会在loader转换地柜对结果使用UglifyJs压缩覆盖之前的结果;再比如clean-webpack-plugin,会在结果输出之前清除dist目录等等。
完成编译并输出:
      递归结束后,得到每个文件结果,包含转换后的模块以及他们之间的依赖关系,根据entry以及output等配置生成代码块chunk。
打包完成:
      根据output输出所有的chunk想用的文件目录。

2.Loader 和 Plugin 有哪些不同?请描述一下开发 Loader 和 Plugin 的思路。

解:
两者的不同点:
      Loader,直译为“加载器”,主要用来解析和检测对应资源,负责源文件从输入到输出的转换,它专注于实现资源模块加载。
      Plugin,直译为“插件”,主要通过webpack内部的钩子机制,在webpack构建的不同阶段执行一些额外的工作,它的插件是一个函数或者一个包含apply方法的对象,接受有个compile对象,通过webpack的钩子来处理资源。
Loader开发思路:
      1.通过module.exports到处一个函数
      2.该函数默认一个参数source(即要处理的资源文件)
      3.在函数体中处理资源(loader里配置响应的loader后)
      4.通过return返回最终打包后的结果(这里的返回结果需要字符串形式)
Plugin开发思路:
      1.通过钩子机制实现
      2.插件必须是一个函数或是包含apply方法的对象
      3.在方法体内通过webpack提供的API获取资源做响应处理
      4.将处理玩的资源通过webpack提供的方法返回资源

编程题

使用 Webpack 实现 Vue 项目打包任务

解:
      作业快速跳转:使用 Webpack 实现 Vue 项目打包任务作业

你可能感兴趣的:(Part2.模块二:模块化开发与规范化标准)