<span>"scripts": { </span> <span>"preinstall": "node prepare.js", </span> <span>"postintall": "node clean.js", </span> <span>"build": "webpack", </span> <span>"postbuild": "node index.js", </span> <span>"postversion": "npm publish" </span><span>} </span>
>通常是為前端開發時,您想運行兩個或多個手錶過程以重新構建代碼。例如,一個用於WebPack,另一個用於Nodemon。您可以使用&&執行此操作,因為第一個命令不會發布提示。但是,有一個名為同時的方便的模塊,可以同時產生多個過程並同時運行它們。
另外,安裝Dev命令行工具,例如WebPack,Nodemon,Gulp,Mocha等。您可以指向./node_modules/.bin/mocha,或將此行添加到您的bash/zsh配置文件(路徑!):> >使用env vars
即使在項目的早期階段,也要利用環境變量,以確保敏感信息沒有洩漏,並從一開始就正確構建代碼。此外,某些庫和框架(我知道Express肯定會做到這一點)將吸引諸如Node_env之類的信息以修改其行為。將其設置為生產。還設置您的mongo_uri和api_key值。您可以創建一個shell文件(例如start.sh),然後將其添加到.gitignore:<span>export <span>PATH</span>="./node_modules/.bin:<span>$PATH"</span> </span>
強大而聰明的事件循環是使節點一直使用的所有時間使節點變得如此快,出色的原因,而這本來可以浪費的,等待輸入和輸出任務完成。因此,節點非常擅長優化I/O結合系統。
<span>NODE_ENV=production MONGO_URL=mongo://localhost:27017/accounts API_KEY=lolz nodemon index.js </span>
>如果您需要執行CPU密集型(例如,計算,密碼的哈希或壓縮),則除了為這些CPU任務傳遞新的過程外,您可能還需要探索任務的推遲,並使用SETIMMIDIATIE進行遞延。 ()或settimeout() - 他們的回調中的代碼將繼續在下一個事件循環週期中繼續。 NextTick()在相同的周期上工作,與名稱相反。 argh!
<span>{ </span> <span>"env": { </span> <span>"NODE_ENV": "production", </span> <span>"MONGO_URL": "mongo://localhost:27017/accounts" </span> <span>} </span><span>} </span>
使用功能繼承
> JavaScript支持原型繼承,即對像從其他對象繼承時。班級運營商還使用ES6添加了該語言。但是,與功能性繼承相比,它非常複雜。大多數節點專家都喜歡後者的簡單性。它是由簡單功能工廠模式實現的,並且不需要使用新的或新的原型。當您更新原型時,沒有隱含的效果(導致所有實例也更改),因為在功能繼承中,每個對像都使用其自己的方法副本。
考慮TJ Holowaychuk的代碼,TJ Holowaychuk是Express,Mocha,Connect,Superegent和數十個其他節點模塊背後的多產天才。 Express使用功能性繼承(完整源代碼):<span>"scripts": { </span> <span>"preinstall": "node prepare.js", </span> <span>"postintall": "node clean.js", </span> <span>"build": "webpack", </span> <span>"postbuild": "node index.js", </span> <span>"postversion": "npm publish" </span><span>} </span>
是客觀的,核心節點模塊經常使用原型繼承。如果您遵循該模式,請確保您知道它的工作原理。您可以在此處閱讀有關JavaScript繼承模式的更多信息。
>>
<span>export <span>PATH</span>="./node_modules/.bin:<span>$PATH"</span> </span>
<span>NODE_ENV=production MONGO_URL=mongo://localhost:27017/accounts API_KEY=lolz nodemon index.js </span>
> all 核心模塊):
<span>{ </span> <span>"env": { </span> <span>"NODE_ENV": "production", </span> <span>"MONGO_URL": "mongo://localhost:27017/accounts" </span> <span>} </span><span>} </span>
考慮不使用JavaScript
當您只需要幾個宏時(宏允許您
構建完全是您想要的語言),而不是整個新語言,然後考慮將做到這一點的sweet. js,可以做到這一點- 允許您編寫生成代碼的代碼。
如果您走了非javascript路線,請仍然包含您的編譯代碼,因為某些開發人員可能無法很好地理解您的語言無法正確構建它。例如,VS代碼是最大的打字稿項目之一,也許是在Angular 2之後,並且代碼使用TypeScript使用類型進行補丁節點的核心模塊。在VS代碼回購的VSCODE/SRC/VS/BASE/NODE/NODE/NODE/NODE/NODE(鏈接)中,您可以看到熟悉的模塊名稱,例如加密,流程等,但使用TS擴展名。存儲庫中還有其他TS文件。但是,它們還包括帶有本機JavaScript代碼的VSCODE/build。。那麼,為什麼不抓住我的快遞備忘單。我在那裡列出了主要的中間件模塊。例如,NPM I壓縮-s將通過放氣響應來降低下載速度。 logger('tiny')或logger('common')分別提供較少的(dev)或更多(prod)日誌。 > 向上
由於其非阻滯I/O,因此>
然後,您可以啟動同一服務器的四個實例:
<span>"scripts": { </span> <span>"preinstall": "node prepare.js", </span> <span>"postintall": "node clean.js", </span> <span>"build": "webpack", </span> <span>"postbuild": "node index.js", </span> <span>"postversion": "npm publish" </span><span>} </span>
<span>export <span>PATH</span>="./node_modules/.bin:<span>$PATH"</span> </span>
<span>NODE_ENV=production MONGO_URL=mongo://localhost:27017/accounts API_KEY=lolz nodemon index.js </span>
摘要
<span>{ </span> <span>"env": { </span> <span>"NODE_ENV": "production", </span> <span>"MONGO_URL": "mongo://localhost:27017/accounts" </span> <span>} </span><span>} </span>
>在當今的開源軟件時代,沒有任何藉口不從公開的受信任和測試的代碼中學習。您無需進入內心圈子就可以進入。學習永遠不會停止,我敢肯定,我們很快就會根據我們將經歷的失敗和成功獲得不同的最佳實踐。保證它們是。
exports <span>= module.exports = createApplication; </span><span>// ... </span><span>function createApplication() { </span> <span>var app = function(req<span>, res, next</span>) { </span> app<span>.handle(req, res, next); </span> <span>}; </span> <span>mixin(app, EventEmitter.prototype, false); </span> <span>mixin(app, proto, false); </span> app<span>.request = { __proto__: req, app: app }; </span> app<span>.response = { __proto__: res, app: app }; </span> app<span>.init(); </span> <span>return app; </span><span>} </span>
學習新事物是好的,但不要因為實際構建東西而混淆。 重要的是,您的薪水實際上是在建立東西。停止工程。您不是在構建下一個Facebook。 Promises vs. Generator vs. Async等待著我對我來說是一個疑問,因為當有人回复討論中的線程時,我已經寫了我的回調(並使用CoffeeScript的速度比普通的ES5/6/7快2倍! )。
>最終的最佳實踐是使用最佳實踐,最好的方法是掌握基本面。閱讀源代碼,嘗試代碼新事物,最重要的是自己編寫大量代碼。現在,在這一點上,停止閱讀並進行重要的船舶代碼!
,以防萬一這篇文章還不夠,這裡有更多關於最佳節點實踐的閱讀:https://blog.risingstack.com/nodejs-at-scale-npm-best-practices
>
>測試Node.js應用程序的一些最佳實踐是什麼? Node.js開發,並且有幾種最佳實踐值得關注。其中包括編寫單元測試以測試應用程序的各個組件,集成測試以測試這些組件如何交互,以及端到端測試以整體測試您的應用程序。每當對您的代碼庫進行更改時,使用連續集成(CI)系統也很重要。 NODE.JS通常使用NPM,NPM,NPM,node.js的默認軟件包管理器完成。重要的是要在軟件包中指定依賴項的確切版本。您還應該定期更新依賴項,以從錯誤修復和安全補丁中受益。>
>我如何確保Node.js?>如何縮放我的node.js應用程序?可以通過多種方式實現Node.js應用程序。一種常見的方法是使用群集模塊創建共享服務器端口的子進程,從而使您的應用程序同時處理更多請求。您還可以使用負載平衡來通過多個服務器分發傳入的網絡流量,以及根據您的需求,水平縮放(添加更多機器)或垂直縮放(向單個機器添加更多資源)。
以上是10個Node.js的最佳實踐:節點大師的啟蒙的詳細內容。更多資訊請關注PHP中文網其他相關文章!