在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 相关文章推荐
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
JqGrid web打印实现代码
May 31 Javascript
Three.js源码阅读笔记(物体是如何组织的)
Dec 27 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
对之前写的jquery分页做下升级
Jun 19 Javascript
javascript关于运动的各种问题经典总结
Apr 27 Javascript
javascript中setTimeout使用指南
Jul 26 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
Apr 19 Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 Javascript
js无提示关闭浏览器窗口的两种方法分析
Nov 06 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
js面向对象之实现淘宝放大镜
Jan 15 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 透明水印生成代码
2012/08/27 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
php模板引擎技术简单实现
2016/03/15 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
在python中的socket模块使用代理实例
2014/05/29 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python实现excel读写数据
2021/03/02 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python Process多进程实现过程
2019/10/22 Python
python str字符串转uuid实例
2020/03/03 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
企业元宵节主持词
2014/03/25 职场文书
情人节寄语大全
2014/04/11 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL