6、ES6模块化和webpack打包
ES6模块化
安装
babel
包1
yarn add @babel/core @babel/cli @babel/preset-env @babel/node
安装
@babel/polyfill
依赖包1
yarn add @babel/polyfill
根目录创建文件
babel.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15const presets = [
[
"@babel/env",
{
targets: {
edge: "17",
firefox: "60",
chrome: "67",
safari: "11.1",
},
},
],
];
module.exports = { presets };运行命令
1
npx babel-node file
导入模块
1 | import $ from "jquery" |
按需导入与导出
1 | import { name } from 'file.js' |
大括号内的名称需要与导出文件导出的名称一致。
直接执行导入的文件
1 | import 'file.js' |
WebPack基本使用
安装webpack包
1
yarn add webpack webpack-cli -D
创建webpack的配置文件并配置文件
1
2
3
4module.exports = {
// 编译模式
mode: "development",
};在package新增脚本
1
2
3
4
5{
"scripts":{
"dev":"webpack"
}
}运行
1
yarn run dev
webpack打包的入口和出口
在4.x
版本中默认约定入口文件为src/index.js
,出口文件为/dist/main.js
1 | module.exports = { |
配置自动打包
安装插件
1
yarn add webpack-dev-server -D
修改
package.json
中的命令1
2
3"scripts":{
"dev":"webpack-dev-server"
},运行命令
1
yarn run dev
这个插件会启动一个服务器,打包生成文件放到了根目录,所以需要将引入的js路径修改为/bundle.js
此插件可能存兼容问题导致无法使用
配置预览页面
安装插件
1
yarn add html-webpack-plugin -D
配置插件
1
2
3
4
5
6
7
8
9const HtmlWebpackPlugin = require("html-webpack-plugin");
const htmlPlugin = new HtmlWebpackPlugin({
template: "./src/index.html",
filename: "index.html",
});
module.exports = {
plugins: [htmlPlugin],
};
此时打开http://localhost:8080/页面即可看到效果
自动打包相关配置
在运行webpack-dev-server
时可以添加参数:
--open
打包完成后自动打开浏览器页面
--host
配置IP地址
--port
配置端口号
所以在package.json中就可以修改为如下内容:
1 | "scripts": { |
加载器-loader
简单来说就是将一切浏览器不支持的语言,处理成浏览器可以支持的。
Loader 的工作方式 是从右向左执行,链式地按照顺序进行编译。 loader 链中的第一个返回值给下一个 loader,在最后一个 loader,返回所预期的结果。
loader 可以是同步或异步函数,也可使用 options 对象去接受配置参数。
处理css文件
安装插件
1
yarn add style-loader css-loader -D
编写规则
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.css/,
use: ["style-loader", "css-loader"],
},
],
},test
为正则匹配,用于匹配文件名
use
表示使用的loader
打包less文件
安装插件
1
yarn add less-loader less -D
配置插件
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.less/,
use: ["style-loader", "css-loader", "less-loader"],
},
],
},
打包scss文件
安装插件
1
yarn add sass-loader node-sass -D
配置插件
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.scss/,
use: ["style-loader", "css-loader", "scss-loader"],
},
],
},
自动添加兼容性前缀
安装插件
1
yarn add postcss-loader autoprefixer -D
创建
postcss.config.js
文件,并初始化1
2
3
4
5const autoprefixer = require("autoprefixer");
module.exports = {
plugins: [autoprefixer],
};在
webpack.config.js
中,修改css
的loader,新增一个postcss-loader
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.css/,
use: ["style-loader", "css-loader", "postcss-loader"],
},
],
},
打包图片和字体
安装插件
1
yarn add url-loader file-loader -D
配置插件
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,
use: "url-loader?limit=16940",
},
],
},?
表示参数,当图片小于16940
时会自动转换成base64。
babel转换
安装插件
安装转换器相关的包
1
yarn add babel-loader @babel/core @babel/runtime -D
安装插件相关的包
1
yarn add @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D
创建
babel.config.js
配置文件,并初始化1
2
3
4
5
6
7module.exports = {
presets: ["@babel/preset-env"],
plugins: [
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties",
],
};配置
webpack.config.js
1
2
3
4
5
6
7
8
9module: {
rules: [
{
test: /\.js$/,
use: "babel-loader",
exclude: /node_modules/, // 不需要处理这个目录下的文件
},
],
},
打包VUE单文件
安装插件
1
yarn add vue-loader vue-template-compiler -D
配置
webpack.config.js
文件1
2
3
4
5
6
7
8
9
10const VueLoaderPlugin = require("vue-loader/lib/plugin");
module: {
rules: [
{
test: /\.vue$/,
use: "vue-loader",
},
],
},
plugins: [new VueLoaderPlugin()]
VUE单文件组件
每一个vue单文件都是以后缀名为.vue
命名的。vue
单文件组件中包含三部分区域
template
组件的模板区域
script
业务逻辑区域
style
样式区域
1 | <template> |
在webpack项目中使用vue
安装插件
1
yarn add vue -S
在入口文件中导入包
1
import Vue from 'vue'
创建vue实例对象并通过
render
函数渲染App
根组件1
2
3
4
5
6import App from "./components/App.vue";
import Vue from "vue";
const vm = new Vue({
el: "#app",
render: (h) => h(App),
});
打包与发布
在
package.json
中新增一个指令1
2
3"scripts": {
"build": "webpack -p"
},运行
yarn run build
命令运行此命令后webpack就会读取配置文件,并按照配置文件进行打包
VUE脚手架
全局安装脚手架
1
npm install -g @vue/cli
查看版本
1
vue --version
利用脚手架创建项目
新版-基于交互式命令创建
1 | vue create my-project |
项目名称不能包含特殊字符以及中文
进入项目目录,运行对应的命令即可启动项目。
新版-基于图形化页面创建
1 | vue ui |
在面板上按照需求创建即可。
旧版-基于2.x的旧模板创建
1 | npm install -g @vue/cli-init |
找到提示进行安装即可。
脚手架的自定义配置
第一种方式
编辑package.json
文件,新增vue
的配置。
1 | "vue":{ |
第二种方式
创建有个vue.config.js
文件,并写入相关配置
1 | module.exports = { |
Element-UI
官方地址:https://element.eleme.cn/#/zh-CN
基本使用
安装依赖包
1
yarn add element-ui -S
导入相关资源
1
2
3
4
5// 手动配置Element-ui
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ElementUI);
如果编辑器设置了自动保存格式化,并且import
引入资源被格式化为双引号出现如下报错:
可以尝试将编辑器的自动格式化使用ESLint