本文概述
- 什么是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项目集成。有很多事情要做, 但是该项目是有希望的, 因此请确保对存储库加注星标并检查将来的更改。
推荐阅读
- Matreshka.js(创建单页应用程序的简单JavaScript框架)
- Carbon(创建和共享代码段精美图片的在线工具)
- Keeweb(与KeePass兼容的免费跨平台密码管理器)
- AppleScript-等待shell脚本完成
- Android字体可下载,我如何从常规更改为semibold
- 找不到模块&#39;./app/server.app.module.ngfactory&#39;
- 在为arm64 Android手机构建应用程序包时,在ApplicationInfo.nativeLibraryDir中找不到本机库
- 尝试使用Android Brother Sdk打印无线时,ERROR_WRONG_LABEL用于标签打印机
- Android 9上的BiometricManager