在vscode中统一vue编码风格的方法


Posted in Javascript onFebruary 22, 2018

vetur 很多人知道,但在 vscode 下没办法格式化 .vue 里的 html, js 很是头疼,代码风格无法统一。

所以不少人直接拆分开,然后在 .vue 中引入,虽然方法很好,但这有违 .vue 单文件组件的初衷。

本文详细介绍 vscode 下使用 vetur + prettier + eslint 来统一 vue 编码风格。

vetur 插件

vetur 经过多个版本迭代,算是目前 vscode 下最好用的 vue 插件了,甚至支持 ts, webpack alias 等特性。

但有几个功能不是直接支持,需要手动配置,而且有几个功能需要其他插件配置后才能配合他完成。

这就有点麻烦了,新手同学们往往就是死在这里。

1. 配置 eslint

prettier 覆盖 vscode 默认格式化快捷键,但没有针对 eslint 配置进行格式化,所以需要单独配置用户设置开启。

找到 首选项 -> 设置 菜单,在右侧 用户配置 中添加 "prettier.eslintIntegration": true 开启 eslint 支持。

至此,可以对 js 文件采用 eslint 规范进行格式化了,但 .vue 文件还不行,因为他不认识这是个什么东西。

在 用户设置 中添加如下配置,以支持 .vue 文件。

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

现在 eslint 认识 vue 了,但这只是 eslint 认识,prettier 依然不认识这是什么东西。

所以我们要加上 "eslint.autoFixOnSave": true 配置,在保存文件时,自动fix里面的js代码。

2. 配置 prettier

虽然 eslint 可以处理 vue 文件了,但却跟 prettier 的格式化冲突,因为 prettier 不知道这是什么东西。

安装了 vetur 插件后,prettier 知道 .vue 原来是一个 html 格式文件的,但依然没办法很好的格式化。

PS:目前 vetur 不支持 prettier 的 eslint。

因为 html 包括了 html+script+style 3部分,prettier 只能采用默认的格式化规范去格式化,不支持eslint,而且默认也不格式化 html。

刚才开启的 "prettier.eslintIntegration": true 只是针对 .js 文件的,而不是针对 .vue 文件。

所以当你格式化 .vue 文件时候,stript 部分可能会跟你的 eslint 风格不一致,你需要单独配置。

例如我的eslint 规范,字符串单引号,对象末尾项也有逗号。

// 强制单引号
"prettier.singleQuote": true,
// 尾随逗号
"prettier.trailingComma": "all",

如果你是双引号,而且不加末尾逗号的,就不必配置了。

或者你觉得无伤大雅,也不用配置这个,反正保存时 eslint 自动fix了。

3. 配置 vetur 对 html 的格式化

因为 vetur 就是把 .vue 中的 html+script+style 3部分拆分,然后交给对应的语言处理器去处理。

例如:

html 可以是 html,也可以是 pug, jade 等。

script 可以是 es5, es6, ts, coffee。

style 可以是 css, less, sass, postcss 等。

除了 html 部分,其他都默认采用 prettier 格式化。

如果需要 html 的格式化,则需手动配置。

// 使用 js-beautify-html 插件格式化 html
"vetur.format.defaultFormatter.html": "js-beautify-html",
// 格式化插件的配置
"vetur.format.defaultFormatterOptions": {
 "js-beautify-html": {
  // 属性强制折行对齐
  "wrap_attributes": "force-aligned",
 }
}

完成收工

至此,配置完成,完整配置如下:

{
 // 强制单引号
 "prettier.singleQuote": true,
 // 尽可能控制尾随逗号的打印
 "prettier.trailingComma": "all",
 // 开启 eslint 支持
 "prettier.eslintIntegration": true,
 // 保存时自动fix
 "eslint.autoFixOnSave": true,
 // 添加 vue 支持
 "eslint.validate": [
  "javascript",
  "javascriptreact",
  {
   "language": "vue",
   "autoFix": true
  }
 ],
 // 使用插件格式化 html
 "vetur.format.defaultFormatter.html": "js-beautify-html",
 // 格式化插件的配置
 "vetur.format.defaultFormatterOptions": {
  "js-beautify-html": {
   // 属性强制折行对齐
   "wrap_attributes": "force-aligned",
  }
 }
}

现在你可以在 .vue 中格式化 html+js+css 了。

但 js 部分格式化不是根据 eslint 格式化的,上面有解释。

js 部分只能采用 prettier 默认格式,然后保存的时候自动 fix,来达到 prettier+eslint 的效果。

如果需要详细配置,可以访问 vetur 官方文档 https://vuejs.github.io/vetur

小结

主要解决了 prettier 不格式化 .vue 内的 js 问题,以及 prettier 格式化时跟 eslint 自动 fix 风格冲突问题。

当然,prettier格式化 和 eslint的fix 有本质区别,但 prettier + 自动fix,就完美了。

对于 .js 来说,prettier 开启 eslint 支持,直接完美。

但 .vue 只能这样配置了,因为目前 vetur 也没支持,官网只给了这个解决方案。

或许之后就支持了呢。

其他插件推荐

  1. Auto Close Tag
  2. Auto Rename Tag
  3. Bracket Pair Colorizer
  4. Code Runner
  5. Document This
  6. EditorConfig
  7. ESLint
  8. gitignore
  9. GitLens
  10. Guides
  11. Import Cost
  12. npm intellisense
  13. Path Autocomplete
  14. Prettier
  15. Settings Sync
  16. TODO Highlight
  17. Vetur
  18. vscode-icons

我就不一一解释了。

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

Javascript 相关文章推荐
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
js 复制或插入Html的实现方法小结
May 19 Javascript
jQuery初学:find()方法及children方法的区别分析
Jan 31 Javascript
JavaScript自动设置IFrame高度的小例子
Jun 08 Javascript
javascript实现行拖动的方法
May 27 Javascript
深入理解JS DOM事件机制
Aug 06 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
基于jQuery.i18n实现web前端的国际化
May 04 jQuery
JSX在render函数中的应用详解
Sep 04 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
Aug 11 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 Javascript
vantUI 获得piker选中值的自定义ID操作
Nov 04 Javascript
vue webpack打包优化操作技巧
Feb 22 #Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 #Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 #Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 #Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 #Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
Feb 21 #Javascript
解决vue打包之后静态资源图片失效的问题
Feb 21 #Javascript
You might like
Php header()函数语法及使用代码
2013/11/04 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
开业庆典主持词
2014/03/21 职场文书
文化产业实施方案
2014/06/07 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
先进典型发言材料
2014/12/30 职场文书
升职自荐信怎么写
2015/03/05 职场文书
电子商务专业求职信范文
2015/03/19 职场文书