1. 程式人生 > >Node.js開發入門—Express安裝與使用

Node.js開發入門—Express安裝與使用

之前我們在安裝完Node.js後直接寫了個HelloWorld網站,這次呢,我們使用Node.js的Web框架Express來重寫一下HelloWorld,看看有什麼不同。同時我們還會重寫之前的檔案伺服器,功能更完善而程式碼更簡潔。

安裝 express

為了重寫我們的HelloWorld,我們需要安裝Express模組。Express基於Node.js的一個Web框架,官方網站在這裡:http://expressjs.com/。官網對Express的介紹是:

Fast, unopinionated, minimalist web framework for Node.js

要安裝express模組,直接使用npm命令即可。在命令列環境下不帶引數執行npm命令,即可看到npm的幫助資訊。安裝某個Node.js模組,使用install子命令。“npm install xxx”會將xxx模組安裝到當前路徑下,“npm install -g xxx”則將xxx模組安裝到當前使用者的全域性位置。使用“npm helo install”可以檢視install子命令的細節。要解除安裝一個模組,使用“npm uninstall xxx”,假如你是全域性安裝,則使用“npm uninstall -g xxx”。

在使用npm安裝某個模組時,它會自動解決依賴。

在命令列環境執行下面的命令來安裝express:

注意,我指定了使用淘寶的映象,快一些。

特別說明一下:

很快啦,你就可以看到下面的介面(注意我們安裝的Express版本是4.13.3):

install express

好啦,Express安裝完畢。

需要說明的是,使用-g命令全域性安裝Node.js模組後,需要設定環境變數NODE_PATH,否則在我們使用node命令啟動某個應用時可能會報找不到指定的模組這種錯誤。在我的Windows 7環境下,全域性安裝時npm模組的位置為“C:\Users\Administrator\AppData\Roaming\npm\node_modules”(看上面的圖可知)。至於環境變數的設定,計算機->高階系統設定->高階->環境變數,新增一個名為NODE_PATH的環境變數, 將其值設定為全域性模組的根目錄。設定完成後,重新進入命令列環境即可生效。

提一下,如果要在NODE_PATH中新增多個模組路徑,只需用“;”分隔開即可。具體含義,命令列下執行“node -h”可檢視幫助。

HelloWorld

程式碼就是這麼簡單:

// 引入 express 模組
var express = require('express');

// 建立 express 例項
var app = express();

// 響應HTTP的GET方法
app.get('/', function (req, res) {
  res.send('Hello World!');
});

// 監聽到8000埠
app.listen(8000, function () {
  console.log('Hello World is listening at port 8000');
});

儲存為HelloExpress.js,然後在Node.js的命令列環境下執行“node HelloExpress.js”命令,網站就執行起來了。瀏覽器訪問一下,和上次的示例一樣一樣的。

使用Express有什麼不同

沒有使用Express的程式碼是醬紫的:

// 引入http模組
var http = require("http"); 

// 建立server,指定處理客戶端請求的函式
http.createServer(
    function(request, response) { 
        response.writeHead(200, {"Content-Type": "text/plain"}); 
        response.write("Hello World!"); 
        response.end(); 
    }
).listen(8000); 

console.log("Hello World is listening at port 8000");

上面的程式碼直接使用Node.js帶的http模組來建立HTTP伺服器,指定了一個處理請求的函式。實際應用時,我們需要在這個函式內區分不同的HTTP請求,比如GET、HEAD、POST等。而Express版本的HelloWorld則有所不同,它可以針對每一個路徑和HTTP請求指定響應函式,比如Express版本的HelloWorld例項,只有你在瀏覽器中輸入“http://localhost:8000”時它才會返回“HelloWorld”,如果你在瀏覽器中輸入“http://localhost:8000/abc”,你就看到一條錯誤資訊(會收到404狀態碼,express自動幫你處理了)。這裡邊有一個URL路由(URL routing)的概念。假如把程式碼修改成下面的樣子:

app.get('*', function (req, res) {
  res.send('Hello World!');
});

效果就和使用http模組的版本類似了。因為我使用了“*”作為萬用字元,可以匹配任何路徑。Express的get方法原型如下:

app.METHOD(path, callback [, callback …])

使用express建立HelloExpress

express模組有一個命令列工具express,可以用來生成基於express模組的應用結構(網站結構)。

express 4.x之後,express命令被獨立出來放在了express-generator模組中。我們用下面的命令全域性安裝express這個命令列工具:

npm install -g express-generator

安裝完成後,在命令列環境下執行“express -V”,可以看到express的版本是4.13.1。

好了,現在我們使用express命令來建立一個預設的網站。

在命令列環境下導航到myprojects這個目錄下,執行下面的命令:

express HelloExpress

然後可以看到:

express-create-site

仔細看上面的圖哦,它告訴了我們三類非常重要的資訊:

  • express命令建立的網站的目錄結構以及建立的檔案
  • 安裝依賴(進入到HelloExpress下,執行npm install)
  • 使用npm start啟動網站(express 4.x後)

好啦,我們先安裝依賴。這裡要先提一下HelloExpress目錄下的package.json檔案,其內容如下:

{
  "name": "HelloExpress",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "jade": "~1.11.0",
    "morgan": "~1.6.1",
    "serve-favicon": "~2.3.0"
  }
}

這個檔案定義了一個Node.js應用的基本資訊,我們這次注意的是 dependencies ,它定義了應用依賴的模組。

在HelloExpress下執行“npm install”命令,npm會自動找到package.json,分析它,安裝所有依賴模組。這要花費一些時間,休息一下,去喝杯茶。

看看,下面是安裝結果:

G:\nodejs\myprojects\HelloExpress>npm install
[email protected] node_modules\debug
└── [email protected]

[email protected] node_modules\cookie-parser
├── [email protected]
└── [email protected]

[email protected] node_modules\serve-favicon
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

[email protected] node_modules\morgan
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])

[email protected] node_modules\body-parser
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected])

[email protected] node_modules\express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], http-er
[email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected])

[email protected] node_modules\jade
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected]
1.34, ya[email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected])

G:\nodejs\myprojects\HelloExpress>

有興趣的可以研究下各個依賴模組的資訊,現在我們啟動網站了。執行 npm start 命令,很快就可以看到下面的圖:

start-hello-express

看到上圖,說明網站已正常執行。你可以在瀏覽器裡訪問http://localhost:3000,然後就可以看到這個頁面:

view-hello-express

OK,大功告成。

這個由express generator建立的HelloExpress和我們基於express手動寫的HelloWorld又有一些不同,比如你在瀏覽器位址列裡輸入http://localhost:3000/abc,就會看到一個預設的404頁面,顯示了具體的錯誤資訊。而我們的HelloWorld,顯示的則是“Cannot GET /abc”這個文字串。這就是模板的便利之處,有很多預設處理,可以為我們省很多麻煩。

Express版本的檔案伺服器

express是在Node.js的http的基礎上實現的,相比http模組,封裝更多更適用於web伺服器場景的功能。之前我們在Node.js開發入門——HTTP檔案伺服器裡使用http模組實現了一個簡單的檔案伺服器。那個版本的檔案伺服器還有一個缺陷,就是沒有根據檔名設定HTTP的Content-Type頭部。如果我們使用express來實現檔案伺服器(用到了Request物件的sendFile方法),哈哈,就只有幾行程式碼,還解決了Content-Type問題!

程式碼如下:

var express = require('express');
var app = express();

app.get('*', function(req, res){
    res.sendFile(req.path, {root: __dirname+'/', dotfiles: 'deny'});
});

app.listen(3000);

是不是超級簡單?

其它文章:

相關推薦

Node.js開發入門Express安裝使用

之前我們在安裝完Node.js後直接寫了個HelloWorld網站,這次呢,我們使用Node.js的Web框架Express來重寫一下HelloWorld,看看有什麼不同。同時我們還會重寫之前的檔案伺服器,功能更完善而程式碼更簡潔。 安裝 express

Node js開發入門Express裡的路由和中介軟體

                     我們已經基於Express寫了HelloWorld示例,還使用express generator工具建立了一個HelloExpress專案,但有一些程式碼一直沒有好好解釋,這是因為它們牽涉到路由和中介軟體等概念,三言兩語說不清楚,所以我專門用一篇文章來講路由和中介軟體

Node.js開發入門——MongoDBMongoose

為了儲存網站的使用者資料和業務資料,通常需要一個數據庫。MongoDB和Node.js特別般配,因為MongoDB是基於文件的非關係型資料庫,文件是按BSON(JSON的輕量化二進位制格式)儲存的,增刪改查等管理資料庫的命令和JavaScript語法很像。如果你

Node.js開發入門(一)——安裝Node.js及編輯器配置

Node.js是一個輕鬆構建快速,可擴充套件的網路應用平臺建立在Chrome的JavaScript執行。Node.js使用事件驅動,非阻塞I/O模型,使得它重量輕,高效,完美的資料密集型實時應用程式執行在分散式裝置。 Node.js是讓JavaScript脫離瀏覽器執行

Node js開發入門 使用cookie保持登入

                     這次來做一個網站登入的小例子,後面會用到。這個示例會用到Cookie、HTML表單、POST資料體(body)解析。第一個版本,我們的使用者資料就寫死在js檔案裡。第二個版本會引入MongoDB來儲存使用者資料。示例準備1. 使用express建立應用就下面的命令序列

Node.js開發入門—語音合成示例

出於專案需要,搞了一個語音合成(TTS)的小示例,使用的是OKVoice。 直接上程式碼吧,okVoiceTts.js,內容如下: var http = require('http'); var fs =require('fs'); var crypt

Node.js開發入門—UDP程式設計

Node.js也提供了UDP程式設計的能力,相關類庫在“dgram”模組裡。 與TCP不同,UDP是無連線的,不保障資料的可靠性,不過它的程式設計更為簡單,有時候我們也需要它。比如做APP的統計或者日誌或者流媒體,很多流媒體協議都會用到UDP,網上一搜一大堆。

Node.js開發入門—引入UIBootstrap

很多Web管理系統的側邊選單是可摺疊的(手風琴樣式),我們在前面兩篇文章裡的HTML模板,自己用div、css做了一些處理,可效果不好。所以我請來了一個前端UI框架,UI Bootstrap,來幫忙。別看它名字裡帶一個Bootstrap,但它並不依賴Bootst

Node.js開發入門—HTTP檔案伺服器

HelloWorld示例只有演示意義,這次我們來搞一個實際的例子:檔案伺服器。我們使用Node.js建立一個HTTP協議的檔案伺服器,你可以使用瀏覽器或其它下載工具到檔案伺服器上下載檔案。 用Node.js實現的HTTP檔案伺服器,比我在Qt網路程式設計實戰之

Node.js開發入門—使用http訪問外部世界

Node.js的http模組,不但可以構建伺服器,也可以作為客戶端類庫來訪問別的伺服器。關鍵就在兩個方法: http.request(options[,callback]) http.get(path[,callback]) 除了http,還會用到Fil

Node.js開發入門—使用AngularJS內建服務

在上一篇,“AngularJS簡單示例”中演示了一個非常簡單的使用Angular的小demo,那篇已經太長,原本要介紹的一些內容只好單另開篇了。這些內容,就是如何使用Angular服務。 我們還是基於“AngularJS簡單示例”中的示例來改造一下。新的示例,

【轉】Nodejs學習筆記(一)--- 簡介及安裝Node.js開發環境

ack 目錄 javascrip 難度 時間 網站開發 clas jetbrains 常用 目錄 學習資料 簡介 安裝Node.js npm簡介 開發工具 Sublime Node.js開發環境配置 擴展:安裝多版本管理器 學習資料   1.深入淺出Node.j

node.js上除了Express還有哪些好用的web開發框架

短連接 還要 搭建 ews rect 所有 感到 差異 iss 老司機都有體會, 開發本身沒有多難, 最糾結其實是最初的技術和框架選型, 本沒有絕對的好壞之分, 可一旦選擇了不適合於自己業務場景的框架, 將來木已成舟後開發和維護成本都很高, 等發現不合適的時候更換的

nodejs備忘總結(一) -- nodeexpress安裝配置,新建簡單專案(附安裝配置過程中遇到問題的解決方法)

安裝node 本文以安裝node_v8.9.0為例(win10環境),下載node-v8.9.0-x64.msi外掛 下載後,安裝,安裝目錄預設為C:\Program Files\nodejs 配置環境變數,系統變數->path,新增“C:\Program Files\nodejs\”

iKcamp新書上市《KoaNode.js開發實戰》

內容摘要 Node.js 10已經進入LTS時代!其應用場景已經從腳手架、輔助前端開發(如SSR、PWA等)擴充套件到API中間層、代理層及專業的後端開發。Node.js在企業Web開發領域也日漸成熟,無論是在API中間層,還是在微服務中都得到了非常好的落地。本書將通過Web開發框架Koa

【NodeJS】Node.JS 開發環境安裝

windows ogl rip javascrip nod path chrome 查看 進入 1、前言   簡單的說 Node.js 就是運行在服務端的 JavaScript。  Node.js 是一個基於Chrome JavaScript 運行時建立的一個平臺。

KoaNode.js開發實戰(2)——使用Koa中介軟體獲取響應時間(視訊演示)

學習架構:     在實戰專案中,經常需要記錄下伺服器的響應時間,也就是從伺服器接收到HTTP請求,到最終返回給客戶端之間所耗時長。在Koa應用中,利用中介軟體機制可以很方便的實現這一功能。程式碼如下所示: 01 const koa = require('koa');

Nodejs學習筆記(一)--- 簡介及安裝Node.js開發環境

目錄 學習資料   2.Node.js開發指南 簡介(只撿了我覺得重要的) Node.js是讓Javascript脫離瀏覽器執行在伺服器的一個平臺,不是語言;Node.js採用的Javascript引擎是來自Google Chrome的V8;執行在瀏覽器外不用考慮頭疼的Java

KoaNode.js開發實戰(3)——Nunjucks模板在Koa中的應用(視訊演示)

技術架構: ​   在Koa中應用Nunjucks,需要先把Nunjucks整合為符合Koa規格的中介軟體(Middleware),從本質上來講,整合後的中介軟體的作用是給上下文物件繫結一個render(view, model)方法,這樣,後面的Controller就可以呼叫這個方法來渲染模板

Node.js框架之expresskoa對比分析

提到Node.js開發,不得不提目前炙手可熱的2大框架express和koa。Express誕生已有時日,是一個簡潔而靈活的web開發框架,使用簡單而功能強大。Koa相對更為年輕,是Express框架原班人馬基於ES6新特性重新開發的敏捷開發框架,現在可謂風頭正勁,大有趕超Express之勢。 Exp