用vscode开发vue应用的方法步骤


Posted in Javascript onMay 06, 2019

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

用vscode开发vue应用的方法步骤

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

从安装开始

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

用vscode开发vue应用的方法步骤

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

npm install -g @vue/cli

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

vue create hello-world

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

用vscode开发vue应用的方法步骤

安装完毕:

用vscode开发vue应用的方法步骤

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

用vscode开发vue应用的方法步骤

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

用vscode开发vue应用的方法步骤

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

用vscode开发vue应用的方法步骤

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

用lint格式化

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

用vscode开发vue应用的方法步骤

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。多余的空格被自动干掉了,但是我们发现有一些地方同时也被篡改了:

用vscode开发vue应用的方法步骤

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

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

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

用vscode开发vue应用的方法步骤

到这一步很关键,假设你拿到一个烂的不再烂的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文件:

用vscode开发vue应用的方法步骤

因为我们在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,把几个工具综合用好,才能真正达到我们的错误随时可见,保存自动修改,更正既往错误的目的。希望每个前端工程师写出的代码都如出一人之手,漂亮简洁干净。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js控制浏览器全屏示例代码
Feb 20 Javascript
jquery实现的一个简单进度条效果实例
May 12 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
浅谈vue 单文件探索
Sep 05 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
Jan 07 Javascript
简单实现vue中的依赖收集与响应的方法
Feb 18 Javascript
js实现一个页面多个倒计时的3种方法
Feb 25 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
js实现轮播图效果 z-index实现轮播图
Jan 17 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 Javascript
微信小程序合法域名配置方法
May 06 #Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 #Javascript
微信小程序上线发布流程图文详解
May 06 #Javascript
ES6的解构赋值实例详解
May 06 #Javascript
3分钟读懂移动端rem使用方法(推荐)
May 06 #Javascript
Vue动态组件和异步组件原理详解
May 06 #Javascript
微信小程序按钮点击跳转页面详解
May 06 #Javascript
You might like
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
python openssl模块安装及用法
2020/12/06 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
政府会议通知范文
2015/04/15 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
Nginx实现负载均衡的项目实践
2022/03/18 Servers
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android