vite + vue3 + ts + pinia + vueuse 打造企业级前端项目
前言
- 通过这篇文章你可以学到
- 如何使用使用 Vite 搭建项目
- 如何在 Vite 中集成 typescript
- 如何在 Vite 中集成 vue-router4 和 pinia
- 如何使用 vue3 的伴侣 vueuse
- 如何在项目中集成 eslint 和 prettier 保证代码质量
- 如何规范化 git 提交信息
- 如何为团队开发专属的项目模板
环境依赖版本
- node: v16.14.0
- vite: ^3.1.0
- @vue/cli: 5.0.0-alpha.2
- vue: ^3.2.37
- typescript: ^4.6.4
- pinia: ^2.0.22
- vue-router: ^4.1.5
- vueuse: ^9.2.0
- eslint: ^8.23.1
- prettier: ^2.7.1
- commitizen: ^4.2.5
- husky: ^8.0.1
快速查看
初始化项目
按步骤提示初始化:
- 使用 vite-cli 命令
1 | # pnpm |
- 输入项目名:
1 | ? Project name: vite-vue3-ts-pinia-vueuse |
- 选择一个框架(vue)
1 | ? Select a framework: » - Use arrow-keys. Return to submit. |
- 使用 TypeScript
1 | ? Select a variant: › - Use arrow-keys. Return to submit. |
- 启动项目
1 | cd vite-vue3-ts-pinia-vueuse && pnpm install && pnpm run dev |
集成配置
- 为保证 node 的使用
1 | pnpm i @types/node --save-dev |
- 修改 tsconfig.json
1 | { |
- 修改 vite.config.ts
1 | import vue from '@vitejs/plugin-vue'; |
代码质量风格的统一
集成 eslint
- 安装
1 | pnpm i eslint eslint-plugin-vue --save-dev |
由于 ESLint 默认使用 Espree 进行语法解析,无法识别 TypeScript 的一些语法,故我们需要安装 @typescript-eslint/parser 替代掉默认的解析器
1 | pnpm install @typescript-eslint/parser --save-dev |
- 创建配置文件:
.eslintrc.js
或.eslintrc.json
1 | module.exports = { |
- 创建忽略文件:.eslintignore
1 | node_modules/ |
- 命令行式运行:修改 package.json
1 | { |
集成 prettier
- 安装
1 | pnpm i prettier eslint-config-prettier eslint-plugin-prettier --save-dev |
- 创建配置文件:
prettier.config.js
或.prettierrc.js
1 | module.exports = { |
- 修改 .eslintrc.js 配置
1 | module.exports = { |
- 命令行式运行:修改 package.json
1 | { |
集成 pinia
Pinia
读音:[‘piːnə],是 Vue 官方团队推荐代替Vuex
的一款轻量级状态管理库。
Pinia 有如下特点:
- 完整的 typescript 的支持;
- 足够轻量,压缩后的体积只有1.6kb;
- 去除 mutations,只有 state,getters,actions(这是我最喜欢的一个特点);
- actions 支持同步和异步;
- 没有模块嵌套,只有 store 的概念,store 之间可以自由使用,更好的代码分割;
- 无需手动添加 store,store 一旦创建便会自动添加;
- 安装
1 | pnpm i pinia --save |
- 使用
- 新建 src/store 目录并在其下面创建 index.ts,导出 store
1 | import { createPinia } from 'pinia' |
- 在 main.ts 中引入并使用
1 | import { createApp } from 'vue' |
- 定义State: 在 src/store 下面创建一个 user.ts
1 | import { defineStore } from 'pinia' |
- 获取State: 在 src/components/usePinia.vue 中使用
1 | <template> |
- 修改State
1 | // 1. 直接修改 state (不建议) |
集成 vue-router4
- 安装
1 | pnpm i vue-router --save |
- 使用
- 新建 src/router 目录并在其下面创建 index.ts,导出 router
1 | import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; |
- 在main.ts 中引入使用
1 | import { createApp } from 'vue' |
- 修改 App.vue
1 | <template> |
集成 vueuse
VueUse
是一个基于Composition API
的实用函数集合。
- 安装
1 | pnpm i @vueuse/core |
- 使用
- 创建一个新的 src/page/vueUse.vue 页面来做一个简单的 Demo
1 | <template> |
更多函数官方文档:链接
CSS 的集成
主流方案 scss 或 less:
- 安装
1 | # .scss and .sass |
- 使用在 .vue 文件模板中
1 | // .scss |
集成 axios
axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
- 安装
1 | pnpm i axios |
- 使用
- 新建 src/utils/axios.ts
1 | import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'; |
- 在页面中使用即可
1 | <script lang="ts"> |
- 由于使用了 typescript,所以需新增 src/types/shims-axios.d.ts
1 | import { AxiosRequestConfig } from 'axios'; |
css 的 UI 样式库
使用 commitizen 规范git提交
安装 husky(依赖 husky v8.0.1版本)
项目模板地址
vite + vue3 + ts + pinia + vueuse 打造企业级前端项目
https://first-jim.github.io/2022/09/16/vite-vue3-ts-pinia-vueuse-打造企业级前端项目/