为了将所有模块组合成一个资源,我们将每个模块写入一个单独的脚本标签,并将代码隐藏在注释块 (/* */) 中。当资源第一次加载时,没有任何代码被解析,因为它被注释掉了。要加载一个模块,找到对应脚本标签的 DOM 元素,去掉注释块,然后 eval() 代码......
在 iPhone 2.2 设备上,块注释中保存的 200k JavaScript 在页面加载期间增加了 240ms,而在页面加载期间解析的 200k JavaScript 增加了 2600ms。通过在页面加载期间消除 200k 不需要的 JavaScript,启动延迟减少了 10 倍以上!
http://googlecode.blogspot.co.uk/2009/09/gmail-for-mobile-html5-series-reducing.html https://developers.google.com/speed/docs/best-practices/mobile
gmail 文章已有三年多的历史了,从那时起,移动性能方面就有了很大的优势,即 iOS 的 Nitro 和 JIT 之类的东西进入了移动端。使用 eval 是否还能获得性能提升?