性能评级工具(PageSpeed 或 YSlow)
未对代码进行打包、压缩、兼容性优化(webpack打包优化)
未合并重复的请求、代码
错误的编排JS与CSS
for循环,迭代、同步、重定向、阻塞请求(JS代码阻塞)
未删除重复、无用的代码
未对逻辑业务复杂的代码进行重构,了解设计模式,对业务进行梳理
未加入Async异步机制
未思考页面加载、用户体验(可以使用页面懒加载,快要滚动到页面的时候,图片等显示出来)
CSS规范
HTML规范/HTML5规范
Airbnb代码规范
多个css合并,尽量减少HTTP请求
内联图片(data URI scheme)
<img src="data:image/png;base64,iVAGRw0KGDCFGNSUhEUgACBBQAVGAD CAIATYJ7ljmRGGAAGElEVQQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPACCCTElFTEVBQmGA" />
将css文件放在页面最上面
移除空的css规则
避免空src或者href值
避免使用css表达式
选择器优化嵌套,尽量避免层级过深
充分利用css继承属性,减少代码量
抽象提取公共样式,减少代码量
属性值为0时,不加单位
属性值为小于1的小数时,省略小数点前面的0
使用CSS Sprites将多张图片拼接成一张图片,通过CSS background 属性来访问图片内容
节流、防抖
长列表滚动到可视区域动态加载(大数据渲染)
图片懒加载(src)
使用闭包时,在函数结尾手动删除不需要的局部变量,尤其在缓存dom节点的情况下
DOM 操作优化
createElement
创建并添加节点,最后一次性加入dom事件委托
绑定父节点实现,利用了事件冒泡的特性innerHTML
代替appendChild
Reflow
)减少 HTTP 请求数量
组合文件、优化图片,使用sprites设计风格:将背景图片合并成一个文件,通过background-image
和background-position
控制显示;
利用浏览器缓存,公用依赖包(如vue、Jquery、ui组件等)单独打包/单文件在一起,避免重复请求
减小cookie
大小,尽量用localStorage
代替
CDN托管静态文件
开启 Gzip 压缩