先決條件: | 知道如何打開終端/命令行。 知道如何在開發(fā)計算機的操作系統(tǒng)上安裝軟件包。 |
---|---|
目的: | 在您的計算機上為Express(X.XX)設(shè)置開發(fā)環(huán)境。 |
和 可以非常容易地設(shè)置您的計算機,以便開始開發(fā)Web應用程序。 本節(jié)提供了所需工具的概述,解釋了在Ubuntu,Mac OS X和Windows上安裝Node(和Express)的一些最簡單的方法,并說明如何測試安裝。
開發(fā)環(huán)境包括安裝 Nodejs , NPM包管理器和 >在本地計算機上。
包管理器是從預先準備的二進制包,安裝程序,操作系統(tǒng)包管理器或從源(如下面部分所示)安裝的。 網(wǎng)絡(luò)應用程序(以及其他庫,如模板引擎,數(shù)據(jù)庫驅(qū)動程序,身份驗證中間件,中間件以提供靜態(tài)文件)的依賴關(guān)系, 等等。)
是 href ="/ en-US / Apps / Fundamentals / Modern_web_app_architecture / MVC_architecture"> MVC模式。 應用程序生成器是可選的,因為您不需要使用此工具來創(chuàng)建使用Express的應用程序,或構(gòu)造具有相同體系結(jié)構(gòu)布局或依賴關(guān)系的Express應用程序。 我們將使用它,因為它使入門容易得多,并促進模塊化應用程序結(jié)構(gòu)。
注意:與其他一些網(wǎng)絡(luò)框架不同,開發(fā)環(huán)境不包含單獨的開發(fā)網(wǎng)絡(luò)服務器。 在 / 網(wǎng)絡(luò)應用程序創(chuàng)建并運行自己的web服務器!
還有其他外圍工具是典型開發(fā)環(huán)境的一部分,包括文本編輯器或用于編輯代碼的IDE,以及源代碼控制管理工具,例如 ://git-scm.com/"class ="external"> Git 安全管理您的代碼的不同版本。 我們假設(shè)您已經(jīng)安裝了這些工具(特別是文本編輯器)。
可以在Windows,Mac OS X,Linux,Docker等許多"風格"上運行(nodejs上有一個完整的列表 / en / download /"class ="external">下載頁)。 幾乎任何個人計算機應該具有在開發(fā)期間運行Node所必需的性能。
在本文中,我們提供了針對Windows,Mac OS X和Ubuntu Linux的安裝說明。
有很多版本的Node - 較新的版本包含錯誤修復,支持更多最新版本的ECMAScript (JavaScript)標準,以及對Node API的改進。
一般來說,您應該使用最新的 LTS(長期支持)版本,因為這將比"當前"版本更穩(wěn)定,但仍具有相對較新的功能(仍在積極維護)。 如果您需要LTS版本中不存在的功能,則應使用當前版本。
對于 ,您應始終使用最新版本。
其他依賴項,例如數(shù)據(jù)庫驅(qū)動程序,模板引擎,認證引擎等是應用程序的一部分,并且使用NPM包管理器導入到應用程序環(huán)境中。 我們將在后面的特定于應用程序的文章中討論它們。
要使用Express ,您必須先安裝 Nodejs 和 節(jié)點程序包管理器(NPM)。 以下部分介紹了在Ubuntu Linux 16.04,Mac OS X和Windows 10上安裝Nodejs的長期支持(LTS)版本的最簡單方法。
提示:以下部分顯示了在我們的目標操作系統(tǒng)平臺上安裝 Node 和 NPM 的最簡單方法。 如果您使用其他操作系統(tǒng),或者只想查看當前平臺的一些其他方法,請參閱 >通過軟件包管理器安裝Node.js (nodejs.org)。
在Windows和Mac OS X上安裝 Node 和 NPM 非常簡單,因為您只需使用提供的安裝程序:
安裝最新的LTS版本的Node 6.x最簡單的方法是使用包管理器從Ubuntu 二進制分發(fā)庫獲取它。 這可以很簡單地通過在終端上運行以下兩個命令來完成:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs
警告:不要直接從正常的Ubuntu存儲庫安裝,因為它們包含非常舊版本的節(jié)點。
安裝測試該節(jié)點的最簡單方法是在終端/命令提示符中運行"version"命令,并檢查是否返回了版本字符串:
>node -v v6.9.1
還應安裝 Nodejs 包管理器 NPM ,并可以以相同的方式進行測試:
>npm -v 3.10.8
作為一個稍微更激動人心的測試,讓我們創(chuàng)建一個非常基本的"純節(jié)點"服務器,當您在瀏覽器中訪問正確的URL時,在瀏覽器中打印出"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/')
代碼導入"http"模塊,并使用它來創(chuàng)建一個服務器( createServer()
),用于偵聽端口8000上的HTTP請求。腳本然后向控制臺打印一個消息, 可以使用測試服務器。 createServer()
函數(shù)將一個回調(diào)函數(shù)作為參數(shù),該函數(shù)在接收到HTTP請求時被調(diào)用 - 這只返回HTTP狀態(tài)碼為200("OK")的響應,而plain 文本"Hello World"。
請注意:如果您不確切地了解這段代碼的作用,請不要擔心! 一旦我們開始使用Express,我們將更詳細地解釋我們的代碼!
node
along with the script name in your command prompt:>node hellonode.js Server running at http://127.0.0.1:8000/
在 本身旁邊, NPM 是使用的最重要工具, 節(jié)點應用程序。 NPM用于獲取應用程序開發(fā),測試和/或生產(chǎn)所需的任何包(JavaScript庫),并且還可用于運行開發(fā)過程中使用的測試和工具。
注意:從Node的角度來看, Express 只是另一個包,您需要使用NPM安裝,然后在您自己的代碼中使用。
您可以手動使用NPM單獨提取每個所需的包。 通常,我們使用名為 package.json 的純文本定義文件來管理依賴關(guān)系。 此文件列出了特定JavaScript"包"的所有依賴關(guān)系,包括包的名稱,版本,描述,要執(zhí)行的初始文件,生產(chǎn)依賴關(guān)系,開發(fā)依賴關(guān)系,它可以使用的節(jié)點版本等 。 package.json 文件應該包含NPM需要獲取和運行應用程序的所有內(nèi)容(如果您正在編寫一個可重復使用的庫,可以使用此定義將您的包上傳到npm respository并使其可用 其他用戶)。
以下步驟說明如何使用NPM下載軟件包,將其保存到項目依賴項中,然后在Node應用程序中要求它。
注意:在此處,我們將顯示抓取并安裝 Express 包的說明。 稍后,我們將介紹如何使用快速應用程序生成器指定此程序包及其他程序。 提供此部分是因為理解NPM如何工作以及應用程序生成器正在創(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
),您將看到接受的默認值,以許可證結(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應用程序。 這將導入"express"模塊,并使用它創(chuàng)建一個服務器( app
),用于偵聽端口8000上的HTTP請求,并向控制臺打印一條消息,說明可用于測試服務器的瀏覽器URL 。 app.get()
函數(shù)僅響應具有指定的URL路徑(\'/\')的HTTP GET
請求,在這種情況下,通過調(diào)用函數(shù)發(fā)送 > Hello World!消息。
在"myapp"應用程序目錄的根目錄中創(chuàng)建一個名為 index.js 的文件,并為其提供上面顯示的內(nèi)容。
>node index.js Server running at http://127.0.0.1:8000/
如果一個依賴關(guān)系只在開發(fā)過程中使用,你應該將它保存為一個"開發(fā)依賴"(這樣你的軟件包用戶不必在生產(chǎn)環(huán)境中安裝它)。 例如,要使用受歡迎的JavaScript Linting工具 eslint ,您將調(diào)用NPM,如下所示:
npm install --save-dev eslint
然后,以下條目將添加到應用程序的 package.json ::
"devDependencies": { "eslint": "^3.10.0" }
請注意:" Linters "是執(zhí)行靜態(tài)分析的工具 在軟件上,以便識別和報告遵守/不遵守一些編碼最佳實踐。
除了定義和獲取依賴項之外,您還可以在 package.json 文件中定義命名的腳本,并調(diào)用NPM以使用 docs.npmjs.com/cli/run-script"class ="external"> run-script 命令。 這種方法通常用于自動運行測試和開發(fā)或構(gòu)建工具鏈的部分(例如,運行工具以縮小JavaScript,縮小圖像,LINT /分析您的代碼等)。
注意:任務跑步者,如 Gulp 和 /"class ="external"> Grunt 也可以用來運行測試和其他外部工具。
例如,要定義腳本以運行我們在上一節(jié)中指定的 eslint 開發(fā)依賴項,我們可以將以下腳本塊添加到我們的 package.json 文件中(假設(shè) 我們的應用程序源在一個文件夾/ src / js):
"scripts": { ... "lint": "eslint src/js" ? ... }
為了進一步解釋, eslint src / js
是一個命令,我們可以在終端/命令行中輸入 eslint
對包含在 src
/ js 目錄。 將上面的內(nèi)容包含在我們應用程序的package.json文件中,為此命令提供了一個快捷方式 - lint
。
然后,我們可以使用NPM運行 eslint :
npm run-script lint
# OR (using the alias)
npm run lint
此示例可能看起來不比原始命令短,但您可以在您的npm腳本中包括更大的命令,包括多個命令鏈。 您可以標識一個運行所有測試的單個npm腳本。
Express應用程序生成器工具生成Express應用程序"框架"。 您可以如圖所示使用NPM安裝生成器( -g
標志全局安裝該工具,以便您可以從任何地方調(diào)用它):
npm install express-generator -g
要使用默認設(shè)置創(chuàng)建名為"helloworld"的 Express 應用程序,請導航至您要創(chuàng)建的應用程序并運行應用程序,如圖所示:
express helloworld
注意:您還可以指定要使用的模板庫以及一些其他設(shè)置。 使用 help
命令查看所有選項:
express --help
NPM將在您當前位置的子文件夾中創(chuàng)建新的Express應用程序,在控制臺上顯示構(gòu)建進度。 完成后,該工具將顯示您需要輸入的命令以安裝Node依賴項并啟動應用程序。
新應用程式的根目錄中會有一個 package.json 檔案。 您可以打開此查看安裝了哪些依賴項,包括Express和模板庫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應用程序的所有依賴關(guān)系,如圖所示:
cd helloworld npm install
然后運行應用程序(這些命令對于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
打開瀏覽器并導航到 http://127.0.0.1:3000/ 查看默認的快速歡迎頁面。
; width:675px;">
當我們來到關(guān)于生成一個框架應用程序的文章時,我們將更多地討論生成的應用程序。
您現(xiàn)在已在您的計算機上啟動并運行了一個可用于創(chuàng)建Express Web應用程序的Node開發(fā)環(huán)境。 您還了解了如何使用NPM將Express導入到應用程序中,以及如何使用Express Application Generator工具創(chuàng)建應用程序,然后運行它們。
在下一篇文章中,我們開始通過教程構(gòu)建一個使用此環(huán)境和關(guān)聯(lián)工具的完整的Web應用程序。
更多建議: