Node.js伺服器端項目怎麼打包成單文件?
react/vue等前端項目都有現成的腳手架用來打包壓縮js代碼,koa/express/eggjs有類似的方案嗎?
謝邀,可以試下前阿里大神 Node.js Collaborator @潘旻琦 發起的開源項目:
enclose.io - Compiling your application into a single executable
主要的場景:
- 分發,尤其是 win 上的各種兼容性問題
- 代碼保密
回答 webpack 的同學,想想你的 node_modules 怎麼辦?如果還有個 sass 之類的 C++ Addons 模塊呢?
PS:和另一個 enclosejs 不是一個庫,不要選錯了~
為什麼要打包?價值和意義何在?前端打包的目的是為了減少請求數量,提升網頁載入速度。對於node而言,並沒有這個需求,而且本身require有緩存機制,打包到一起也並不會對模塊查找速度有什麼特別明顯的提升。相反地,因為require是按需載入,強行打包到一起反倒把一些可能不執行的代碼載入進來,造成浪費。所以,除了一些特殊的考慮,如便於分發與安裝,以及代碼保密等層面的問題,一般不太需要打包。
nexe可以打包單文件,
大家的回答都針對於,koa/express/eggjs運行在伺服器,
而題主並未說明,一定會運行在伺服器,所以可能有如下的場景
在外工作,沒有網路,或者只有移動數據的情況下,
無法進行大量數據的傳輸,
需要把數據保存到本地,到有網路的時候,再上傳數據.
一般情況都會有一個客戶端,
但考慮到,web開發的速度,和瀏覽器的跨平台特性,
或許這樣的方案,也很不錯.
但就要考慮到 @天豬(劉勇) 提到的,分發和代碼加密問題,
我嘗試過打包 express 項目,使用 webpack 配置類似,指定一個入口文件就可以了。我使用打包的原因主要是配合 pm2 一起,webpack 監聽文件變更,輸出打包文件,pm2 監聽 webpack 的打包文件變更從而自動重啟。不知道有沒有其他更好的方式,反正這種方式對自己的項目可行
推薦閱讀:
※如何在Node.js或TypeScript中實現for..of形式的按行讀文件?
※js中Async/Await 怎麼做錯誤處理更好?
※GitHub上有哪些值得關注學習的NodeJS開源項目?
※node.js 入門請推薦本好的入門書籍?