百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用 VSCode 的必备三大神器,这才是开发 Vue 的真香解决方案

bigegpt 2024-08-11 14:28 3 浏览

现在用 VSCode 开发 Vue.js 应用几乎已经是前端的标配了,但很多时候我们看到的代码混乱不堪,作为一个前端工程师,单引号双引号乱用,一段有分号一段没有分号,有的地方有逗号有的地方没有逗号,空格回车都对不齐,还说自己做事认真,这不是开玩笑的事情。

我们今天从头开始,完整地讲述一下一个重度代码洁癖患者该如何用 VSCode 开发 Vue,以及如何把一个已经可以宣判死刑的全身各种格式错误几万条的项目整容成标准美女。

从安装开始

为了准确起见,我们把 VSCode 里所有插件全部禁用,把用户设置清空,以让它尽可能恢复成原始的样子:

作为代码洁癖患者,对于系统的版本要求一定也是最苛刻的,不管什么时候,都让我们把所有的系统能升级的都升级到最高版本:

npm install -g @vue/cli

然后,我们开始创建项目:

vue create hello-world

在这里,一定要选择第一项:babel + eslint,这两个是必不可少的。我见到有些人嫌 eslint 麻烦,居然在项目建立好之后手工把 eslint 关掉的,简直无语。

安装完毕:

我们先不急着执行,执行代码是最容易的事情,我们先打开代码看一下:

好吧,至少我们需要先安装 vetur 插件。这几乎已经确定是开发 Vue 项目的标配了,即使我不说,VSCode 也会强烈建议你安装它。

装上 vetur 以后多少有点人样了。接下来我们来试一试能不能自动格式化,这部分才是洁癖患者的最爱。胡乱加几个空格,然后保存试试看:

不能格式化,连个提示都没有!

用lint格式化

就算 VSCode 里的 vetur 不能帮我们自动格式化,好在 package.json 命令里还有一个 lint 命令,我们看看 lint 命令能不能帮我们自动格式化:

lint 居然说没有错误!明明就是多了很多空格的错误好吧,为什么?

这是因为缺省的 vue-cli 没有为我们安装 @vue/prettier 插件,我们先来手工安装一下:

yarn add -D @vue/eslint-config-prettier

然后在package.json或者.eslintrc.js或者其它什么你设置eslint的地方,给它加上:

 "extends": [
 "plugin:vue/essential",
 "eslint:recommended",
 "@vue/prettier"
 ],

特别是最后这一个 @vue/prettier,非常重要。然后再执行 yarn lint。多余的空格被自动干掉了,但是我们发现有一些地方同时也被篡改了:

所有的单引号被变成双引号了,原本行尾没有的分号被加上了分号。这是为什么呢?因为我们虽然引入了 prettier,但是还没有对 prettier 做设置,我们在项目的根目录下创建一个 .prettierrc.js 文件,然后在其中加入:

module.exports = {
 semi: false,
 singleQuote: true
}

再次执行 yarn lint,现在我们看到 lint 已经能够起作用了。它不但能把我们多余插入的空格删掉,并且能按照规则把双引号变成单引号,把行尾多余的分号删掉。当然,关于行尾加不加分号这是一个哲学命题,你可以根据你个人的喜好自行决定。在这里,我们权且按照 vue-cli 的标配执行。

到这一步很关键,假设你拿到一个烂的不再烂的 vue 项目,里面有几千个 .vue 文件,几万个各种格式错误,也都能通过 yarn lint 这一行命令把它们全部修正过来!

在vscode里格式化

事情还没有完,我们注意到虽然 yarn lint 命令能在编写完代码之后帮我们格式化,但是既然我们是用 VSCode 进行开发,我们当然希望能在 VSCode 里直接看到对于错误的标注。

这时候我们需要在 VSCode 里再安装一个插件 eslint

你以为安装上 eslint 插件就行了吗?不行的。因为 eslint 并不知道我们的 .vue 文件里面包含了 js 语法,所以还需要打开我们的 VSCode 设置文件。

注意:这里一定要设置到项目的设置里,而不要只是设置到你自己个人的设置里,否则你团队的小伙伴随便一改又乱掉了。正确的方法是在你项目的文件夹下有一个 .vscode 文件夹,而vue最讨厌的地方是它居然会把这个文件夹放到 .gitignore 里,这个错误你必须要纠正过来,也就是说从 .gitignore 文件里把 .vscode 删掉。切切。

在你项目的 settings.json 里文件里添加以下代码:

{
 "eslint.autoFixOnSave": true,
 "eslint.validate": [
 "javascript",
 "javascriptreact",
 {
 "language": "vue",
 "autoFix": true
 }
 ],
}

这时候所有错误都被标注出来了,注意看左侧,一定要让这个 settings.json 文件是绿色的,而不能是灰色的,如果是灰色的,请检查你的 .gitignore 文件:

因为我们在 settings.json 文件里设置了autoFixOnSave,所以不管多么乱的格式,只要一按Ctrl+S 保存,自动就帮我们把代码格式整理好了,是不是很方便呢?

和Prettier的冲突

有些时候我们的 VSCode 里插件装的比较多,譬如还安装了 prettier 插件,因为我们不只开发 Vue 项目,可能还有其它类型的 js 项目特别是传统 js 项目,需要用到 prettier 进行美化,而 prettier 的一些功能是会和 eslint 相冲突的,比如说我们在全局设置了 prettierformatOnSave,这个功能就会和 eslintautoFixOnSave 打架,为了避免这个矛盾,我们通常还会在本项目的 settings.json 文件里再多加几个选项,类似于这样:

 "editor.tabSize": 2,
 "editor.formatOnSave": false,
 "prettier.semi": false,
 "prettier.singleQuote": true

有了这些设置,基本上 prettier 就不会和 eslint 打架了。

小结

以上就是用 VSCode 开发 vue 程序的标配,并不像网上有些文章说的那么简单,不是只需要配一个 eslint 就能解决的事情,这里还用到了 vetureslintprettier,把几个工具综合用好,才能真正达到我们的错误随时可见,保存自动修改,更正既往错误的目的。希望每个前端工程师写出的代码都如出一人之手,漂亮简洁干净。

我们的目标始终如一:0 错误 0 警告。

版权

原文链接:https://segmentfault.com/a/1190000019055976

原作者:张京

版权归其所有。

相关推荐

5分钟搭建公网https网页文件服务器,免费权威TLS证书

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习前言本文主要讲解如何快速搭建一个https网页文件服务器,并免费申请权威机构颁发的tls证...

nginx负载均衡配置(nginx负载均衡配置两个程序副本)

Nginx是什么没有听过Nginx?那么一定听过它的“同行”Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(UniformResources...

19《Nginx 入门教程》Nginx综合实践

今天我们将基于Nginx完成两个比较有用的场景,但是用到的Nginx的配置非常简单。内部Yum源搭建内部Pip源搭建1.实验环境ceph1centos7.6内网ip:172.16....

Nginx性能调优与优化指南(nginx优化配置大全)

Nginx性能调优需要结合服务器硬件资源、业务场景和负载特征进行针对性优化。以下是一些关键优化方向和具体配置示例:一、Nginx配置优化1.进程与连接数优化nginxworker_process...

C++后端开发必须彻底搞懂Nginx,从原理到实战(高级篇)

本文为Nginx实操高级篇。通过配置Nginx配置文件,实现正向代理、反向代理、负载均衡、Nginx缓存、动静分离和高可用Nginx6种功能,并对Nginx的原理作进一步的解析。当需...

【Nginx】史上最全的Nginx配置详解

Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里,http块又包括http全局块和server块。Nginx是非常重要的负载均衡中间件,被广泛应用于大型...

【Nginx】Nginx 4种常见配置实例(nginx基本配置与参数说明)

本文主要介绍nginx4种常见的配置实例。Nginx实现反向代理;Nginx实现负载均衡;Nginx实现动静分离;Nginx实现高可用集群;Nginx4种常见配置实例如下:一、Nginx反向代理配...

使用nginx+allure管理自动化测试报告

allure在自动化测试中经常用来生成漂亮的报告,但是网上及官网上给出的例子都仅仅是针对单个测试用例文件的形式介绍的,实际使用中,自动化测试往往需要包含不止一个产品或项目,本文介绍如何使用nginx+...

nginx配置文件详解(nginx配置文件详解高清版)

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...

SpringCloud Eureka-服务注册与发现

1.Eureka介绍1.1学习Eureka前的说明目前主流的服务注册&发现的组件是Nacos,但是Eureka作为老牌经典的服务注册&发现技术还是有必要学习一下,原因:(1)一些早期的分布式微服...

微服务 Spring Cloud 实战 Eureka+Gateway+Feign+Hystrix

前言我所在项目组刚接到一个微服务改造需求,技术选型为SpringCloud,具体需求是把部分项目使用SpringCloud技术进行重构。本篇文章中介绍了Eureka、Gateway、Fe...

深度剖析 Spring Cloud Eureka 底层实现原理

你作为一名互联网大厂后端技术开发人员,在构建分布式系统时,是不是常常为服务的注册与发现而头疼?你是否好奇,像SpringCloudEureka这样被广泛使用的组件,它的底层实现原理到底是怎样的...

热爱生活,喜欢折腾。(很热爱生活)

原文是stackoverflow的一则高票回答,原文链接可能之前也有人翻译过,但是刚好自己也有疑惑,所以搬运一下,个人水平有限所以可能翻译存在误差,欢迎指正(如侵删)。尽管classmethod和st...

GDB调试的高级技巧(详细描述gdb调试程序的全过程)

GDB是我们平时调试c/c++程序的利器,查起复杂的bug问题,比打印大法要好得多,但是也不得不说,gdb在默认情况下用起来并不是很好用,最近学习到几个高级点的技巧,分享下:一美化打印先上个例子...

Arduino 实例(二十三)Arduino 给Python 编译器发送信息

1首先Python需要安装Pyserial库,在命令提示符中输入pipintallpyserial若是遇到提示‘pip‘不是内部或外部命令,也不是可运行的程序或批处理文件,则需要设置环境变...