用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 相关文章推荐
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
IE6 fixed的完美解决方案
Mar 31 Javascript
js获取class的所有元素
Mar 28 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
JS数字抽奖游戏实现方法
May 04 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
Javascript 字符串模板的简单实现
Feb 13 Javascript
javascript基于原型链的继承及call和apply函数用法分析
Dec 15 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 Javascript
教你一步步实现一个简易promise
Nov 02 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
最基础的Python的socket编程入门教程
2015/04/23 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
中医学专业自荐信范文
2014/04/01 职场文书
小学教师读书活动总结
2014/07/08 职场文书
中国梦读书活动总结
2014/07/10 职场文书
户籍证明模板
2014/09/28 职场文书
健康状况证明模板
2014/10/23 职场文书
小学感恩节活动总结
2015/03/24 职场文书