Standard 0.10.1+
规范
外置样式很多时不建议使用
vue-loader的scoped Scoped css for dynamic element根据情况使用 /deep/
immutable和lodash 看看用哪个
CSS Class 命名 BEM略复杂,不想用
vue中
尽可能用组件自定义事件 如
el-select @change代替vue watch事件命名可参考 Element-ui的
node_modules\element-ui\packages\table\src\table-header.js:110善于利用vuex的
dispath进行预加载,比如用户登陆时可以加载主页的静态资源列表相关的
CRUD解耦,新增,修改,删除操作完后不要去getList,仅在前端实现状态更新前端请求防止高并发的
loading相关,比如按钮的高频点击,可以写个全局mixin,待ajax结束把loading关掉,推荐使用promise.finally(),记得使用polyfillvue中善于利用
Destructuring更多🚀
项目示例汇总
为了使用函数参数重载,可以不遵循
airbnb7.7箭头函数
{}和return省略,可尽量省略return和花括号,使用vscode格式化工具prettier自动换行处理项目暂不使用
Class,推荐模块组合方式模块
export export { zip, flatten, camelCase, sumBy } from 'lodash'生产后的lodash会打包多余模块,尽量让import和export各司其职代码块,空白,逗号 使用vscode格式化工具prettier自动换行处理
不使用分号,遇到两个 IIFE 合并时手动加
String到Number类型转换'3'直接使用+'3'转换文件命名规则 nuxt项目中pages使用下划线 _ ,components组件使用驼峰
camelCase,其他文件使用-连接符项目尽可能不使用
jQuery,使用$作为存储vue $refs DOM节点对象的变量名前缀vuetify源码中有大量的
vue unwatch//node_modules\vuetify\src\mixins\validatable.js beforeDestroy () { this.form && this.form.unregister(this) }页面表格多且功能繁琐,尽量使用
vue-data-tables不同页面,相同class类名麾下的css,浏览器不会继续加载第二次,除非刷新页面,写style不加scoped时要特别注意,比如登陆页和注册页共用一个div时,尽量使用OOCSS方案,使用bootstrap的多className写法.
性能
- On Layout & Web Performance
- String vs Array Concat
- Try/Catch Cost In a Loop
- Bang Function
- jQuery Find vs Context, Selector
- innerHTML vs textContent for script text
- Long String Concatenation
- Are Javascript functions like
map(),reduce(), andfilter()optimized for traversing arrays? - jsperf 分析代码性能
相关资源
了解 ES6
看看这个
工具
- 代码风格检查器(Lint)
其他风格指南
- Google JavaScript Style Guide
- jQuery Core Style Guidelines
- Principles of Writing Consistent, Idiomatic JavaScript
- Naming this in nested functions - Christian Johansen
- Conditional Callbacks - Ross Allen
- Popular JavaScript Coding Conventions on Github - JeongHoon Byun
- Multiple var statements in JavaScript, not superfluous - Ben Alman
拓展阅读
- Understanding JavaScript Closures - Angus Croll
- Basic JavaScript for the impatient programmer - Dr. Axel Rauschmayer
- You Might Not Need jQuery - Zack Bloom & Adam Schwartz
- ES6 Features - Luke Hoban
- Frontend Guidelines - Benjamin De Cock