JS 项目优化

https://segmentfault.com/a/1190000000490324

  1. 优化循环
  2. 垃圾回收
    *1。 将不用的对象赋值为空。(null)
    *2. 全局对象 将一些常用对象永久保存起来。作为全局对象
    *3. 事件监听器的回收
    *4. 定时器的回收。(干脆就放一个全局的定时器,项目启动后就一直在跑)
    *5. 闭包导致的内存泄露 (闭包是不会造成内存泄漏的。但是,闭包会造成对象引用的生命周期脱离当前函数的上下文)(有待研究)
    3.对象的优化
    *1. JavaScript获取数据的性能有如下顺序(从快到慢)
    变量获取 > 数组下标获取(对象的整数索引获取) > 对象属性获取(对象非整数索引获取)
    *2. 对象的拷贝
    for(item in source) 的效率非常低
    4.对象池
    5.线程

6.缓存
*1. http请求数据的缓存,避免同样的数据重复去请求。
*2. 本地缓存 sessionStorage localStorage
*3. 应用资源的缓存。 Application Cache

js文件的优化
*1. 文件的压缩
压缩主要是删除 JS 代码中注释、换行符、空格等,从而压缩 JS 文件大小。
工具打包之后基本上都经过了压缩。但是要注意代码的规范。如果使用代码混淆的话会将方法名和变量名赋值为a,b,c这样的一个单词,会减少文件的长度。我们现在用的工具一般只压缩不混淆。如果要混淆需要自己找工具去处理
*2. 文件的合并 将多个js文件合并成一个文件。减少网络请求的此时。但是主要要是在同一模块下的。
同样的图片和声音也可以做这样的合并处理。

Angular2 项目的优化
Aot编译, 摇树优化 (treeshaking) 懒加载。

    --prod 代表生产环境编译,带有代码混淆与压缩功能。我这实际测试时候,默认编译包大小为3.5兆,生产包1.7兆。

    --aot 代表预编译,会显著缩短客户端浏览器的启动到展示出真正页面的时间。
    
    缓存接口的数据。
    转场动画

服务器的Gzip压缩。

对象的赋值
对象引用赋值后,如果将对象置空,相互间是不受影响的。

你可能感兴趣的:(JS 项目优化)