构建工具
- 当我们习惯了在node中编写代码的方式后,在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:不能放心的使用模块化规范(浏览器兼容性问题)、即使可以使用模块化规范也会面临模块过多时的加载问题。
- 我们就迫切的希望有一款工具可以对代码进行打包,将多个模块打包成一个文件。这样一来即解决了兼容性问题,又解决了模块过多的问题。
- 构建工具就起到这样一个作用,通过构建工具可以将使用ESM规范编写的代码转换为旧的JS语法,这样可以使得所有的浏览器都可以支持代码。
Webpack
官网:webpack
使用步骤:
- 初始化项目
npm init -y
- 安装依赖
webpack
、webpack-cli
- 在项目中创建
src
目录,然后编写代码(index.js) - 执行
npx webpack
来对代码进行打包(打包后观察dist目录)什么是npx
- 初始化项目
配置文件(webpack.config.js)
const path = require("path")
module.exports = {
mode: "production",
entry: "./src/index.js",//指定打包时的主文件
output: {
}, //配置代码打包后的地址
module: {
rules: [
{
test: /\.css$/i,
use: ["style-loader", "css-loader"]
}
]
}//webpack默认情况下,只会处理js文件,如果我们希望它可以处理其他类型的文件,则要为其引入loader
}在编写js代码时,经常需要使用一些js中的新特性,而新特性在旧的浏览器中兼容性并不好。此时就导致我们无法使用一些新的特性。
但是我们现在希望能够使用新的特性,我们可以采用折中的方案。依然使用新特性编写代码,但是代码编写完成时我们可以通过一些工具将新代码转换为旧代码。
babel就是这样一个工具,可以将新的js语法转换为旧的js,以提高代码的兼容性。
我们如果希望在webpack支持babel,则需要向webpack中引入babel的loader
使用步骤
安装
npm install -D babel-loader @babel/core @babel/preset-env
配置:
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}在package.json中设置兼容列表
"browserslist": [
"defaults"
]
插件(plugin)
插件用来为webpack来扩展功能
对比loader,loader主要用来完成对源代码的编译工作,而插件主要用来帮助开发的一些辅助操作,不会对代码进行修改
html-webpack-plugin
这个插件可以在打包代码后,自动在打包目录生成html页面
使用步骤:
- 安装依赖
npm install -D html-webpack-plugin
- 配置插件
plugins: [
new HTMLPlugin({
// title: "Hello Webpack",
template: "./src/index.html"//配置html模板
})
]- 安装依赖
开发服务器(webpack-dev-server)
- 作用:浏览器的代码会自动打包发送给临时服务器实时运行,打包后的数据不在本地的dist目录,要想在本地看到dist目录还是得手动打包
- 安装:
npm install -D webpack-dev-server
- 启动:
npx webpack serve --open
devtool:"inline-source-map"
在webpack配置文件配置源码的映射,便于在浏览器开发者工具对代码进行调试- 需要设置mode为开发者模式
Vite
官网:vite
Vite也是前端的构建工具
相较于webpack,vite采用了不同的运行方式:
- 开发时,并不对代码打包,而是直接采用ESM的方式来运行项目
- 在项目部署时,在对项目进行打包
除了速度外,vite使用起来也更加方便
基本使用:
安装开发依赖
npm install -D vite
vite的源码目录就是项目根目录
vite默认找的是index.html,所以我们把源码放进其他目录里无须修改配置文件
开发命令:
npx vite
启动开发服务器npx vite --open
启动开发者服务器并打开网站npx vite build
打包代码npx vite preview
预览打包后代码
使用命令构建
npm create vite@latest
yarn create vite
pnpm create vite配置文件:
vite.config.js
示例:配置legacy插件来转换代码兼容老版本的浏览器:
安装插件
npm add -D @vitejs/plugin-legacy
修改配置文件
import { defineConfig } from "vite"
import legacy from "@vitejs/plugin-legacy"
export default defineConfig({
plugins: [
legacy({
targets: ["defaults"]
})
]
})