摘要:網站和使用同樣的注冊庫來顯示模塊以及查找模塊。使用在上一章開始使用中,當創建文件時,已經遇到了。此外,全局命名空間只包含公共模塊。通過引入作用域包來解決此問題。下一步異步編程下一章學習使用回調和實現異步編程的原理。
本文轉載自:眾成翻譯
譯者:網絡埋伏紀事
鏈接:http://www.zcfy.cc/article/1749
原文:https://blog.risingstack.com/node-hero-npm-tutorial/
本章將學習什么是 NPM,以及如何使用它。我們開始吧!
NPM 概述NPM 是 Node.js 應用程序所用的包管理器 - 你可以在 NPM 中找到大量模塊,這樣你就不用重新造輪子了。它就像 Java 的 Maven 或者 PHP 的 Composer。與 NPM 交互有兩種主要的接口 - NPM 網站以及 NPM 命令行工具。
網站和 CLI 使用同樣的注冊庫來顯示模塊以及查找模塊。
NPM 網站NPM 網站地址為 https://npmjs.com。你可以注冊成一個新用戶,或者只查找包。
命令行界面要運行 CLI,只需執行:
npm
注意,NPM 是與 Node.js 二進制文件捆綁在一起的,所以不必安裝它 - 但是,如果想使用指定的 npm 版本,可以更新它。如果想安裝 npm 第三版,那么就可以執行:npm install npm@3 -g。
使用 NPM在上一章 開始使用 Node.js 中,當創建 package.json 文件時,已經遇到了 NPM。下面我們繼續擴展知識!
添加依賴本節將學習如何給應用程序添加運行時依賴。
有了 package.json 文件之后,就可以給應用程序添加依賴了。下面我們先添加一個!試試下面的命令:
npm install lodash --save
用這一條命令,我們做了兩件事情:首先,lodash 被下載,并放到 node_modules 文件夾。所有外部依賴都會放在這個文件夾中。一般不會將這個文件夾添加到源代碼管理,所以如果你在用 git,要確保將 lodash 添加到 .gitignore 文件中。
這對你的 .gitignore 是一個好起點。
# Logs logs *.log npm-debug.log* # Runtime data pids *.pid *.seed # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt # node-waf configuration .lock-wscript # Compiled binary addons (http://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules jspm_packages # Optional npm cache directory .npm # Optional REPL history .node_repl_history
現在我們來看看 package.json 文件中有啥變化!文件中出現了一個新屬性dependencies:
"dependencies": { "lodash": "4.6.1" }
這意味著 lodash 版本 4.6.1 現在安裝好了,可以使用了。注意,NPM 遵循 SemVer 規則來控制包的版本。
假設版本號格式為 “主版本號.次版本號.補丁版本號”,當作出不兼容的 API 修改時,增加主版本號;當以向后兼容的方式添加功能時,增加次版本號;當作出向后兼容的錯誤修正時,增加補丁版本號。更多信息參見:http://semver.org/。
既然 lodash 已經可以用了,我們來看看能怎么用!可以像你用自己的模塊一樣的方式用它,不過現在不需要定義路徑,只需要模塊的名稱:
// index.js const _ = require("lodash") _.assign({ "a": 1 }, { "b": 2 }, { "c": 3 }); // → { "a": 1, "b": 2, "c": 3 }添加開發依賴
本節將學習如何把構建時依賴添加到應用中。
在創建 Web 應用程序時,可能需要壓縮 JavaScript 文件,合并 CSS 文件等等。做這種事情的模塊只會在資源構建期間運行,所以運行的應用程序不需要它們。
你可以像這樣安裝這些腳本:
npm install mocha --save-dev
之后,package.json 文件中會出現一個稱為 devDependencies 的新小節。所有帶有 --save-dev 安裝的模塊都會被放在這里 - 它們也會被放在同一 node_modules 目錄中。
NPM 腳本NPM 腳本是一個很強大的概念 - 有了它們相助,就可以創建小的實用工具,甚至構成復雜的構建系統。
最常見的就是 start 和 test 腳本。用 start 腳本可以定義別人如何啟動你的應用程序,用 test 腳本定義如何運行測試。在 package.json 中,它們可以像這樣:
"scripts": { "start": "node index.js", "test": "mocha test", "your-custom-script": "echo npm" }
這里要注意的事情:
start: 很簡單,它只描述應用程序的起點,可以被 npm start 調用。
test: 用途是執行你的測試 - 這里有個陷阱,在本例中 mocha 不需要全局安裝,因為 npm 會在 node_modules/.bin 文件夾下查找它,而 mocha 也會放在這里。它可以用 npm test 調用。
your-custom-script: 任何你想要的東西,你可以挑任何名稱。它可以用 npm run your-custom-script 調用 - 不要忘記 run 部分!
作用域包/私有包起初 NPM 對于模塊名稱有一個全局共享的命名空間 - 在注冊庫中有超過 250,000 個模塊,大部分簡單名稱都已經被采用了。此外,全局命名空間只包含公共模塊。
NPM 通過引入作用域包(Scoped Package)來解決此問題。作用域包有如下命名模式:
@myorg/mypackage
可以采用與以前一樣的方式安裝作用域包:
npm install @myorg/mypackage --save-dev
它會以如下方式出現在 package.json 中:
"dependencies": { "@myorg/mypackage": "^1.0.0" }
不出所料,請求作用域包應該是如下方式:
require("@myorg/mypackage")
下一步:異步編程更多信息,請參考 NPM 作用域模塊文檔。
下一章學習使用回調和 Promises 實現異步編程的原理。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84983.html
摘要:使用一個事件驅動的非阻塞式的模型,讓它輕量而高效。也就是說提供了用編寫服務器的可能性,這種服務器具有令人難以置信的性能。正如官方聲明所說是一個使用與瀏覽器相同引擎的運行時。這意味著有兩個發布版本穩定版和試驗版。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1748原文:https://blog.risingstack.com/nod...
摘要:本教程會學習如何正確組織一個項目的結構,從而在應用程序開始增長時避免混亂。項目結構的五個基本規則組織項目有不少可能的方式并且每種已知的方式都有其興衰。過去在,我們有機會創建各種規模的高效應用程序,也獲得了大量關于項目結構注意事項的見解。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1756原文:https://blog.rising...
摘要:狀態碼描述了請求的結果,它對錯誤處理是必不可少的。響應還沒完成成功這些狀態碼表示請求被接收并正確處理了。服務器錯誤當服務器由于某些錯誤不能完成有效的請求時,就發送這些狀態碼。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1758原文:https://blog.risingstack.com/node-hero-node-js-req...
摘要:本文轉載自眾成翻譯譯者網絡埋伏紀事鏈接原文本章我會指導你啟動一個簡單的服務器,并開始為請求服務。現在,我們開始創建第一個服務器我們將模塊,并將服務器綁定到端口來監聽。必須用如下方式啟動服務器總結本章學習了如何從頭開始創建第一個服務器。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1750原文:https://blog.risings...
摘要:異步編程在傳統編程實踐中,大多數操作都是同步發生的。中的異步編程異步是一種輸入輸出處理的形式,它允許在傳輸完成之前,其它處理能繼續進行。 本文轉載自:眾成翻譯譯者:網絡埋伏紀事鏈接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...
閱讀 647·2021-11-25 09:43
閱讀 1915·2021-11-17 09:33
閱讀 830·2021-09-07 09:58
閱讀 2067·2021-08-16 10:52
閱讀 488·2019-08-30 15:52
閱讀 1729·2019-08-30 15:43
閱讀 992·2019-08-30 15:43
閱讀 2932·2019-08-29 16:41