nodejs框架express快速開始

2022-02-12 10:24:10 字數 4964 閱讀 1558

認識express

建立應用

get請求

簡述中介軟體

all方法

use方法1

use方法2

**函式

獲取主機、路徑名

get請求 - query

get請求 - param

get請求 - params

send

npm提供了大量的第三方模組,其中不乏許多web框架,比如我們本章節要講述的乙個輕量級的web框架 ——— express。

express是乙個簡潔、靈活的node.js web應用開發框架, 它提供一系列強大的功能,比如:模板解析、靜態檔案服務、中介軟體、路由控制等等,並且還可以使用外掛程式或整合其他模組來幫助你建立各種 web和移動裝置應用,是目前最流行的基於node.js的web開發框架,並且支援ejs、jade等多種模板,可以快速地搭建乙個具有完整功能的**。

好,下面我們就開始吧!

1. npm安裝

npm install express

2. 獲取、引用

var express = require('express');

認識了express框架,我們開始建立我們的第乙個express應用。

var express = require('express');

(request, response) );

說明:在後面課程學習中,我們會統一使用80埠用於監聽請求。

新增完畢之後,通過右側欄的「測試位址」來檢視瀏覽器內容,當看到「hello world!」內容就表明乙個簡單的express應用已經建立成功了。

前面我們實現了乙個簡單的express應用,下面我們就開始具體講述它的具體實現,首先我們先來學習express的常用方法。

get方法 —— 根據請求路徑來處理客戶端發出的get請求。

path為請求的路徑,第二個引數為處理請求的**函式,有兩個引數分別是request和response,代表請求資訊和響應資訊。

如下示例:

var express = require('express');

(request, response) );

(request, response) );

(request, response) );

上面示例中,指定了about頁面路徑、根路徑和所有路徑的處理方法。並且在**函式內部,使用http回應的send方法,表示向瀏覽器傳送乙個字串。

參照以上**,試試自己設定乙個get請求路徑,然後瀏覽器訪問該位址是否可以請求成功。

1.什麼是中介軟體?

中介軟體(middleware)就是處理http請求的函式,用來完成各種特定的任務,比如檢查使用者是否登入、分析資料、以及其他在需要最終將資料傳送給使用者之前完成的任務。 它最大的特點就是,乙個中介軟體處理完,可以把相應資料再傳遞給下乙個中介軟體。

2.乙個不進行任何操作、只傳遞request物件的中介軟體,大概是這樣:

function

middleware(request, response, next)

上面**的next為中介軟體的**函式。如果它帶有引數,則代表丟擲乙個錯誤,引數為錯誤文字。

function

middleware(request, response, next)

丟擲錯誤以後,後面的中介軟體將不再執行,直到發現乙個錯誤處理函式為止。如果沒有呼叫next方法,後面註冊的函式也是不會執行的。

如下所示,我們使用all函式在請求之前設定響應頭屬性。

var express = require("express");

(request, response, next) ); //

設定響應頭屬性值

next();

});

(request, response) );

(request, response) );

(request, response) );

上面**引數中的「*」表示對所有路徑有效,這個方法在給特定字首路徑或者任意路徑上處理時會特別有用,不管我們請求任何路徑都會事先經過all函式。

如果所示,如果我們跳過all函式又會怎麼樣呢,自己動手試一試?

use是express呼叫中介軟體的方法,它返回乙個函式。

//可選引數path預設為"/"。

1. 使用中介軟體

如上呢,我們就使用use函式呼叫express中介軟體設定了靜態檔案目錄的訪問路徑(這裡假設為根路徑)。

2. 如何連續呼叫兩個中介軟體呢,如下示例:

var express = require('express');

function

(request, response, next));

function

(request, response));

response.end('示例:連續呼叫兩個中介軟體');

});

**函式的next引數,表示接受其他中介軟體的呼叫,函式體中的next(),表示將請求資料傳遞給下乙個中介軟體。

上面**先呼叫第乙個中介軟體,在控制台輸出一行資訊,然後通過next(),呼叫第二個中介軟體,輸出http回應。由於第二個中介軟體沒有呼叫next方法,所以req物件就不再向後傳遞了。

var express = require("express");

function

(request, response, next)

else

});

function

(request, response, next)

else

});function

(request, response) );

上面**通過request.url屬性,判斷請求的**,從而返回不同的內容。

express**函式有兩個引數,分別是request(簡稱req)和response(簡稱res),request代表客戶端發來的http請求,request代表發向客戶端的http回應,這兩個引數都是物件。示例如下:

function(req,res));

在後面的學習中,我們會經常和它打交道,牢牢記住它的格式吧!

今天我們就先來學習如何使用req物件來處理客戶端發來的http請求。

1. req.host返回請求頭里取的主機名(不包含埠號)。

2. req.path返回請求的url的路徑名。

如下示例:

var express = require('express');

(req, res) );

試一試在瀏覽器中輸入任意乙個請求路徑,通過req檢視主機名或請求路徑。

query是乙個可獲取客戶端get請求路徑引數的物件屬性,包含著被解析過的請求引數物件,預設為{}。

var express = require('express');

(req, res) );

通過req.query獲取get請求路徑的物件引數值。

格式:req.query.引數名;請求路徑如下示例:

例1: /search?n=lenka

req.query.n // "lenka"

例2: /shoes?order=desc&shoe[color]=blue&shoe[type]=converse

req.query.order // "desc"

req.query.shoe.color // "blue"

req.query.shoe.type // "converse"

試一試get請求乙個帶引數路徑,使用「req.query.引數名」方法獲取請求引數值。

和屬性query一樣,通過req.param我們也可以獲取被解析過的請求引數物件的值。

格式:req.param("引數名");請求路徑如下示例:

例1: 獲取請求根路徑的引數值,如/?n=lenka,方法如下:

var express = require('express');

(req, res) );

例2:我們也可以獲取具有相應路由規則的請求物件,假設路由規則為 /user/:name/,請求路徑/user/mike,如下:

(req, res) );

ps:所謂「路由」,就是指為不同的訪問路徑,指定不同的處理方法。

看了上面的示例,試一試使用req.param屬性解析乙個請求路徑物件,並獲取請求引數值。

和param相似,但params是乙個可以解析包含著有複雜命名路由規則的請求物件的屬性。

格式:req.params.引數名;

例1. 如上課時請求根路徑的例子,我們就可以這樣獲取,如下:

var express = require('express');

(req, res) );

檢視執行結果,和param屬性功能是一樣的,同樣獲取name引數值。

(req, res) );

對於請求位址具有路由規則的路徑來說,屬性params比param屬性是不是又強大了那麼一點點呢!

send()方法向瀏覽器傳送乙個響應資訊,並可以智慧型處理不同型別的資料。格式如下:

res.send([body|status],[body]);

1.當引數為乙個string時,content-type預設設定為"text/html"。

res.send('hello world');//hello world

2.當引數為array或object時,express會返回乙個json。

res.send();//

res.send([1,2,3]);//[1,2,3]

3.當引數為乙個number時,並且沒有上面提到的任何一條在響應體裡,express會幫你設定乙個響應體,比如:200會返回字元"ok"。

res.send(200);// ok

res.send(404);// not found

res.send(500);// internal server error

send方法在輸出響應時會自動進行一些設定,比如head資訊、http快取支援等等。

示例:

NodeJS安裝express框架

眾所周知,express是官方唯一推薦的web框架。執行命令 express v 正常情況下回輸出版本號如圖,但有遇到不正常情況的,會提示 express不是內部或外部命令 這樣問題就來了,這是什麼原因呢?有兩種可能 在第二步安裝node是沒有新增環境變數,這種情況把node新增的環境變數即可解決。...

Node js 框架 express 使用

express 4.x 文件 npm install express s e 引入模組並例項化物件 監聽埠 response.end hello world 在設定好後靜態檔案託管目錄後,訪問指定的目錄,就會自動讀取並且返回 js 引入模組 const express require express...

nodeJS之Express框架初步學習

初步學習nodejs的express框架,覺得有必要記錄一下學習過程中遇到的問題和解決的方法,以便加深印象。1.寫了乙個簡單的express框架的demo,在執行的時候,出現了錯誤,找不到express模組。通過查詢和實踐,幾分鐘後解決了這個問題。解決方法是 在當前目錄下執行命令 npm insta...