当前位置:   article > 正文

vue3项目创建+配置_eslint配置vue3

eslint配置vue3

一. 创建项目

  注意:vue3项目node版本必须16以上版本

  1. // 1. npm
  2. npm init vue@latest
  3. npm create vue
  4. // 2.pnpm
  5. pnpm create vue

配置选择:Vue Router、Pinia、ESLint、Prettier

二. 配置eslint

1、需配置文件

        1.1.eslintrc.cjs文件中追加代码

  1. rules: {
  2. 'prettier/prettier': [
  3. 'warn',
  4. {
  5. singleQuote: true, // 单引号
  6. semi: false, // 无分号
  7. printwidth: 80, // 每行宽度至多80字符
  8. trailingComma: 'none' // 换行符号不限制(win mac 不一致)
  9. }
  10. ],
  11. 'vue/multi-word-component-names': [
  12. 'warn',
  13. {
  14. ignores: ['index'] // vue组件名称多单词组成(忽略index.vue)
  15. }
  16. ],
  17. 'vue/no-setup-props-destructure': ['off'], // 关闭 props 解构的校验
  18. // 添加未定义变量错误提示, create-vue@3.6.3关闭, 这里加上是为了支持下一个章节演示.
  19. 'no-undef': 'error'
  20. }

        1.2  vscode 左下角齿轮 --> 设置  --> 右上角打开settings.json文件
               配置保存时自动修复 format on save 关闭

  1. "editor.codeActionsOnSave": {
  2. "source.fixAll": true,
  3. },
  4. // 关闭保存自动格式化
  5. "editor.formatOnSave": false,

2、 vscode配置

        2.1 需禁用插件 ‘vetur’、‘prettier’、

        2.2需安装插件 ‘volar (vue-Fooicial)’、‘ESlint’

三. husky 代码检查工作流(非必要)

        husky是一个 git hooks 工具。

        作用就是可以在你提交代码到git时检查代码是否有ESLint的报错

       1.配置

        1.1 git初始化 git init

        1.2 初始化 husky工具配置 https://typicode.github.io/husky/

pnpm dlx husky-init && pnpm install

        1.3 修改 .husky/pre-committ文件

                删除npm test,改为pnpm lint

        问题:默认进行的是全量检查,耗时问题,历史问题

2. 扩展配置:提交git时只检查指定后缀文件,并且只检查新修改的代码

        2.1 安装

pnpm i lint-staged -D

        2.2 配置 package.json

  1. {
  2. "scripts": {
  3. // ... 省略 ...
  4. "lint-staged": "lint-staged",
  5. },
  6. // ... 省略 ...
  7. "lint-staged": {
  8. "*.{js,ts,vue}":[
  9. "eslint --fix"
  10. ]
  11. }
  12. }

        2.3 把上面修改过的pnpm lint 改为配置的 pnpm lint-staged

       扩展配置完成后:提交git时只会对新修改的代码进行校验并且只检查指定后缀文件

四. 路由配置

官方文档:Vue Router | Vue.js 的官方路由

1. 安装:pnpm add vue-router  (如果前面已经勾选了配置则不用)

2.配置 router/index.js

  1. import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
  2. // createRouter用于创建路由实例
  3. // 配置 history 模式
  4. // history模式: createWebHistory 路由不带#号
  5. // hash模式: createWebHashHistory 路由带#号
  6. // vite 中的环境变量 import.meta.env.BASE_UR 默认为 '/' 可在 vite.config.js中的base配置
  7. const router = createRouter({
  8. // createWebHistory(基础路径)
  9. history: createWebHistory(import.meta.env.BASE_URL),
  10. routes: [
  11. { path: '/login', component: () => import('@/views/login/LoginPage.vue') },
  12. ...
  13. ]
  14. })
  15. export default router

3. main.js 导入

  1. // ... 省略 ...
  2. import router from './router'
  3. app.use(router)
  4. // ... 省略 ...

4. 使用

  1. // 在 vue3 CompositionAPI 中
  2. import { useRoute, useRouter } from 'vue-router'
  3. // 1. 获取路由对象 router useRouter
  4. const router = useRouter()
  5. // 2. 获取路由参数 route useRoute
  6. const route = useRoute()
  7. // 使用:router.push('/xxx')

五. 配置element-plus

1. 安装: pnpm add element-plus

2. 配置按需导入:

    官方文档:一个 Vue 3 UI 框架 | Element Plus

3. 配置按需导入后直接可以使用组件,无需引入;

    并且 components 下的文件也会被自动注册

4. eslintrc中声明全局变量名,解决 ElMessage 报错问题

  1. module.exports = {
  2. ...
  3. global: {
  4. ElMessage: 'readonly',
  5. ElMessageBox: 'readonly',
  6. ElLoaoding: 'readonly',
  7. }
  8. }

六. axios配置

官方文档:axios中文网|axios API 中文文档 | axios

1. 安装:pnpm add axios

2.引入创建:utils/request.js

  1. import axios from 'axios'
  2. // import { useCounterStore } from "@/store";
  3. // import router from "@/router"
  4. const baseURL = 'http://.....'
  5. const instance = axios.create({
  6. // TODO 1. 基础地址,超时时间
  7. baseURL,
  8. timeout: 10000
  9. })
  10. // 请求拦截器
  11. instance.interceptors.request.use(
  12. (config) => {
  13. // TODO 2. 携带token
  14. // const useStore = useCounterStore()
  15. // if(useStore.token){
  16. // config.headers.xxx = useStore.token
  17. // }
  18. return config
  19. },
  20. (err) => {
  21. Promise.reject(err)
  22. }
  23. )
  24. // 响应拦截器
  25. instance.interceptors.response.use(
  26. (res) => {
  27. // TODO 3. 处理业务失败
  28. // TODO 4. 摘取核心响应数据
  29. if(res.data.code == 1) {
  30. return res
  31. }
  32. // 处理业务失败
  33. ElMessage.error(res.data.msg || '服务异常')
  34. return Promise.reject(res.data)
  35. },
  36. (err) => {
  37. // TODO 5. 处理401错误
  38. // 错误特殊情况 => 401权限不足 => token过期
  39. // if(err.response?.status === 401){
  40. // router.push('/login')
  41. // }
  42. // 错误默认情况
  43. ElMessage.error(err.response.data.msg || '服务异常')
  44. return Promise.reject(err)
  45. }
  46. )
  47. export default instance
  48. export { baseURL }

3. 使用:

3.1 创建js文件封装方法并导出:api/xxx.js

  1. import request from "@/utils/request";
  2. export const userRegisterService = (data) => {
  3. // return request.post('/api/reg',{ ...data })
  4. return request({
  5. url:'/xxx/xxx',
  6. method:'post',
  7. data
  8. })
  9. }

3.2 组件内引用使用

  1. import { userRegisterService } from "@/api/login"
  2. const btnZcFn = async () => {
  3. let res = await userRegisterService(data)
  4. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/932043
推荐阅读
相关标签
  

闽ICP备14008679号