在后端应用程序中使用Webpack会降低性能吗?

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

我正在考虑使用Webpack将我所有的NodeJS后端代码捆绑到一个JavaScript文件中,并使用像树震动一样的function。

对于我理解Node的方式, import (或require )在运行时被parsing。

我担心,将所有文件捆绑在一个文件中会影响我的应用程序的性能,因为它总是加载整个JS文件,而不是只加载JS代码执行过程中parsing的JS文件。 对于一个小应用程序,我的影响是小的,但随着我的应用程序的增长,捆绑也会。

我可以创build多个包,每个包都有一个Lambda函数,但是我的问题是:我的问题是否有效?

在单纯的NodeJS上下文中,将所有文件捆绑到单个文件中会影响我的性能,即使只是一小部分?

注意:AWS Lambda 确实支持ES5,因此仅使用Webpack进行转储并不是这里的一个因素。

我认为相反,它可以改善Lambda“热身”期间的performance。

实际上,当第一次调用Lambda或者不经常调用Lambda时,容器将被初始化,那就是require()将加载节点模块。 由于require()是asynchronous的,并且可以在很多地方search文件,所以要加载多个文件可能会减慢此调用的速度。

请注意,一旦“预热”完成,模块将已经加载下一个调用,并使用单个文件将不再是一个优势。

你可能会遇到一些问题,试图使用一些不应该在浏览器中执行的节点模块来使用Webpack(比如ORMs),因为它们可以包含一些dynamic的require() (使用一个variables作为require()的参数) 。


总而言之,与在很多小文件上调用require()相比,在非常大的文件上调用require()应该不是什么大问题。 但是使用Webpack会增加复杂性,如果你的lambda不需要经常“预热”,那么没有什么区别。