中文 --
English
{{$t("message.Home")}}---{{$t("message.About")}}
8.mock
8.1.安装指令
a.安装mockjs:npm install mockjs --save-dev
b.安装vite-plugin-mock:npm i vite-plugin-mock cross-env -D
8.2.在 package.json 中设置环境变量
将"dev": "vite"改为“"dev": "cross-env NODE_ENV=development vite"”
8.3.在 vite.config.js 中添加 mockjs 插件
import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
import { viteMockServe } from "vite-plugin-mock"
export default defineConfig({
plugins: [
vue(),
viteMockServe({
supportTs: false //如果使用typescript开发,则需要配置supportTs为true
})
]
})
8.4.在根目录创建 mock 文件夹,建立getData.js在其中创建需要的数据接口
export default [
{
url: "/api/getUsers",
method: "get",
response: () => {
return {
code: 0,
message: "ok",
data: ["张三", "李四"],
}
}
}
]
9.sass
9.1.安装指令:npm i sass -D
9.2.使用sass,语法:
10.gzip
10.1.安装指令:npm i vite-plugin-compression -D
10.2.修改vite.config.js文件,引入插件
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression'
import path from 'path'
export default defineConfig({
plugins: [
vue(),
viteCompression({
threshold: 10240, //体积大于10kb压缩
filter: /\.(js|mjs|json|css|html)$/i,
algorithm: 'gzip', //压缩算法,gzip|brotliCompress|deflate|deflateRaw
disable: false,
deleteOriginFile: false //是否删除源文件
})
],
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
})
11.copy
11.1.安装指令:npm install rollup-plugin-copy -D
11.2.修改vite.config.js文件,引入插件
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import copy from 'rollup-plugin-copy'
import path from 'path'
export default defineConfig({
plugins: [
vue(),
copy({
targets: [
{ src: 'src/static', dest: 'dist' }, //执行拷贝
],
hook: 'writeBundle' // notice here
})
],
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
})
12.eslint+prettier
12.1.eslint
12.1.1.安装指令:npm i eslint -D
12.1.2.配置eslint:执行npx eslint --init命令,然后按照提示完成一系列操作来创建配置文件
12.1.3.修改.eslintrc.cjs文件,编写配置信息
12.1.4.在VSCode使用ESlint,需要安装插件:ESLint
12.1.5.使用eslint格式化代码
a.在package.json的scripts属性里配置 格式化 命令
"scripts": {
"lint": "eslint --fix --ext .js,.vue src"
}
b.终端执行命令
npm run lint
12.2.prettier
12.2.1.安装指令:npm i prettier -D
12.2.2.配置prettier
{
"useTabs": false, //使用tab缩进,默认false
"tabWidth": 2, //tab缩进大小,默认为2空格数
"printWidth": 100, //换行长度,默认80
"singleQuote": true, //使用单引号代替双引号
"trailingComma": "none", //是否在多行逗号分隔语法中,在最后一个元素后面加逗号
"bracketSpacing": true, //在对象,数组括号与文字之间加空格 "{ foo: bar }"
"semi": false, //每行末尾自动添加分号
"endOfLine": "auto" //换行符类型
}
12.2.3.VSCode编辑器,安装Prettier插件:Prettier - Code formatter
12.2.4.使用其命令格式化代码文件
#格式化所有文件(. 表示所有文件)
npx prettier --write .
12.3.兼容问题
12.3.1.解决eslint和prettier冲突
a.安装插件:npm i eslint-plugin-prettier eslint-config-prettier -D
b.修改.eslintrc.js配置文件,添加prettier插件
module.exports = {
extends: [
'plugin:vue/essential',
'airbnb-base',
'plugin:prettier/recommended' // 添加 prettier 插件
],
}
13.postcss
13.1.安装指令:npm install postcss postcss-preset-env -D
13.2.配置vite.config.js文件
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postcssPresetEnv from 'postcss-preset-env'
export default defineConfig({
base: './',
publicDir: 'public', // 静态资源服务的文件夹
logLevel: 'info', // 控制台输出的级别 info 、warn、error、silent
clearScreen: true, // 设为false 可以避免 vite 清屏而错过在终端中打印某些关键信息
css: {
postcss: {
plugins: [postcssPresetEnv]
}
}
})
14.svgIcon
14.1.创建目录和文件结构
目录:./src/styles
目录:./src/styles/svg
目录:./src/styles/svg/svgs
文件:./src/styles/svg/index.vue
文件:./src/styles/svg/svgBuilder.js
14.2.安装svg插件
指令:npm install svg-sprite-loader -D
14.3.编写./src/styles/svg/index.vue文件
14.4.编写./src/styles/svg/svgBuilder.js文件,需要安装fs模块:npm install fs
14.5.编辑main.js文件,引入./src/styles/svg/index.vue文件
import * as Vue from 'vue'
import SvgIcon from './icons/index.vue'
import App from './App.vue'
const app = Vue.createApp(App)
app.component('svg-icon', SvgIcon)
app.mount('#app')
14.6.配置vite.config.js文件,使svgBuilder.js文件功能启用
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { svgBuilder } from './src/styles/svg/svgBuilder'
export default defineConfig({
base: './',
plugins: [
vue(),
svgBuilder('./src/styles/svg/svgs/') // 这里已经将src/styles/svg/svgs/下的svg全部导入
]
})
14.7.使用效果