搭建规范化的vue2项目

news2024/9/8 23:49:11

项目包含的库

Vue2+Vuex+Router+Eslint+Prettier

环境

vue:2.6.14

eslint:7.32.0

prettier:2.4.1

eslint-plugin-prettier:4.0.0

eslint-plugin-vue:8.0.3

@vue/cli:5.0.8

步骤

  1. 全局安装cli工具

    npm install -g @vue/cli
    
  2. 运行创建项目命令

    vue ui
    

    运行 vue create xxx 也可以,这种是在命令行中选择配置项,上面那个是在网页中点击选择

    之前创建过项目的一般默认会进入之前的项目仪表盘,点击项目名下拉框-选择Vue 项目管理器-创建(或者在页面左下角有个小的房子icon-创建)

    建议在想要创建项目的目录下运行上面命令,这样(之前没使用过cli创建项目)默认会是当前的目录

    尽量不要切换盘符或者进入很多目录的路径,会出现进入失败情况

  3. 选择配置项

    选择好目录之后,点击下方的在此创建新项目

    详情

    • 填写项目名,例如:vue-standard

    • 包管理器选择,例如:npm(按照自己习惯选择)

    • 若目标文件夹已存在则将其覆盖 ,不建议打开,容易出现问题

    • 无新手指引的脚手架项目 ,随意配置

    • 初始化 git 仓库 (建议) ,一般是打开的(因为项目管理基本都是使用git的,会进行git初始化)

      • 提交信息,进行提交信息的覆盖,可以根据团队提交信息规范填写,没有规范就按照自己习惯填写,例如:chore: init
    • 点击下一步

    预设

    • 一般选择手动,自己进行个性化配置设置
    • 点击下一步

    功能

    • Babel,这个基本不存在不选择的情况
    • TypeScript,建议vue3项目选择(不熟悉也可以不选择),vue2项目一般不选择(对TS支持不够好)
    • Progressive Web App (PWA) Support,使用web平台技术构建的应用程序,一般是不选择的
    • Router,一般情况下选择,如果不使用路由的可以不选择
    • Vuex,根据项目需求选择,需要共享状态的项目会选择
    • CSS Pre-processors,一般情况下选择,想要使用Sass、Less、Stylus,一定要选择
    • Linter / Formatter,代码校验格式化配置,本案例就是要搭建规范化项目,所以这个一定是勾选的,一般情况下也是建议选择的
    • Unit Testing,这个根据需要,敏捷开发一般是不选择的,想要项目健壮并且有时间编写单元测试的可以选择
    • E2E Testing,这个也是用来测试,敏捷开发一般是不选择的,想要项目健壮并且有时间编写测试代码的可以选择
    • 使用配置文件,一般是选择的,不然所有配置会放到package.json里面
    • 点击下一步

    案例选择

    在这里插入图片描述

    配置

    • Choose a version of Vue.js that you want to start the project with,选择vue版本,本案例选择的2.X,这个根据团队或个人技术栈来选择
    • Use history mode for router?,这个根据喜好和需求进行选择,路由是否带有#
    • Pick a CSS pre-processor:,这个根据UI库和个人喜好选择,一般选择UI库使用的,ElementUI使用Sass,例如:Sass/SCSS (with dart-sass)
    • Pick a linter / formatter config:,建议选择ESLint + Prettier,也可以根据喜好选择其他的规范,不想要复杂校验也可以选择ESLint with error prevention only
    • Pick additional lint features:
      • Lint on save,一般是选择的(规范化项目),保存时进行校验
      • Lint and fix on commit,这个根据需要选择,git提交代码时校验,打开后格式有问题时无法提交代码
      • 点击创建项目
    • 预设名,有预设下次同样配置可以直接选择预设
  4. 完成创建

    • 按照上面步骤操作之后,只需要等待项目创建完成即可,建议不在页面中进行依赖插件添加,防止使用时出现编写错误(如果你非常熟练可以忽略此建议),找到依赖官网按照步骤操作能减少错误
    • 完成创建之后进入项目仪表盘,配置菜单中会有vue和eslint的相关配值页面,可以进行个性化修改(本案例未做修改)
  5. 完善配置

    • 修改 .eslintrc.js配置文件,完善规则使用自己或团队习惯的规则

    • 增加 .prettierrc.js配置文件,修改prettier相关规则

    • 增加.eslintignore配置文件,设置那些文件不需要eslint校验

    • 增加.prettierignore配置文件,设置那些文件不需要prettier校验

    • 增加.vscode/settings.json文件,设置VsCode更加方便开发,没有这个文件可以点击管理(左下角的轮子icon)-设置-工作区-打开设置(json)(右上角弯曲箭头+纸张的icon)就会自动新建出来文件,设置一些保存自动修改等配置

      .gitignore文件中设置忽略了.vscode,要想提交修改,需要删除

    • VsCode插件安装:ESLint、Prettier - Code formatter、Vue - Official

    详细案例配置请查看文末案例项目地址

遇到问题

1. 感觉eslint配置文件没有使用已安装依赖中的eslint-plugin-vue、eslint-plugin-prettier,或者是配置与其他博文不一样

原来文件内容.eslintrc.js

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    "plugin:vue/essential",
    "eslint:recommended",
    "plugin:prettier/recommended",
  ],
  parserOptions: {
    parser: "@babel/eslint-parser",
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
  },
};

一些博文配置

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    "plugin:vue/essential",
    "eslint:recommended",
    "plugin:prettier/recommended",
  ],
  plugins: [
     "vue",
      "prettier",
  ],
  parserOptions: {
    parser: "@babel/eslint-parser",
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
  },
};  

上面这样的是完全错误的,不要照着进行修改(不要问我为什么知道的o(╥﹏╥)o)

实际上,原项目中extends中的plugin:vue/essential相当于做了如下配置

module.exports = {
  parser: require.resolve('vue-eslint-parser'),
  parserOptions: {
    ecmaVersion: 2020,
    sourceType: 'module'
  },
  env: {
    browser: true,
    es6: true
  },
  plugins: ['vue'],
  rules: {
    ... // 这里省略很多规则配置
  }
}

原项目中extends中的plugin:prettier/recommended相当于做了如下配置

module.exports = {
  extends: ['prettier'],
  plugins: ['prettier'],
  rules: {
    ... // 这里省略很多规则配置
  }
}

所以完全没有必要修改!!!

2. VsCode中template上面使用v-for报错,不能在template上设置key

vue2的项目要求template上面使用v-for时,要在template上面设置key,但是vue3中这个要求确实反的,要像解决这个问题,安装Vetur插件,不安装或者禁用Vue - Official

3. VsCode没有在不符合规范的代码位置标红,已经安装Eslint插件

正常情况下,打开vue文件,右下角vue左边有个{}图标(没有这个图标,可以右键-勾选编辑器语言状态),鼠标移上去不显示Eslint就是有问题,解决办法是升级VsCode编辑器,1.91.1版本是可以的

4. Eslint修复之后,保存之后又变回去(VsCode配置保存自动修复),VsCode还是标红

这种原因是eslint和prettier规则冲突 :例如:prettier的singleQuote与eslint的quotes配置这两个都是关于引号的配置,如果一个要求单引号,一个要求双引号,这样就会出现问题

另一个原因是修改了规则,没有重启VsCode

5. 配置的eslint或者prettier规则没有生效

出现这种情况的原因是:配置的值错误;另一个原因是修改了规则,没有重启VsCode

配置的值错误,例如:.eslintrc.js中"quotes": “double”,这个时候保存会出现右下角vue左边有个{}图标多了一个x,或者单独把Eslint添加到状态栏会看到Eslint变红了,点击会看到报错内容,Configuration for rule “quotes” is invalid:Severity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed ‘“double”’),想要设置这个需要两个值,这个时候需要是数组,“quotes”: [“error”, “double”]

prettier的规则trailingComma: “es5111”,这个时候保存出现右下角Prettier变红,点击可以看到Invalid trailingComma value. Expected “all”, “es5” or “none”, but received “es5111”,人家要求的是es5,trailingComma: “es5”

6. Prettier 格式化后,结束标签的 > 换行了

.prettierrc.js文件里面增加规则

htmlWhitespaceSensitivity: 'ignore'

案例项目地址

https://gitee.com/lydxwj/vue-standard
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3----扩展 element Plug card

扩展 element Plug card 增加全屏&#xff0c;折叠操作项 核心代码 <template><div class"cc-card-component"><el-card v-if"state.isShow" :class"state.class" :bodyStyle"bodyStyle" :shadow"props.shadow…

ic进阶|性能篇02:一文带你了解一种特殊的并行技术-展开!

本期文章让我们聊聊一种数字ic设计技术——展开&#xff0c;展开用于产生一个一次迭代就相当于原有结构的多次迭代的新电路结构。其相当于之前聊过的折叠技术的反向操作&#xff0c;折叠使用一个功能单元通过多次迭代来完成原有电路结构一次迭代的操作&#xff0c;相对于通过时…

访问控制列表(ACL)

文章目录 ACL原理与基本配置ACL分类ACL组成ACL规则的匹配与应用 ACL原理与基本配置 ACL(Access Control List&#xff0c;访问控制列表) 读取二层、三层、四层报文信息根据预先定义好的规则对报文进行过滤和分类实现网络访问控制、防止网络攻击和提高网络带宽利用率等目的提高…

USB3.0的等长要求到底是多少?

USB2.0与USB3.0接口的PCB布局布线要求PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 90欧姆阻抗&#xff0c;走差分线&#xff1a; 重点来了&#xff1a;

cf场+线性dp

Problem - B - Codeforces 思路&#xff1a; 这其实是一道数学题&#xff08;最开始一直在枚举&#xff0c;服啦&#xff09; 我们的目的是求最大利润 当a>b是时直接令k0,利润n*a即可 当a<b时存在两种情况&#xff1a; 1.b-a>n即所有b-i1的情况都>a&#xff0…

【数据结构】哈希表二叉搜索树详解

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f341;1. 二叉搜索树 二叉搜索树也称为二叉查找树或二叉排序树&#xff0c;是一种特殊的二叉树结构&#xff0c;它的特点是&#xff1a; 1. 若左树不为空&am…

SCI算法!发文首选!参数优化下的BiLSTM-KAN模型回归预测,Python代码

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类算法的家人&#xff0c;可关注我的VX公众号&#xff1a;python算法小当家&#xff0c;不定期会有很多免费代码分享~ KAN是2024年最新的算法&#xff0c;是近期非常热门的一…

leetcode112. 路径总和 leetcode113. 路径总和II,图文并茂,教你完全弄懂DFS,附详细代码

leetcode112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …

实验2-3-8 计算火车运行时间

//实验2-3-8 计算火车运行时间 /* 输入格式&#xff1a;输入在一行中给出2个4位正整数&#xff0c;其间以空格分隔&#xff0c;分别表示火车的出发时间和到达时间。 每个时间的格式为2位小时数&#xff08;00-23&#xff09;和2位分钟数&#xff08;00-59&#xff09;&#xff…

从0到1,AI我来了- (4)AI图片识别的理论知识-II

上篇文章&#xff0c;我们理解了我们程序的神经网络设计&#xff0c;这篇我们继续&#xff0c;把训练迭代过程分析一下&#xff0c;完成这两篇文章&#xff0c;下面问题&#xff0c;应该能回答了。 一张图片&#xff0c;如何被计算机读懂&#xff1f;pytorch 封装的网络&#…

C语言实现K均值聚类

K均值聚类(K_means)基础理论 K_means聚类是一种简单且广泛使用的聚类算法&#xff0c;它旨在将数据集中的样本划分为k个不同的聚类&#xff0c;其中k是事先指定的聚类数量&#xff0c;该算法的核心思想是迭代地优化聚类中心&#xff0c;以最小化每个样本与其所属聚类中心之间的…

数据仓库中的DIM层-定义、设计与最佳实践

在当今数据驱动的商业环境中,构建高效的数据仓库架构至关重要。本文将深入探讨数据仓库中的维度层(DIM层),帮助您了解其定义、重要性以及设计最佳实践。 目录 什么是DIM层?DIM层的重要性DIM层设计最佳实践1. 选择适当的粒度2. 实施慢速变化维度(SCD)3. 使用代理键4. 规范化v…

x264编解码库 -介绍和使用示例

目录 1&#xff1a;X264简单介绍 1.1&#xff1a;编译x264 1.2&#xff1a;x264简单介绍 1.3&#xff1a;x264的优势 1.4&#xff1a;x264与FFmpeg的关系 1.5&#xff1a;x264 编解码原理 1.6 进一步学习资源 2&#xff1a;demo效果 3&#xff1a;完整代码 4&#xff1a;附件…

Vite + Vue3 + TS项目配置前置路由守卫

在现代前端开发中&#xff0c;使用 Vue 3 和 TypeScript 的组合是一种流行且高效的开发方式。Vite 是一个极速的构建工具&#xff0c;可以显著提升开发体验。本文博主将指导你如何在 Vite Vue 3 TypeScript 项目中配置前置路由守卫&#xff08;Navigation Guards&#xff09;…

学习日记:数组

1. 概念 一组相同类型的数据的集合&#xff0c;也是一种数据类型。 2. 一维数组 2.1 语法 类型说明符 数组名 [常量表达式] &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;1&#xff09;类型说明符&#x…

Leetcode - 周赛407

目录 一&#xff0c;3226. 使两个整数相等的位更改次数 二&#xff0c;3227. 字符串元音游戏 三&#xff0c;3228. 将 1 移动到末尾的最大操作次数 四&#xff0c;3229. 使数组等于目标数组所需的最少操作次数 一&#xff0c;3226. 使两个整数相等的位更改次数 本题可以暴力…

刷题了:144.二叉树的前序遍历心|145.二叉树的后序遍历心|94.二叉树的中序遍历己

递归遍历 文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E6%80%9D%E8%B7%AF 视频讲解:https://www.bilibili.com/video/BV1Wh411S7xt/?spm_id_from333.788&vd_sourcee70917aa6392827d1ccc8d85e1…

ubuntu20.04安装nginx,mysql8,php7.4详细教程,包成功

目录 1.更新索引 2.安装 Nginx 1.安装 Nginx&#xff1a; 2.启动 Nginx 服务并设置为开机自启&#xff1a; 3.开放防火墙的 80 端口&#xff1a; 4.检查 Nginx 是否正常运行&#xff1a; 3.安装 MySQL 8.0 1.首先&#xff0c;安装 MySQL 的仓库&#xff1a; 安装过程中你会看…

Python --Pandas库基础方法(2)

文章目录 Pandas 变量类型的转换查看各列数据类型改变数据类型 重置索引删除行索引和切片seriesDataFrame取列按行列索引选择loc与iloc获取 isin()选择query()的使用排序用索引排序使用变量值排序 修改替换变量值对应数值的替换 数据分组基于拆分进行筛选 分组汇总引用自定义函…

TinyVue 组件库官网焕然一新!

本文由体验技术团队Kagol原创~ 之前有一些朋友吐槽我们 TinyVue 组件库的 UI 不够美观&#xff0c;于是我们请了设计师小姐姐给我们的组件和网站进行优化&#xff0c;经过设计师小姐姐和我们的开发兄弟们一个多月的努力&#xff0c;终于完成网站第一版的优化。 优化点 主要优…