后端应用使用 Webpack 会降低性能吗?

Does using Webpack for backend applications reduce performance?

我正在研究使用 AWS Lambda 和 NodeJS 的无服务器应用程序。

我正在考虑使用 Webpack 将我所有的 NodeJS 后端代码捆绑到一个 JavaScript 文件中,并使用 tree shaking 等功能。

根据我对 Node 工作方式的理解,imports(或 requires)在运行时解析。

我担心将所有内容捆绑在一个文件中会影响我的应用程序的性能,因为它总是加载整个 JS 文件,而不是只加载在代码执行期间解析的 JS 文件。对于小型应用程序,影响很小,但随着我的应用程序的增长,捆绑包也会如此。

我可以创建多个包,一个用于我的每个 Lambda 函数,但我的问题是:我的担心是否有效?

在纯 NodeJS 上下文中,将所有内容捆绑在一个文件中是否会影响我的性能,即使影响很小?

注意:AWS Lambda 确实 支持 ES5,因此仅使用 Webpack 进行转译并不是考虑因素。

我认为相反,它可以提高 Lambda "warm up" 期间的性能。

确实,当 Lambda 被第一次调用或不经常调用时,容器将被初始化,也就是 require() 将加载节点模块的时候。由于 require() 是异步的并且 can search for files in many places,加载许多文件可能会减慢此调用。

请注意,一旦 "warm up" 完成,将为下一次调用加载模块,使用单个文件将不再具有优势。

尝试将 Webpack 与某些不应在浏览器中执行的节点模块(例如 ORM)一起使用时可能会遇到一些问题,因为它们可以包含一些动态 require()(使用变量作为require()).

的参数

总而言之,与对大量小文件调用 require() 相比,对非常大的文件调用 require() 应该不是什么大问题。但是使用 Webpack 会增加复杂性,如果您的 lambda 不需要经常 "warm up",则没有区别。