2017-03-16 53 views
1

我正在研究使用AWS Lambda和NodeJS的無服務器應用程序。使用Webpack作爲後端應用程序會降低性能嗎?

我一直在尋找到使用的WebPack捆綁我所有的NodeJS後端代碼到一個單一的JavaScript文件,並使用功能,如樹搖晃。

對於我理解Node的方式,進口(或要求)在運行時解析。

恐怕捆綁在一個單一的文件都將被永遠載入整個JS文件會影響我的應用程序的性能,而不是隻加載JS文件,因爲它們是在代碼執行過程中解決。對於一個小應用程序,我的影響很小,但隨着我的應用程序的增長,捆綁軟件也會如此。

我可以創建多個捆綁包,每個Lambda函數都有一個捆綁包,但我的問題是:我的問題是否有效?

在一個單純的背景下的NodeJS,將捆綁在一個文件中的一切影響到我的表現,即使是少量的?

注:AWS Lambda 確實支持ES5,所以使用Webpack只是爲了transpile在這裏並不是一個因素。

回答

1

我認爲,相反它可以提高性能在拉姆達的「熱身」。

實際上,當第一次調用Lambda或不經常調用Lambda時,容器將被初始化,並且當require()將加載節點模塊。由於require()是異步的,並且有can search for files in many places,因此要加載多個文件可能會減慢此調用速度。

注意,一旦「熱身」完成後,該模塊將已經被加載下一調用和使用一個單一的文件將不具有優勢了。

你可能會遇到一些問題,試圖使用一些不應該在瀏覽器中執行的節點模塊來使用Webpack(例如ORMs),因爲它們可以包含一些動態的require()(使用變量作爲參數require()) 。


總之,在一個非常大的文件調用require()相比於大量的小文件調用require()應該不會有大問題。但使用Webpack可能會增加複雜性,如果您的lambda不需要經常「預熱」,則沒有區別。