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