Vite项目框架搭建
1、搭建后台管理系统模板
环境准备
- node v16.20.1
- pnpm 8.10.2
初始化项目
本项目使用vite进行构建,vite官方中文文档参考:cn.vitejs.dev/guide/
pnpm:performant npm,意味"高性能的npm"。pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为"最先进的包管理工具"
pnpm安装指令
1 | npm i -g pnpm |
项目初始化命令:
1 | pnpm create vite |
运行完毕项目跑在http://127.0.0.1:5173
项目配置
eslint配置
eslint中文官网:http://eslint.cn/
ESLint最初是由Nicholas C. Zakas于2013年6月创建的开源项目。它的目标是提供一个插件化的javascript代码检测工具
首先安装eslint
1 | pnpm i eslint@8.57.0 -D |
生成配置文件.eslint.cjs
1 | npx eslint --init |
.eslint.cjs配置如下
1 | module.exports = { |
vue3环境代码校验插件
安装指令
1 | pnpm install -D eslint-plugin-import@2.29.1 eslint-plugin-vue@9.22.0 eslint-plugin-node@11.1.0 eslint-plugin-prettier@5.1.3 eslint-config-prettier@9.1.0 eslint-plugin-node@11.1.0 @babel/eslint-parser@7.23.10 |
修改.eslintrc.cjs配置文件
1 | // @see https://eslint.bootcss.com/docs/rules/ |
.eslintignore文件
1 | dist |
运行脚本
package.json新增两个运行脚本
1 | "scripts": { |
prettier配置
有了eslint,为什么还要有prettier?eslint针对的是javascript,他是一个检测工具,包含js语法以及少部分格式问题,在eslint看来,语法对了就能保证代码正常运行,格式问题属于其次;
而prettier属于格式化工具,它看不惯格式不统一,所以它就把eslint没干好的事接着干,另外,prettier支持包含js在内的多种语言。
总结起来,eslint和prettier这俩兄弟一个保证js代码质量,一个保证代码美观。
新增.prettierrc.cjs
1 | module.exports = { |
新增.prettierignore忽略文件
1 | /dist/* |
npm run lint去检测语法,如果出现不规范格式
npm run fix修改
stylelint配置
stylelint为css的lint工具。可格式化css代码,检查css语法错误与不合理的写法,指定css书写顺序等。
我们的项目中使用scss作为预处理器,安装以下依赖:
1 | pnpm add sass@1.71.1 sass-loader stylelint postcss postcss-scss postcss-html stylelint-config-prettier stylelint-config-recess-order stylelint-config-recommended-scss stylelint-config-standard stylelint-config-standard-vue stylelint-scss stylelint-order stylelint-config-standard-scss -D |
新增.stylelintrc.cjs配置文件
官网:https://stylelint.bootcss.com/
1 | // @see https://stylelint.bootcss.com/ |
新增.stylelintignore忽略文件
1 | /node_modules/* |
运行脚本
1 | "scripts": { |
最后配置统一的prettier来格式化我们的js和css,html代码
1 | "scripts": { |
当我们运行pnpm run format的时候,会把代码直接格式化
tsconfig.node.json内容修改
1 | { |
tsconfig.json改
1 | { |
husky配置
在上面我们已经集成好了我们代码校验工具,但是需要每次手动的去执行命令才会格式化我们的代码。如果有人没有格式化就提交了远程仓库中,那这个规范就没什么用。所以我们需要强制让开发人员按照代码规范来提交。
要做到这件事情,就需要利用husky在代码提交之前触发git hook(git在客户端的钩子),然后执行pnpm run format来自动的格式化我们的代码。
安装husky
1 | pnpm install -D husky@8.0.0 |
先去.gitignore文件
1 | # Logs |
去新建github仓库并同步代码,上传完毕后执行
1 | npx husky-init |
会在根目录下生成个一个.husky目录,在这个目录下面会有一个pre-commit文件,这个文件里面的命令在我们执行commit的时候就会执行
在.husky/pre-commit文件添加如下命令:
1 | !/usr/bin/env sh |
当我们对代码进行commit操作的时候,就会执行命令,对代码进行格式化,然后再提交。
commitlint配置
对于我们的commit信息,也是有统一规范的,不能随便写,要让每个人都按照统一的标准来执行,我们可以利用commitlint来实现。
安装包
1 | pnpm add @commitlint/config-conventional @commitlint/cli -D |
新建commitlint.config.cjs,然后添加下面的代码:
1 | module.exports = { |
在package.json中配置scripts命令
1 | { |
在.husky下新增commit-msg文件,删除_文件夹后
1 | npx husky add .husky/commit-msg |
内容
1 | !/usr/bin/env sh |
当我们commit提交信息时,就不能再随意写了,必须是git commit -m 'fix: xxx’符合类型的才可以,需要注意的是类型的后面需要用英文的:,并且冒号后面是需要空一格的,这个是不能省略的
强制pnpm包管理
团队开发项目的时候,需要统一包管理器工具,因为不同包管理器工具下载同一个依赖,可能版本不一样,导致项目出现bug问题,因此包管理器工具需要统一管理!!!
在根目录创建scritps/preinstall.js文件,添加下面的内容
1 | if (!/pnpm/.test(process.env.npm_execpath || '')) { |
配置命令
1 | "scripts": { |
当我们使用npm或者yarn来安装包的时候,就会报错了。原理就是在install的时候会触发preinstall(npm提供的生命周期钩子)这个文件里面的代码。
2、项目集成
集成element-plus
硅谷甄选运营平台,UI组件库采用的element-plus,因此需要集成element-plus插件!!!
官网地址:https://element-plus.gitee.io/zh-CN/
1 | pnpm install element-plus@2.5.6 @element-plus/icons-vue@2.3.1 |
入口文件main.ts全局安装element-plus,element-plus默认支持语言英语设置为中文
1 | import ElementPlus from 'element-plus' |
Element Plus全局组件类型声明
1 | // tsconfig.json |
配置完毕可以测试element-plus组件与图标的使用。
src别名的配置
在开发项目的时候文件与文件关系可能很复杂,因此我们需要给src文件夹配置一个别名!!!
1 | // vite.config.ts |
环境变量的配置
项目开发过程中,至少会经历开发环境、测试环境和生产环境(即正式环境)三个阶段。不同阶段请求的状态(如接口地址等)不尽相同,若手动切换接口地址是相当繁琐且易出错的。于是环境变量配置的需求就应运而生,我们只需做简单的配置,把环境状态切换的工作交给代码。
-
开发环境(development):顾名思义,开发使用的环境,每位开发人员在自己的dev分支上干活,开发到一定程度,同事会合并代码,进行联调。
-
测试环境(testing):测试同事干活的环境啦,一般会由测试同事自己来部署,然后在此环境进行测试
-
生产环境(production):生产环境是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。(正式提供给客户使用的环境。)
注意:一般情况下,一个环境对应一台服务器,也有的公司开发与测试环境是一台服务器!!!
项目根目录分别添加开发、生产和测试环境的文件!
1 | .env.development |
文件内容
1 | # 变量必须以 VITE_ 为前缀才能暴露给外部读取 |
1 | NODE_ENV = 'production' |
1 | # 变量必须以 VITE_ 为前缀才能暴露给外部读取 |
通过import.meta.env获取环境变量
SVG图标配置
在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后,页面上加载的不再是图片资源,
这对页面性能来说是个很大的提升,而且我们SVG文件比img要小的很多,放在项目中几乎不占用资源。
安装各种插件
1 | pnpm install vite-plugin-svg-icons@2.0.1 -D unplugin-auto-import@0.17.5 unocss@0.58.5 unplugin-icons@0.18.5 unplugin-vue-components@0.26.0 mockjs@1.1.0 vite-plugin-mock@2.9.6 vite-plugin-progress@0.0.7 @intlify/unplugin-vue-i18n@2.0.0 |
在vite.config.ts中配置插件
1 | import { resolve } from 'path' |
svg封装为全局组件
因为项目很多模块需要使用图标,因此把它封装为全局组件!!!
在src/components目录下创建一个SvgIcon组件:代表如下
1 | <template> |
在src文件夹目录下创建一个index.ts文件:用于注册components文件夹内部全部全局组件!!!
1 | import SvgIcon from './SvgIcon/index.vue'; |
在入口文件引入src/index.ts文件,通过app.use方法安装自定义插件
1 | import gloablComponent from './components/index' |
集成sass
我们目前在组件内部已经可以使用scss样式,因为在配置styleLint工具的时候,项目当中已经安装过sass sass-loader,因此我们再组件内可以使用scss语法!!!需要加上lang=“scss”
1 | <style scoped lang="scss"></style> |
接下来我们为项目添加一些全局的样式
在src/styles目录下创建一个index.scss文件,当然项目中需要用到清除默认样式,因此在index.scss引入reset.scss
1 | @import reset.scss; |
在入口文件引入
1 | import '@/styles' |
但是你会发现在src/styles/index.scss全局样式文件中没有办法使用。
在style/variable.scss创建一个variable.scss文件!
在vite.config.ts文件配置如下:
1 | export default defineConfig((config) => { |
@import "./src/styles/variable.less";后面的;不要忘记,不然会报错!
配置完毕你会发现scss提供这些全局变量可以在组件样式中使用了!!!
安装axios
1 | pnpm install axios@1.6.7 |
最后通过axios测试接口!!!
axios二次封装
在开发项目的时候避免不了与后端进行交互,因此我们需要使用axios插件实现发送网络请求。在开发项目的时候我们经常会把axios进行二次封装。
目的:
- 使用请求拦截器,可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数)
- 使用响应拦截器,可以在响应拦截器中处理一些业务(进度条结束、简化服务器返回的数据、处理http网络错误)
在根目录下创建utils/request.ts
1 | import axios from 'axios' |
API接口统一管理
在开发项目的时候,接口可能很多需要统一管理。在src目录下去创建api文件夹去统一管理项目的接口;
比如:下面方式
1 | //统一管理咱们项目用户相关的接口 |
3、补充
常用依赖安装
1 | 自动导入的vue里的ref watch 等 |




