-
前端发展史
-
早期阶段
早期前端只负责写静态页面,纯粹的展示功能,js也就是简单的做一些表单的验证,特效渲染等 -
现阶段的Web
前端可以管理数据以及和用户互动。由于用户交互、数据交互的需求增多,也就出现了jQuery这样的前端工具,再到目前的三大框架Vue、React、Angular,开发方式也冲原来的js的ES5语法到ES6、7、8、9、10,到Type Script,包括编写CSS的预处理器less、scss等
-
-
webpack到底是干什么的
冲上文的发展史知道现阶段的Web开发涌现了许多新的开发方式,比如:ES5语法到ES6、7、8、9、10,到Type Script,包括编写CSS的预处理器less、scss等,但是浏览器并不能识别less、sass、scss等语言,为了兼容浏览器能识别开发者写出的代码就需要将浏览器不能识别的代码转换成浏览器能否识别的代码,webpack作用就在此,所以webpack就是一个打包工具,它会分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。这里附上一个webpack官网的图片,从这张图片可以形象的说明webpack的作用 -
webpack官方文档
- 官方文档:webpack.js.org/
- 中文文档:webpack.docschina.org/
- 文档目录说明:
- API:,提供相关的接口,可以自定义编译的过程(比如自定义
loader和Plugin可以参考该位置的API) - CONCEPTS:概念,主要是介绍一些
webpack的核心概念,比如入口、出口、Loaders、Plugins等等,但是这里并没有一些对它们解析的详细API; - CONFIGURATION:配置,
webpack详细的配置选项,都可以在这里查询到,更多的时候是作为查询手册; - LOADERS:
loaders,webpack的核心之一,常见的loader都可以在这里查询到用法,比如css-loader、babel-loader、less- loader等等; - PLUGINS:
plugins,webpack的核心之一,常见的plugin都可以在这里查询到用法,比如BannerPlugin、 CleanWebpackPlugin、MiniCssExtractPlugin等等;
- API:,提供相关的接口,可以自定义编译的过程(比如自定义
-
webpack的依赖
Webpack的运行是依赖Node环境的,所以我们电脑上必须有Node环境 -
webpack的安装
webpack的安装需要安装两个东西,一个是webpack、还一个是webpack-cli两者之间的关系是:- 执行
webpack命令,会执行node_modules下的.bin目录下的webpack - 但是如果没有安装
webpack-cli执行webpack命令会报错 webpack-cli中代码执行时,才是真正利用webpack进行编译和打包的过程; (使用第三方脚手架生成的项目是没有安装webpack-cli的,他是利用类似自己的vue-service-cli的东西)webpack命令打包流程如下:
- 执行
-
webpack的默认打包
默认情况下webpack打包是将src文件夹下的index.js文件作为入口的,所以当前目录没有src文件夹或者src文件夹下面没有一个index.js文件的话会直接报错。然后从入口开始,会生成一个依赖关系图,这个依赖关系图会包含应用程序中所需的所有模块(比如.js文件、css文件、图片、 字体等),然后遍历图结构,打包一个个模块(根据文件的不同使用不同的loader来解析); 打包成功后会默认在跟目下下生成一个dist文件夹生成一个main.js文件,此时将main.js文件引入到index.html后那些通过浏览器不能识别的语法书写的代码就能正常执行了比如写一个简单的减价法运算通过commonJS的方案引入到index.js示例代码如下运行结果:
-
没有打包之前(直接引入index.js)
会报错,应为浏览器不识别
commonjs中的require函数 -
打包之后(引入打包之后的js)
发现能正常运行。
此时可以看一下打包后生成的main.js文件发现文件中的代码被压缩丑化了,但是去除了
commonjs语法将所有的关联文件中的代码都堆在一个文件中,但是还是存在一些const关键字、箭头函数等(这些都是es6语法,现在比较新的浏览器支持这种语法,但是一些老大的浏览器还是不支持),这里可以通过配置webpack使用babel来进行转换和设置。
- 如果直接在终端使用
webpack命令,此时使用的是全局的webpack,如果没有安装全局的webpack即使本地安装了局部的webpack也会报错找不到命令 - 如果安装了局部的
webpack想使用本地的webpack打包此时应该使用的是node_module文件夹下的.bin文件夹下的webpack进行打包,所以可以使用使用./node_modules/.bin/webpack来调用本地的webpack - 除了上述方案使用本地
webpack之外还可以使用npx webpack命令来使用npx会直接执行node_modules下的某一个命令 - 可以在
package.json添加一个脚本命令如下图此时就可以直接使用
yarn build,该命令会找到package.json里面的scripts里面所创建的build,然后就会执行里面的命令,而package.json中的命令会优先去找node_modules里面的命令,如果node_modules没有对应的命令则会去找全局的
-
-
webpack的配置文件
在通常情况下,webpack需要打包的项目是非常复杂的,并且我们需要一系列的配置来满足要求,默认配置必然 是不可以的。我们可以在根目录下创建一个webpack.config.js文件,来作为webpack的配置文件:默认webpack回到根目录下的webpack.config.js文件中读取配置,如果想更改文件名称可以通过--config来修改默认的配置文件名称如下图: