前端开发:
什么是前端工程化
在企业的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规划化、标准化。
好处:前端开发自成体系,有一套标准的开发方案和流程。
前端工程化的解决方案
目前主流的前端工程化解决方案:
1、什么是webpack
概念:webpack是前端项目工程化的具体解决方案。
主要功能:他提供了友好的前端模块化的支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性,性能优化等强大功能。
** 2、【案例】创建列表隔行变色项目**
npm install [email protected] [email protected] -D
-S 是 --save的简写 (在开发和上线都用到的包 可以加S也可以不加)
-D 是 --save-dev的简写 (只在开发阶段用到的包)
4、在项目中配置webpack
module.exports={
mode: 'development' //mode 用来指导构建模式 可选值有development,production
}
"scripts":{
"dev": "webpack"//scripts节点下的脚本可以通过npm run执行 如npm run dev
}
//entry 指定要处理哪个文件
entry: path.join(__dirname, './src/index1.js'),
//output 指定生成的文件要存放到哪里
output: {
//存放到目录
path: path.join(__dirname, 'dist'),
//生成的文件名
filename: 'bundle.js'
}
通过安装和配置第三方的插件,可以扩展webpack的能力,从而让webpack用起来更方便。最常用的插件有如下两个:
运行如下命令:
npm install [email protected] -D
"scripts": {
"dev": "webpack serve"
}
npm run dev
命令,重新打包项目注意:webpack-dev-srever
会启动一个实时打包的http服务器。
webpack-dev-server 打包的结果会存放在内存
中。
npm install [email protected] -D
在webpack.config.js文件中进行如下的配置:
//1.导入HTML插件,得到一个构造函数
const HtmlPlugin = require('html-webpack-plugin')
//2.创建HTML插件的实例对象
const htmlPlugin =new HtmlPlugin({
template: './src/index.html',//指定源文件的存放路径
filename: './index.html',//指定生成文件的存放路径
})
module.exports={
mode: 'development', //mode 用来指导构建模式 可选值有development,production
plugins: [htmlPlugin],//3.通过plugins节点 使htmlPlugin插件生效
}
在webpacke.config.js配置文件中,可以通过devServer
节点对webpack-dev-server插件进行更多的配置,示例如下:
注意:凡是修改了webpacke.config.js配置文件,或修改了package.json配置文件,必须重启实时打包的服务器,否则最新的配置文件无法生效。
在实际开发中过程中,webpack默认只能打包处理以.js
后缀名结尾的模块,其他非.js
后缀名结尾的模块,webpack默认处理不了,需要调用loader
加载器才能正常打包,否则会报错。
协助webpack打包处理特定的文件模块。
比如:
css文件在webpack中导入方式
在index.js中使用如下方式导入:
css打包处理步骤:
npm install [email protected] [email protected] -D
命令,安装处理css文件的loadermodule: { //所有第三方文件模块的匹配规则
rules: [
//定义了不同模块对应的loader
{
test: /\.css$/,
use: ['style-loader','css-loader']
}
]
}
less文件在webpack中导入方式
在index.js中使用如下方式导入:
less打包处理步骤:
npm install [email protected] [email protected] -D
命令,安装处理less文件的loadermodule: { //所有第三方文件模块的匹配规则
rules: [
//定义了不同模块对应的loader
{
test: /\.less$/,
use: ['style-loader','css-loader','less-loader']
}
]
}
图片文件在webpack中导入方式
在index.js中使用如下方式导入:
图片打包处理步骤:
npm install [email protected] [email protected] -D
命令module: { //所有第三方文件模块的匹配规则
rules: [
//定义了不同模块对应的loader
{
test: /\.jpg|png|gif$/,
use: 'url-loader?limit=22229'
}
]
}
webpack 只能打包处理一部分高级的 JavaScript 语法。对于那些 webpack 无法处理的高级 js 语法,需要借助于 babel-loader 进行打包处理。例如 webpack 无法处理下面的 JavaScript 代码:
运行如下的命令安装对应的依赖包:
npm i [email protected] @babel/[email protected] @babel/[email protected] -D
在 webpack.config.js 的 module -> rules 数组中,添加 loader 规则如下: