Webpack 知识体系 | 青训营笔记

129 阅读1分钟

Webpack 知识体系 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,学习了掘金视频课《前端入门——工具篇》第七节课程 “Webpack 定义解析” ,第八节课程 “Webpack 使用方法” ,第九节课程 “理解 Loader” ,第十节课程 “理解插件” ,以下为本次的学习笔记:

Webpack 定义解析

为什么要学习 Webpack

  • 理解前端“工程化”概念、工具、目标
  • 提高个人核心竞争力
  • 成为高阶前端工程师的必经之路

Webpack 使用方法

Webpack打包核心流程

入口处理:从'entry' 文件开始,启动编译流程;

依赖解析:从'entry'文件开始,根据'require' or import' 等语句找到依赖资源;

资源解析:根据module' 配置,调用资源转移器,将png、css等非标准JS资源转译为JS内容;

资源合并打包:将转译后的资源内容0合并,打包为可直接在浏览器运行的JS文件; 递归调用2、3,直到所有资源处理完毕

  • 示例

安装(注意用管理员权限打开命令行)

npm i -D webpack webpack-cli
1

编辑配置文件webpack.config.js

module.exports = {
    entry: 'main.js',   // 定义当前项目的入口文件
    output: {   // 定义当前项目的输出文件
        filename: "[name].js",
        path: path.join(__dirname, "./dist"),
    },
    module: {// 定义一些loader相关的内容,可在下文看到
        rules: [{
            test: /.less$/i,
            use: ['style-loader', 'css-loader', 'less-loader']
        }]
    }
}

执行编译命令

npx webpack

模块化——一致性

  • 多个文件资源合并成一个,减少http 请求数
  • 支持模块化开发欧6
  • 支持高级JS特性
  • 支持Typescript、CoffeeScript方言
  • 统一图片、CSS、字体等其它资源的处理模型
  • Etc

使用Webpack接入Babel

  1. 安装依赖
  2. 声明入口 entry& 产物出口output
  3. 添加module处理css文件

使用Webpack生成html

  1. 安装依赖
  2. 配置
  3. 执行npx webpack

使用Webpack——HMR

Hot Module Replacement——模块热替换(写的代码会被立刻更新到浏览器上~)

  1. 开启HMR
  2. 启动webpack

使用Webpack——Tree-Shaking

Tree-Shaking -树摇,用于删除Dead Code

Dead Code

  • 代码没有被用到,不可到达
  • 代码的执行结果不会被用到
  • 代码只读不写

Tree-Shaking

  • 模块导出了,但未被其他模块使用

理解Loader

Loader核心功能:将非JS资源转换为JS资源

  1. 安装Loader
  2. 添加module处理less文件

认识Loader:链式调用 less-loader: 实现less => css的转换 css-loader: 实现css => js的转换,将CSS包装成类似module.exports = “${css}” 的内容,包装后的内容符合JavaScript 语法 style-loader:将css模块包进require语句,并在运行时调用injectStyle等函数将内容注入到页面的style标签

理解插件Plugin

插件架构精髓:对扩展开放,对修改封闭,其实就是开闭原则