正文
注释的原则
if (data.success && data.result.length > 0) {
renderTable(data);
}
const isTableDataReady = data.success && data.result.length > 0;
if (isTableDataReady) {
renderTable(data);
}
复制代码
-
如有必要,尽量详尽,需要注释的地方应该尽量详尽地去写
注释的规范
遵循统一的风格规范,如一定的空格、空行,以保证注释自身的可读性
注释行的上方需要有一个空行;注释内容和注释符之间需要有一个空格
function getType() {
console.log('fetching type...');
const type = this.type || 'no type';
return type;
}
复制代码
function make(tag) {
return element;
}
复制代码
-
使用特殊标记注释:如 TODO、FIXME、HACK 等
复制代码
-
文档类注释,如函数、类、文件、事件等,使用
jsdoc
规范
function Book(title, author) {
this.title = title;
this.author = author;
}
复制代码
复制代码
浏览器兼容规范
团队应该根据的用户设备占比情况、应用类型、开发成本、浏览器市场统计数据等因素,来制定自己的浏览器兼容规范,转转的设备兼容规范如下
总体的机型兼用要求
安卓需要兼容安卓
4.0
以上,
iOS
需要兼容
8.0
以上
> 1%
last 3 versions
iOS >= 8
Android >= 4
Chrome >= 40
复制代码
CSS 的兼容要求
在
CSS
的兼容处理上,我们使用的是
postcss
的
autoprefixer
module.exports = {
plugins: {
autoprefixer: {},
cssnano: {
autoprefixer: false,
zindex: false,
discardComments: {
removeAll: true
},
reduceIdents: false
}
}
}
复制代码
js 的兼容要求
在处理
js
的兼容性时,我们使用
babel
抹平浏览器差异。
需要注意的是
proxy
是无法被降级处理的。需要慎重使用。
-
业务项目中,通过配置
@babel/preset-env
的
useBuiltIns: 'entry', corejs: 3
,来根据
.browserslistrc
引入
polyfill
module.exports = {
presets: [
['@vue/app', {
useBuiltIns: 'entry'
}]
]
}
复制代码
import 'core-js/stable'
import 'regenerator-runtime/runtime'
复制代码
以
Vue
项目为例,
@vue/babel-preset-app
的配置会透传至
@babel/preset-env
,并默认使用
core-js@3
-
基础库中,通过配置
@babel/preset-env
的
useBuiltIns: 'usage', corejs: 3
来处理
js
兼容问题,减少项目体积
module.exports = {
presets: [
['@babel/env', {
useBuiltIns: 'usage',
corejs: 3
}]
],
plugins: [
['@babel/transform-runtime'],
]
}
复制代码
HTTP 缓存规范
转转的绝大多数项目都是单页应用,根据项目特点我们设置了如下的缓存规范
静态资源
静态资源域名
s1.zhuanstatic.com
,是通过
cache-control
来做强制缓存,缓存时间是
30
天
cache-control: max-age=2592000
复制代码
html文件
域名
m.zhuanzhuan.com
下的
html
文件,是通过
Etag
来做协商缓存
etag: W/"5dfb384c-4cd"
复制代码
压缩
所有的资源都已开启的
gzip
压缩
通讯协议
默认使用的通信协议是
http2
编辑器规范
使用
Editorconfig
用来帮助你规范编辑器的的配置
Editorconfig 具体配置
配置文件
.editorconfig
root = true
[*]
indent_style = space