美文网首页前端性能优化
前端进阶(9) - js 性能优化利器:prepack

前端进阶(9) - js 性能优化利器:prepack

作者: senntyou | 来源:发表于2018-09-15 11:26 被阅读103次

js 性能优化利器:prepack

1. js 性能优化

js 性能优化不外乎从三个角度入手:

1.1 开发者在编写程序时,尽量避免不必要的冗余代码,包括冗余的第三方库

首先要避免不必要的冗余代码,包括不必要的闭包、不必要的变量与函数声明、不必要的模块分割等。

比如:

// 低效的实现
const urlParams = (() => {
  const params = {};
  if (location.search) {
    location.search.slice(1).split('&').forEach(item => {
      const arr = item.split('=');
      params[arr[0]] = arr[1] || '';
    });
  }
  
 return params;
})();


// 更高效的实现
const urlParams = {};
if (location.search) {
  location.search.slice(1).split('&').forEach(item => {
    const arr = item.split('=');
    urlParams[arr[0]] = arr[1] || '';
  });
}

其次是要避免使用不必要的第三方库,因为一般第三方库都很大,功能比较多,在条件允许的情况下,尽量少用。

比如:

const users = [
  { user: 'barney',  age: 36, active: true },
  { user: 'fred',    age: 40, active: false },
  { user: 'pebbles', age: 1,  active: true },
];

// 使用 lodash
import _ from 'lodash';

const user = _.find(users, { age: 1, active: true });


// 不使用 lodash
const user = users.find(item => item.age === 1 && item.active === true);

还比如:

本质上讲,这些都是从开发者编码的角度来优化的,但这种方式也是很有限的,因为很多时候我们不得不大量的使用第三方库,来提升开发效率。

1.2 使用扁平化代码构建的构建工具

现在前端打包基本上都会用 webpack,但 webpack 打包之后的文件会产生很多冗余代码,这会导致 js 性能降低。

如果在打包文件的性能上有特别需求的小伙伴,可以使用 rollup,详细使用与对比可以参考这里 webpack 之外的另一种选择:rollup.

1.3 代码预编译

js 本身是没有像 python 一样的预编译功能,更没有像 java 一样的编译功能,所以,这里所说的 js 代码预编译 只是通过工具实现的类似功能而已。

这就要提到 prepack 了,它的思路大致是这样:

把不依赖外部环境的逻辑提前进行运算,并把运算结果替换到相应的源码处,然后从源码中移除这段逻辑。

2. prepack

2.1 安装

npm install -g prepack

2.2 编译(打印在命令行)

prepack script.js

2.3 编译后输出文件

prepack script.js --out script-processed.js

2.4 示例

源代码

(() => {
  const secondsOfOneDay = 24 * 60 * 60;

  window.getSecondsOfDays = days => days * secondsOfOneDay;
})();

编译后的代码

(function () {
  var _$0 = this;

  var _1 = days => {
    return days * 86400;
  };

  _$0.getSecondsOfDays = _1;
}).call(this);

2.5 配合构建工具一起使用

2.6 问题

  • 目前最新版本是 0.2.51,还一直在开发中,很多功能都还没有实现,包括模块输入输出的优化

3. 后续

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证

相关文章

  • 前端进阶(9) - js 性能优化利器:prepack

    js 性能优化利器:prepack 1. js 性能优化 js 性能优化不外乎从三个角度入手: 1.1 开发者在编...

  • 前端性能优化

    js性能小贴士——优化循环 前端网页与js性能优化 我总结的js性能优化的小知识 提高 web 应用性能之 Jav...

  • 前端性能 优化 大全

    js性能小贴士——优化循环 前端网页与js性能优化 我总结的js性能优化的小知识 提高 web 应用性能之 Jav...

  • react 框架性能优化

    react 框架性能优化 前端性能监控利器 1.Google Performance工具 2.react 性能查看...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • 前端进阶(1)Web前端性能优化

    前端进阶(1)Web前端性能优化[https://jackniu81.github.io/2021/04/23/W...

  • 技术贴 - 收藏集 - 掘金

    Prepack - Facebook 开源库帮助你自动优化 JavaScript 代码提高运行速度 - 前端 - ...

  • 前端性能优化(上)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 为什么要进行前端性能...

  • 性能优化

    +WEB前端性能优化:HTML,CSS,JS和服务器端优化对前端开发工程师来说,前端性能优化的重要性是不言而喻的,...

网友评论

    本文标题:前端进阶(9) - js 性能优化利器:prepack

    本文链接:https://www.haomeiwen.com/subject/dlvzgftx.html