js 性能优化不外乎从三个角度入手:css
首先要避免没必要要的冗余代码,包括没必要要的闭包、没必要要的变量与函数声明、没必要要的模块分割等。前端
好比:java
// 低效的实现 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] || ''; }); }
其次是要避免使用没必要要的第三方库,由于通常第三方库都很大,功能比较多,在条件容许的状况下,尽可能少用。python
好比:jquery
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);
还好比:webpack
css
动画替代原有的 js
动画的解决方案本质上讲,这些都是从开发者编码的角度来优化的,但这种方式也是颇有限的,由于不少时候咱们不得不大量的使用第三方库,来提高开发效率。git
如今前端打包基本上都会用 webpack,但 webpack
打包以后的文件会产生不少冗余代码,这会致使 js
性能下降。github
若是在打包文件的性能上有特别需求的小伙伴,能够使用 rollup,详细使用与对比能够参考这里 webpack 以外的另外一种选择:rollup.web
js
自己是没有像 python
同样的预编译功能,更没有像 java
同样的编译功能,因此,这里所说的 js 代码预编译
只是经过工具实现的相似功能而已。npm
这就要提到 prepack 了,它的思路大体是这样:
把不依赖外部环境的逻辑提早进行运算,并把运算结果替换到相应的源码处,而后从源码中移除这段逻辑。
npm install -g prepack
prepack script.js
prepack script.js --out script-processed.js
源代码
(() => { 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);
0.2.51
,还一直在开发中,不少功能都尚未实现,包括模块输入输出的优化更多博客,查看 https://github.com/senntyou/blogs
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)