真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nodejs中Express中間件如何使用-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)nodejs中Express中間件如何使用,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

十余年的魚峰網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整魚峰建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“魚峰網(wǎng)站設(shè)計(jì)”,“魚峰網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Express是一個基于Node.js平臺的web應(yīng)用開發(fā)框架,在Node.js基礎(chǔ)之上擴(kuò)展了web應(yīng)用開發(fā)所需要的基礎(chǔ)功能,從而使得我們開發(fā)Web應(yīng)用更加方便、更加快捷。

舉一個例子:

用node.js實(shí)現(xiàn)一個控制臺打印“hello server”

var http = require('http');
var server = http.createServer(function(req,res){
 console.log("hello server");
});
server.listen(3000);

這樣子的話,當(dāng)我們需要處理各種請求(主要指GET、POST)時,我們需要將所有請求類型處理的代碼寫在createServer包裹的函數(shù)里。

用Express實(shí)現(xiàn)一個控制臺打印“hello server”

var express = require('express');
var app = express();
http.createServer(app);
 
// 處理用戶請求(路由)
app.get("/",function(){
 console.log("hello server");
})

Express處理各種請求是通過Express執(zhí)行函數(shù)去調(diào)用對應(yīng)的方法,這樣是不是更加方便和快捷了。

Express的API文檔完整易懂,2010-01-03陸續(xù)發(fā)布了幾個版本,其中第三版和第四版差異比較大, 主要體現(xiàn)在第三版的中間件基本上都是繼承了connect框架的,而第四版將中間件獨(dú)立出來了,不在依賴connect框架。

說到中間件,官網(wǎng)對它的闡述是這樣的:

“Express是一個自身功能極簡,完全是路由和中間件構(gòu)成一個web開發(fā)框架:從本質(zhì)上來說,一個Express應(yīng)用就是在調(diào)用各種中間件?!?/p>

由此可見,中間件在Express開發(fā)中的重要性,因此這里我們就專門來總結(jié)一下中間件。

一、中間件結(jié)構(gòu)

1、app.use([path],function)

path:是路由的url,默認(rèn)參數(shù)‘/',意義是路由到這個路徑時使用這個中間件

function:中間件函數(shù)

這個中間件函數(shù)可以理解為就是function(request,response,next)

這里安裝是指涉及到第三方中間件的使用時,需要先安裝好,然后在使用。

二、中間件分類

1、內(nèi)置中間件

express.static 是Express目前唯一內(nèi)置的一個中間件。用來處理靜態(tài)資源文件。

什么意思了? 來run一下代碼看看

// index.js
var express = require('express');
var app = express();
 
app.use(express.static(__dirname + '/public'));

啟動服務(wù): node index.js

瀏覽器中訪問: http://localhost:1234/ 展示的/public/index.html內(nèi)容

瀏覽器中訪問: http://localhost:1234/hello.html 展示的/public/hello.html內(nèi)容

2、自定義中間件

在上面中間件結(jié)構(gòu)中,我們知道了,中間件使用時的第二個參數(shù)是一個Function,然而,要自定義一個中間件,就是倒騰一番這個Function。

這個function總共有三個參數(shù)(req,res,next);

當(dāng)每個請求到達(dá)服務(wù)器時,nodejs會為請求創(chuàng)建一個請求對象(request),該請求對象包含客戶端提交上來的數(shù)據(jù)。同時也會創(chuàng)建一個響應(yīng)對象(response),響應(yīng)對象主要負(fù)責(zé)將服務(wù)器的數(shù)據(jù)響應(yīng)到客戶端。而最后一個參數(shù)next是一個方法,因?yàn)橐粋€應(yīng)用中可以使用多個中間件,而要想運(yùn)行下一個中間件,那么上一個中間件必須運(yùn)行next()。

好了,有了一個大概的了解,下面我定義一些中間件來實(shí)現(xiàn)一個路由功能。

var express = require('express');
var app = express();
 
app.use(function(request,response,next){
 if(request.url === '/'){
  response.writeHead(200,{"Content-Type":"text/plain"});
  response.end("This is home\n");
 } else {
  next();
 }
})
app.use(function(request,response,next){
 if(request.url === '/about'){
  response.writeHead(200,{"Content-Type":"text/plain"});
  response.end("This is about\n");
 } else {
  next();
 }
})
app.use(function(request,response,next){
 response.writeHead(404,{"Content-Type":"text/plain"});
 response.end("404 not found!\n");
})
app.listen(1234,'localhost');

瀏覽器中訪問: http://localhost:1234/ 展示This is home

瀏覽器中訪問: http://localhost:1234/about 展示This is about

這樣看是不是使用中間件很輕松就實(shí)現(xiàn)了路由的功能,當(dāng)然,有關(guān)Express的路由可以專門拿出來寫寫,哈哈。

3、第三方中間件

有關(guān)第三方中間件,這里我們分析幾個比較重要和常用的,知道這幾個的使用,其它的也就會了。

body-parser :解析body中的數(shù)據(jù),并將其保存為Request對象的body屬性。

cookie-parser :解析客戶端cookie中的數(shù)據(jù),并將其保存為Request對象的cookie屬性

express-session :解析服務(wù)端生成的sessionid對應(yīng)的session數(shù)據(jù),并將其保存為Request對象的session屬性

query:這個中間件將一個查詢字符串從URL轉(zhuǎn)換為JS對象,并將其保存為Request對象的query屬性。這個中間件在第四個版本中已經(jīng)內(nèi)置了無需安裝。

下面來一個例子,功能是:用戶可否登錄和在服務(wù)端保存登錄態(tài)。

var express = require('express');
// 引入模板引擎
var hbs = require('express-handlebars');
var bodyParser = require('body-parser');
var session = require('express-session');
 
var app = express();
 
// hbs是一個模板引擎
app.engine('hbs',hbs());
app.set('view engine','hbs');
app.set('views','templates');
 
// 數(shù)據(jù)庫讀出來的數(shù)據(jù)
var userArr = ['wpzheng'];
 
app.use(session({secret:'maizidu'}));
app.use(bodyParser.urlencoded({extended:true}));
 
app.get('/', function(request,response,next){
 var username = request.session.username;
 if(username){
  response.send("hello" + username);
 }else{
  response.render('form');
 }
});
 
app.post('/', function(request,response){
  if(userArr.indexOf(request.body.username)>=0){
   request.session.username = request.body.username;
  }else{
   request.session.destroy();
  }
    // response對象的一個方法 重定向作用
  response.redirect('/');
});
app.listen(1234,'localhost');

如果session沒有保存數(shù)據(jù)(測試時可以將服務(wù)關(guān)閉,session就沒有值了,每次向服務(wù)器發(fā)送請求時,服務(wù)會創(chuàng)建一個新的session),就會自動跳到登錄頁面。當(dāng)已登錄過(也就是說有session值),就直接顯示username。

這個例子涉及到模板(hbs)和response的方法(redirect)可以先不管。

三、中間件理解

寫到最后了,回到最開始的問題,你是否理解了什么是Express中間件?

結(jié)合上面講解時給出的例子,我們先來分析一下從瀏覽器地址欄輸入url到客戶端顯示數(shù)據(jù)之間這個過程到底發(fā)生了什么。

nodejs中Express中間件如何使用

瀏覽器向服務(wù)器發(fā)送一個請求后,服務(wù)器直接通過request.定位屬性的方式得到通過request攜帶過去的數(shù)據(jù)(有用戶輸入的數(shù)據(jù)和瀏覽器本身的數(shù)據(jù)信息)。這中間就一定有一個函數(shù)將這些數(shù)據(jù)分類做了處理,已經(jīng)處理好了,最后讓request對象調(diào)用使用,對的,這個處理數(shù)據(jù)處理函數(shù)就是我們要說的 中間件 。由此可見,中間件可以總結(jié)以下幾點(diǎn):

1、封裝了一些處理一個完整事件的功能函數(shù)。

2、非內(nèi)置的中間件需要通過安裝后,require到文件就可以運(yùn)行。

3、封裝了一些或許復(fù)雜但肯定是通用的功能。

以上就是nodejs中Express中間件如何使用,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文題目:nodejs中Express中間件如何使用-創(chuàng)新互聯(lián)
分享URL:http://weahome.cn/article/dsgeeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部