写点什么

JavaScript 编译器 Prepack:旨在减少启动时间

  • 2017-05-11
  • 本文字数:958 字

    阅读完需:约 3 分钟

紧跟前端发展,共享一线技术——推荐关注 InfoQ 垂直公众号前端之巅

Facebook 透露了一个项目,旨在“让 JavaScript 运行得更快”,只要 JavaScript 代码是在 React Native 应用里进行初始化的。

这个被称为 Prepack 的工具,试图移除编译时的计算过程,特别是在代码初始化阶段所进行的计算。随着 JavaScript 引擎的日渐成熟,现今最大的性能问题是如何改进用户体验。在很多移动应用里,本地代码比起JavaScript 代码具有与生俱来的优势,比如那些React Native 应用。因此,对于React Native 应用来说,减少启动时间可以显著地改进用户体验。 Nikolai Tillmann 在 2016 年 9 月份加入 Facebook,专门解决这方面的问题。

项目主页上的所有示例都展示了如何进行全局处理,以便减少启动时间,避免客户端 JavaScript 引擎每次都要进行不必要的编译。Prepack 是一个“纯净的 JavaScript 参考实现”,所以它只读取必要的 JavaScript 代码。

现在,这个项目专注于如何为 React Native 改进初始化性能,因为 React Native 应用的启动过程相对耗时。设备端的 JavaScript 引擎编译次数越少,性能就越好。不过,这个项目无法感知它所运行的环境。Prepack 的文档里提到,“Prepack 并不知道 document 和 window 是什么。事实上,在 Prepack 里引用这些属性时,它们会得到 undefined”。

官方已经非常清楚地声明,该项目“还没有为生产做好准备”。在短时间内,主要的目标是能够把它应用于 React Native 应用,以及相关的工具链。对 Web 和 Node.js 的支持被列为“中期”目标,所以想要将该工具集成到 Web 应用里的开发者们需要等待一段时间。不过,虽然减小应用文件大小是 Web 开发者的关注点,但它并不是 Prepack 的目标。项目主页的底部有一段说明:

Prepack 关注运行时性能,而 Closure 编译器更注重 JavaScript 代码的大小。

Tillmann 写到,这个工具是否能够带来好处,完全取决于被编译的东西:

Prepack 可以作为传统编译器的补充。它的长处在于,它了解 JavaScript 内建组件,并在编译时期使用它们对代码进行预处理。在极端情况下,整个程序可以被缩减到只剩最终的结果。为了看到实际的效果,我们需要在一个能够缓存解析的环境里使用它。在初始化阶段,我们可以看到它带来最多 10 倍的执行时间改进。

查看英文原文: Prepack JavaScript Compiler Aims to Reduce Startup Time

2017-05-11 19:001313
用户头像

发布了 321 篇内容, 共 127.2 次阅读, 收获喜欢 138 次。

关注

评论

发布
暂无评论
发现更多内容

第一周:课程笔记及总结

Alex

极客大学架构师训练营

架构师训练营丨第一周丨学习总结

Frode

极客大学架构师训练营

学习总结

nihuihua

架构师训练营第一周-总结

无心水

极客大学架构师训练营 UML

食堂就餐卡系统设计

泛岁月的涟漪

缘起:被束缚的架构师

GAC·DU

极客大学架构师训练营

架构师训练营第一周学习总结

梦行

极客大学架构师训练营

架构师训练营 第一周总结

netbanner

极客大学架构师训练营

架构师训练营-学习笔记-第一周

superman

学习 极客大学架构师训练营

架构师训练营第一周心得

努力努力再努力m

极客大学架构师训练营

【总结】架构师要做什么

孙野

架构方法之架构设计文档【总结】

小叶

架构设计

架构师训练营总结

Coder

极客大学架构师训练营

架构师和架构

拈香(曾德政)

架构师 极客大学架构师训练营

第一周作业

free[啤酒]

架构

架构师训练营总结-1

River Tree

极客大学架构师训练营 个人总结

食堂就餐卡系统设计

Darren

Homework-食堂就餐卡系统设计

River Tree

架构设计 Homework

week1-食堂就餐卡系统

张健

食堂就餐卡

食堂收费系统用例图

也良

架构师训练营-week1-学习总结

暖丶冬

作业一:食堂就餐卡系统设计

梦行

极客大学架构师训练营

架构师训练营-作业1-食堂就餐卡系统设计

紫极

极客大学架构师训练营 架构文档

食堂就餐卡系统设计

拈香(曾德政)

架构设计 极客大学架构师训练营

第一周总结

王志祥

极客大学架构师训练营

第二课 以图服人

Geek_bobo

架构师训练营 - 学习总结 - 第一周

桔子

食堂就餐卡系统设计

molingwen

极客大学架构师训练营

练习1-1

闷骚程序员

week1.学习总结

个人练习生niki👍

Week 01 作业:食堂就餐卡系统设计

鱼_XueTr

JavaScript编译器Prepack:旨在减少启动时间_JavaScript_David Iffland_InfoQ精选文章