Prepack(用于JavaScript的部分评估程序,可生成有效的JavaScript)

本文概述

  • 什么是Prepack, 它如何工作?
  • 如何使用?
  • 如何贡献?
JavaScript可以帮助你创建动态和活动的应用程序, 但是编写代码的方式可能会带来一些效率低下的问题, 从而影响应用程序的性能, 尽管它们并不总是人眼所见。尽管有许多技巧和最佳实践可用于优化JavaScript代码, 但有时你可能忘记在代码中应用它们。这就是Prepack项目可能会帮助你完成此任务的原因。
什么是Prepack, 它如何工作?Prepack是用于优化JavaScript源代码的命令行工具:消除了可以在编译时而不是运行时进行的计算。 Prepack将JavaScript捆绑包的全局代码(代码的最终版本)替换为等效代码, 该代码是简单的分配序列。这摆脱了大多数中间计算和对象分配。 Prepack专注于运行时性能, 而Closure Compiler强调JavaScript代码大小。例如, 以下代码实现了fibonacci函数:
(function () {function fibonacci(x) {return x < = 1 ? x : fibonacci(x - 1) + fibonacci(x - 2); }// Define the x variable in the window as the result of 10global.x = fibonacci(10); })();

与Prepack捆绑在一起, 你的最终代码将为:
x = 55;

什么?你在开玩笑吗 ?不会, 如果你分析初始代码, 则fibonacci函数仅使用一次, 而我们是从全局变量x中的静态数中声明一个静态值, 因此, 捆绑软件的结果将是函数执行时的结果, 因此在后台的Prepack也会评估你的代码。尽管你每天编写的代码可能不是那么简单, 但是此示例非常适合理解prepack在许多不必要的理论下的功能。因此, 如果你的代码需要该函数, 因为不是一次使用fibonacci函数而是例如全局声明该函数:
(function () {function fibonacci(x) {return x < = 1 ? x : fibonacci(x - 1) + fibonacci(x - 2); }// Declare global the fibonacci fnglobal.fibonacci = fibonacci; })();

然后预包装将其附加:
(function () {var _0 = function (x) {return x < = 1 ? x : _0(x - 1) + _0(x - 2); }; // Declare global the fibonacci fnfibonacci = _0; })();

如你所见, Prepack将代码编译为最小的版本。
如何使用?如前所述, Prepack是一个命令行实用程序, 你可以将其与node.js一起使用。使用NPM, 你可以使用以下方法进行安装:
npm install -g prepack

或者, 如果你使用纱线, 请确保先获得纱线:
npm install -g yarn

然后通过yarn安装Prepack CLI:
yarn global add prepack

在某些情况下, 你可能需要在命令前加上sudo或在Windows中以管理员模式执行命令提示符。安装后, prepack应该可以通过命令行访问, 并且可以使用, 如以下示例所示:
prepack script.js --out script-processed.js

其中script.js是你自己的代码, 而out参数则定义带有优化代码的输出文件的绝对路径。无论如何, 你可以在此处访问其官方网站阅读详细说明和预包装的API文档。
如何贡献?根据BSD-3条款, Prepack是完全开源的, 这意味着你有权在Github的官方存储库中进行拉取请求和报告问题。目前有34位贡献者, Github上有超过1万颗星和273个分支。为了接受你的拉取请求, Facebook团队需要你提交CLA。你只需执行一次此操作即可在Facebook的任何开源项目中工作(可以在此处执行操作)。
【Prepack(用于JavaScript的部分评估程序,可生成有效的JavaScript)】Prepack尽管处于早期阶段, 但它可能会在将来成为一个很棒的基本工具, 可以与React或任何其他类型的JS项目集成。有很多事情要做, 但是该项目是有希望的, 因此请确保对存储库加注星标并检查将来的更改。

    推荐阅读