webpack

183 阅读3分钟

Webpack

1.为什么要使用webpack?

随着前端越来越复杂,单独建几个文件来写业务代码,这样的方式已经无法保证项目的可维护性,所以我们就想把不同的业务逻辑拆成模块,然后去分开引入这些模块,每个模块自己做自己的,这样就保证项目的维护性和可扩展性,但假如你有几千个模块,那你能引入几千个js文件么?当项目大到这个程度上,我们就得借助工具来管理模块,webpack就是这样的工具,帮助我们管理复杂项目的一种工具。

  • 与webpack类似的还有很多工具

Gulp Grunt browserify等等

但这两年,webpack工具的使用率直线上升,比如说:

Vue React Angular

这三大框架的脚手架工具都开始使用webpack来做底层代码的构建,这益于webpack可以提供其他工具无法实现的一个特性,比如说:Tree Shaking 懒加载 代码分割

webpack来做代码的管理工具,已经是越来越多做前端的共识了

2.webpack4有什么优点
  1. 相比之前,速度更快,大型项目节约90%构建时间
  2. 内置了更多默认配置,变更了许多API
3.webpack究竟是什么?

有人认为webpack就是js的翻译器,这个认识是错误的,它称不上翻译器,webpack只认识import这样的语句,其它js高级语法一概不认识,所以把它叫做js翻译器是错误的

webpack实际上是一个模块打包工具

核心定义:模块打包工具

webpack它能够把你引入的模块打包到一起生成一个js文件

webpack不仅可以识别ES Module模块,还有node用的CommonJS模块引入,CMD、ADM都可以识别

webpack最早是js模块打包工具,现在可以打包任何形式模块,还可以打包css文件 jpg文件

4.搭建webpack环境

1.搭建webpack环境

webpack是基于node.js开发的模快工具,所以他本质上是由node实现的

  1. 安装node.js
  2. 检查是否安装node node-v
  3. 检查npm npm-v
  4. 创建一个文件夹 webpack-demo
  5. 进入文件夹
  6. 输入npm init 一路配置生成一个package.json

2.安装webpack

两种方式:全局 项目安装两种方式

全局:npm install webpack webpack-cli -g

卸载:npm uninstall webpack webpack-cli -g

项目安装:打开创建的项目 webpack-demo项目

安装webpack:npm install webpack webpack-cli --save-dev

然后用npx webpack -v 搜索webpack

npx会帮助我们在当前项目的node_modules文件夹里去找webpack

npx可以在目录下运行存在于目录里的webpack

**项目安装的好处:**就是在不同的项目中,我们可以使用不同的webpack版本

1.看webpack的版本是否存在

npm info webpack

2.安装指定版本

npm install webpack@4.16.5 webpack-cli -D

3.查看版本

npx webpack -V

5.webpack的配置文件

当你引入一个图片,一个js的时候,打包的流程是不一样的

假如你引入一个js文件,那直接拿过js引入就可以了,但是加入你引入的是一个图片,只需要拿到图片地址就行,不用把图片整个文件打包到js里去

  1. 创建一个weboack.config.js文件

  2. 配置

    image-20200603210137969

  3. 然后npx webpack打包它

​ 如果想换名称可以这样

​ npx webpack --config webpackconfig.js

还有一种打开pack.json文件,找到scripts里配置:"bundle":webpack,当你运行bundle命令时,会自动帮你运行webpack命令

6.webpack打包知识点:

image-20200603210658953

  1. Hash:代表本次打包对应的唯一一个hash值
  2. Version:打包使用的版本
  3. Time:当前这个包整体打包时耗时的77毫秒
  4. Built: Asset bundle.js 表示打包出一个bundle.js文件
  5. ​ Size 1.36kib 文件大小
  6. ​ Chunks 0 每一个js文件对应的id
  7. ​ Chunks Names 每一个js文件对应的名字
  8. ​ main 放的webpack.config.js文件里entry的main
  9. image-20200603211225635