先決條件: | 知道如何打開終端/命令行。 知道如何在開發(fā)計(jì)算機(jī)的操作系統(tǒng)上安裝軟件包。 |
---|---|
目的: | 在您的計(jì)算機(jī)上為Express(X.XX)設(shè)置開發(fā)環(huán)境。 |
和 可以非常容易地設(shè)置您的計(jì)算機(jī),以便開始開發(fā)Web應(yīng)用程序。 本節(jié)提供了所需工具的概述,解釋了在Ubuntu,Mac OS X和Windows上安裝Node(和Express)的一些最簡(jiǎn)單的方法,并說(shuō)明如何測(cè)試安裝。
開發(fā)環(huán)境包括安裝 Nodejs , NPM包管理器和 >在本地計(jì)算機(jī)上。
包管理器是從預(yù)先準(zhǔn)備的二進(jìn)制包,安裝程序,操作系統(tǒng)包管理器或從源(如下面部分所示)安裝的。 網(wǎng)絡(luò)應(yīng)用程序(以及其他庫(kù),如模板引擎,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,身份驗(yàn)證中間件,中間件以提供靜態(tài)文件)的依賴關(guān)系, 等等。)
是 href ="/ en-US / Apps / Fundamentals / Modern_web_app_architecture / MVC_architecture"> MVC模式。 應(yīng)用程序生成器是可選的,因?yàn)槟恍枰褂么斯ぞ邅?lái)創(chuàng)建使用Express的應(yīng)用程序,或構(gòu)造具有相同體系結(jié)構(gòu)布局或依賴關(guān)系的Express應(yīng)用程序。 我們將使用它,因?yàn)樗谷腴T容易得多,并促進(jìn)模塊化應(yīng)用程序結(jié)構(gòu)。
注意:與其他一些網(wǎng)絡(luò)框架不同,開發(fā)環(huán)境不包含單獨(dú)的開發(fā)網(wǎng)絡(luò)服務(wù)器。 在 / 網(wǎng)絡(luò)應(yīng)用程序創(chuàng)建并運(yùn)行自己的web服務(wù)器!
還有其他外圍工具是典型開發(fā)環(huán)境的一部分,包括文本編輯器或用于編輯代碼的IDE,以及源代碼控制管理工具,例如 ://git-scm.com/"class ="external"> Git 安全管理您的代碼的不同版本。 我們假設(shè)您已經(jīng)安裝了這些工具(特別是文本編輯器)。
可以在Windows,Mac OS X,Linux,Docker等許多"風(fēng)格"上運(yùn)行(nodejs上有一個(gè)完整的列表 / en / download /"class ="external">下載頁(yè))。 幾乎任何個(gè)人計(jì)算機(jī)應(yīng)該具有在開發(fā)期間運(yùn)行Node所必需的性能。
在本文中,我們提供了針對(duì)Windows,Mac OS X和Ubuntu Linux的安裝說(shuō)明。
有很多版本的Node - 較新的版本包含錯(cuò)誤修復(fù),支持更多最新版本的ECMAScript (JavaScript)標(biāo)準(zhǔn),以及對(duì)Node API的改進(jìn)。
一般來(lái)說(shuō),您應(yīng)該使用最新的 LTS(長(zhǎng)期支持)版本,因?yàn)檫@將比"當(dāng)前"版本更穩(wěn)定,但仍具有相對(duì)較新的功能(仍在積極維護(hù))。 如果您需要LTS版本中不存在的功能,則應(yīng)使用當(dāng)前版本。
對(duì)于 ,您應(yīng)始終使用最新版本。
其他依賴項(xiàng),例如數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,模板引擎,認(rèn)證引擎等是應(yīng)用程序的一部分,并且使用NPM包管理器導(dǎo)入到應(yīng)用程序環(huán)境中。 我們將在后面的特定于應(yīng)用程序的文章中討論它們。
要使用Express ,您必須先安裝 Nodejs 和 節(jié)點(diǎn)程序包管理器(NPM)。 以下部分介紹了在Ubuntu Linux 16.04,Mac OS X和Windows 10上安裝Nodejs的長(zhǎng)期支持(LTS)版本的最簡(jiǎn)單方法。
提示:以下部分顯示了在我們的目標(biāo)操作系統(tǒng)平臺(tái)上安裝 Node 和 NPM 的最簡(jiǎn)單方法。 如果您使用其他操作系統(tǒng),或者只想查看當(dāng)前平臺(tái)的一些其他方法,請(qǐng)參閱 >通過(guò)軟件包管理器安裝Node.js (nodejs.org)。
在Windows和Mac OS X上安裝 Node 和 NPM 非常簡(jiǎn)單,因?yàn)槟恍枋褂锰峁┑陌惭b程序:
安裝最新的LTS版本的Node 6.x最簡(jiǎn)單的方法是使用包管理器從Ubuntu 二進(jìn)制分發(fā)庫(kù)獲取它。 這可以很簡(jiǎn)單地通過(guò)在終端上運(yùn)行以下兩個(gè)命令來(lái)完成:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs
警告:不要直接從正常的Ubuntu存儲(chǔ)庫(kù)安裝,因?yàn)樗鼈儼浅Ef版本的節(jié)點(diǎn)。
安裝測(cè)試該節(jié)點(diǎn)的最簡(jiǎn)單方法是在終端/命令提示符中運(yùn)行"version"命令,并檢查是否返回了版本字符串:
>node -v v6.9.1
還應(yīng)安裝 Nodejs 包管理器 NPM ,并可以以相同的方式進(jìn)行測(cè)試:
>npm -v 3.10.8
作為一個(gè)稍微更激動(dòng)人心的測(cè)試,讓我們創(chuàng)建一個(gè)非?;镜?純節(jié)點(diǎn)"服務(wù)器,當(dāng)您在瀏覽器中訪問(wèn)正確的URL時(shí),在瀏覽器中打印出"Hello World":
//Load HTTP module var http = require("http"); //Create HTTP server and listen on port 8000 for requests http.createServer(function (request, response) { // Set the response HTTP header with HTTP status and Content type response.writeHead(200, {'Content-Type': 'text/plain'}); // Send the response body "Hello World" response.end('Hello World\n'); }).listen(8000); // Print URL for accessing server console.log('Server running at http://127.0.0.1:8000/')
代碼導(dǎo)入"http"模塊,并使用它來(lái)創(chuàng)建一個(gè)服務(wù)器( createServer()
),用于偵聽(tīng)端口8000上的HTTP請(qǐng)求。腳本然后向控制臺(tái)打印一個(gè)消息, 可以使用測(cè)試服務(wù)器。 createServer()
函數(shù)將一個(gè)回調(diào)函數(shù)作為參數(shù),該函數(shù)在接收到HTTP請(qǐng)求時(shí)被調(diào)用 - 這只返回HTTP狀態(tài)碼為200("OK")的響應(yīng),而plain 文本"Hello World"。
請(qǐng)注意:如果您不確切地了解這段代碼的作用,請(qǐng)不要擔(dān)心! 一旦我們開始使用Express,我們將更詳細(xì)地解釋我們的代碼!
node
along with the script name in your command prompt:>node hellonode.js Server running at http://127.0.0.1:8000/
在 本身旁邊, NPM 是使用的最重要工具, 節(jié)點(diǎn)應(yīng)用程序。 NPM用于獲取應(yīng)用程序開發(fā),測(cè)試和/或生產(chǎn)所需的任何包(JavaScript庫(kù)),并且還可用于運(yùn)行開發(fā)過(guò)程中使用的測(cè)試和工具。
注意:從Node的角度來(lái)看, Express 只是另一個(gè)包,您需要使用NPM安裝,然后在您自己的代碼中使用。
您可以手動(dòng)使用NPM單獨(dú)提取每個(gè)所需的包。 通常,我們使用名為 package.json 的純文本定義文件來(lái)管理依賴關(guān)系。 此文件列出了特定JavaScript"包"的所有依賴關(guān)系,包括包的名稱,版本,描述,要執(zhí)行的初始文件,生產(chǎn)依賴關(guān)系,開發(fā)依賴關(guān)系,它可以使用的節(jié)點(diǎn)版本等 。 package.json 文件應(yīng)該包含NPM需要獲取和運(yùn)行應(yīng)用程序的所有內(nèi)容(如果您正在編寫一個(gè)可重復(fù)使用的庫(kù),可以使用此定義將您的包上傳到npm respository并使其可用 其他用戶)。
以下步驟說(shuō)明如何使用NPM下載軟件包,將其保存到項(xiàng)目依賴項(xiàng)中,然后在Node應(yīng)用程序中要求它。
注意:在此處,我們將顯示抓取并安裝 Express 包的說(shuō)明。 稍后,我們將介紹如何使用快速應(yīng)用程序生成器指定此程序包及其他程序。 提供此部分是因?yàn)槔斫釴PM如何工作以及應(yīng)用程序生成器正在創(chuàng)建什么非常有用。
mkdir myapp cd myapp
init
" command to create a package.json file for your application.?This command prompts you for a number of things, including?the name and version of your application and the name of the initial entry point file (by default this is index.js). For now, just accept the defaults:npm init
如果顯示 package.json 文件( cat package.json
),您將看到接受的默認(rèn)值,以許可證結(jié)尾。
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
--save
option if for some reason you don't want your package.json?to include Express).npm install express --save
package.json 的依賴性部分現(xiàn)在將顯示在 package.json 文件的末尾。
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.14.0" } }
require()
function as shown below.var express = require('express') var app = express() app.get('/', function (req, res) { res.send('Hello World!') }) app.listen(
8000, function () { console.log('Example app listening on port
8000!') })
此代碼顯示最小的"HelloWorld"Express Web應(yīng)用程序。 這將導(dǎo)入"express"模塊,并使用它創(chuàng)建一個(gè)服務(wù)器( app
),用于偵聽(tīng)端口8000上的HTTP請(qǐng)求,并向控制臺(tái)打印一條消息,說(shuō)明可用于測(cè)試服務(wù)器的瀏覽器URL 。 app.get()
函數(shù)僅響應(yīng)具有指定的URL路徑(\'/\')的HTTP GET
請(qǐng)求,在這種情況下,通過(guò)調(diào)用函數(shù)發(fā)送 > Hello World!消息。
在"myapp"應(yīng)用程序目錄的根目錄中創(chuàng)建一個(gè)名為 index.js 的文件,并為其提供上面顯示的內(nèi)容。
>node index.js Server running at http://127.0.0.1:8000/
如果一個(gè)依賴關(guān)系只在開發(fā)過(guò)程中使用,你應(yīng)該將它保存為一個(gè)"開發(fā)依賴"(這樣你的軟件包用戶不必在生產(chǎn)環(huán)境中安裝它)。 例如,要使用受歡迎的JavaScript Linting工具 eslint ,您將調(diào)用NPM,如下所示:
npm install --save-dev eslint
然后,以下條目將添加到應(yīng)用程序的 package.json ::
"devDependencies": { "eslint": "^3.10.0" }
請(qǐng)注意:" Linters "是執(zhí)行靜態(tài)分析的工具 在軟件上,以便識(shí)別和報(bào)告遵守/不遵守一些編碼最佳實(shí)踐。
除了定義和獲取依賴項(xiàng)之外,您還可以在 package.json 文件中定義命名的腳本,并調(diào)用NPM以使用 docs.npmjs.com/cli/run-script"class ="external"> run-script 命令。 這種方法通常用于自動(dòng)運(yùn)行測(cè)試和開發(fā)或構(gòu)建工具鏈的部分(例如,運(yùn)行工具以縮小JavaScript,縮小圖像,LINT /分析您的代碼等)。
注意:任務(wù)跑步者,如 Gulp 和 /"class ="external"> Grunt 也可以用來(lái)運(yùn)行測(cè)試和其他外部工具。
例如,要定義腳本以運(yùn)行我們?cè)谏弦还?jié)中指定的 eslint 開發(fā)依賴項(xiàng),我們可以將以下腳本塊添加到我們的 package.json 文件中(假設(shè) 我們的應(yīng)用程序源在一個(gè)文件夾/ src / js):
"scripts": { ... "lint": "eslint src/js" ? ... }
為了進(jìn)一步解釋, eslint src / js
是一個(gè)命令,我們可以在終端/命令行中輸入 eslint
對(duì)包含在 src
/ js 目錄。 將上面的內(nèi)容包含在我們應(yīng)用程序的package.json文件中,為此命令提供了一個(gè)快捷方式 - lint
。
然后,我們可以使用NPM運(yùn)行 eslint :
npm run-script lint
# OR (using the alias)
npm run lint
此示例可能看起來(lái)不比原始命令短,但您可以在您的npm腳本中包括更大的命令,包括多個(gè)命令鏈。 您可以標(biāo)識(shí)一個(gè)運(yùn)行所有測(cè)試的單個(gè)npm腳本。
Express應(yīng)用程序生成器工具生成Express應(yīng)用程序"框架"。 您可以如圖所示使用NPM安裝生成器( -g
標(biāo)志全局安裝該工具,以便您可以從任何地方調(diào)用它):
npm install express-generator -g
要使用默認(rèn)設(shè)置創(chuàng)建名為"helloworld"的 Express 應(yīng)用程序,請(qǐng)導(dǎo)航至您要?jiǎng)?chuàng)建的應(yīng)用程序并運(yùn)行應(yīng)用程序,如圖所示:
express helloworld
注意:您還可以指定要使用的模板庫(kù)以及一些其他設(shè)置。 使用 help
命令查看所有選項(xiàng):
express --help
NPM將在您當(dāng)前位置的子文件夾中創(chuàng)建新的Express應(yīng)用程序,在控制臺(tái)上顯示構(gòu)建進(jìn)度。 完成后,該工具將顯示您需要輸入的命令以安裝Node依賴項(xiàng)并啟動(dòng)應(yīng)用程序。
新應(yīng)用程式的根目錄中會(huì)有一個(gè) package.json 檔案。 您可以打開此查看安裝了哪些依賴項(xiàng),包括Express和模板庫(kù)Jade:
{ "name": "helloworld", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.15.2", "cookie-parser": "~1.4.3", "debug": "~2.2.0", "express": "~4.14.0", "jade": "~1.11.0", "morgan": "~1.7.0", "serve-favicon": "~2.3.0" } }
使用NPM安裝hello world應(yīng)用程序的所有依賴關(guān)系,如圖所示:
cd helloworld npm install
然后運(yùn)行應(yīng)用程序(這些命令對(duì)于Windows和Linux / Mac稍有不同),如下所示:
# Run the helloworld on Windows SET DEBUG=helloworld:* & npm start # Run helloworld on Linux/Mac OS X DEBUG=helloworld:* npm start
DEBUG命令創(chuàng)建有用的日志記錄,產(chǎn)生如下所示的輸出。
>SET DEBUG=helloworld:* & npm start > helloworld@0.0.0 start D:\Github\expresstests\helloworld > node ./bin/www ? helloworld:server Listening on port 3000 +0ms
打開瀏覽器并導(dǎo)航到 http://127.0.0.1:3000/ 查看默認(rèn)的快速歡迎頁(yè)面。
; width:675px;">
當(dāng)我們來(lái)到關(guān)于生成一個(gè)框架應(yīng)用程序的文章時(shí),我們將更多地討論生成的應(yīng)用程序。
您現(xiàn)在已在您的計(jì)算機(jī)上啟動(dòng)并運(yùn)行了一個(gè)可用于創(chuàng)建Express Web應(yīng)用程序的Node開發(fā)環(huán)境。 您還了解了如何使用NPM將Express導(dǎo)入到應(yīng)用程序中,以及如何使用Express Application Generator工具創(chuàng)建應(yīng)用程序,然后運(yùn)行它們。
在下一篇文章中,我們開始通過(guò)教程構(gòu)建一個(gè)使用此環(huán)境和關(guān)聯(lián)工具的完整的Web應(yīng)用程序。
更多建議: