成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

express簡單總結(jié)

ivyzhang / 2980人閱讀

摘要:介紹如有不詳細(xì)或者不正確的地方多多指正。可以通過官方提供的命令行進(jìn)行安裝,官方目前默認(rèn)的界面文件用格式,建議修改為格式的文件版權(quán)問題,同時(shí)要在中安裝對應(yīng)的包和設(shè)置對應(yīng)的界面引擎解釋器。

express介紹

如有不詳細(xì)或者不正確的地方多多指正。

我們可以拿js與jquery關(guān)系來類比一下:

jQuery是JS在瀏覽器環(huán)境下的封裝庫,把DOM操作,ajax等封裝成了兼容性好,方便使用的方法
node是JS的一個(gè)非瀏覽器運(yùn)行平臺,里面提供API進(jìn)行web服務(wù)器開發(fā),封裝了node關(guān)于web的一些API

兩者有相同之處,express和jQuery都是對自己平臺(node,DOM API)進(jìn)行了封裝
兩者有不同之處,功能范疇完全不一樣。express開發(fā)服務(wù)器,jquery做瀏覽器端操作。

express可以通過官方提供的命令行進(jìn)行安裝,官方目前默認(rèn)的界面文件用jade格式,建議修改為pug格式的文件(jade版權(quán)問題) ,同時(shí)要在package.json中安裝對應(yīng)的npm包和app.js app.set("view engine", "pug")設(shè)置對應(yīng)的界面引擎解釋器。

路由 get請求

路由的使用首先要引入express的路由模塊,express官網(wǎng)的一個(gè)簡單的get請求路由示例

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

// respond with "hello world" when a GET request is made to the homepage
app.get("/", function(req, res) {
  res.send("hello world");
});
post請求

post請求首先要引入bodyparse中間件,它用于解析客戶端請求中的body中的內(nèi)容,
使用express應(yīng)用生成器生成一個(gè)網(wǎng)站,它默認(rèn)已經(jīng)使用了 bodyParser.json 與 bodyParser.urlencoded 的解析功能,除了這兩個(gè),bodyParser還支持對text、raw的解析。

app.use(bodyParser.json())bodyParser.json是用來解析json數(shù)據(jù)格式的
app.use(bodyParser.urlencoded({ extended: false }))bodyParser.urlencoded則是用來解析我們通常的form表單提交的數(shù)據(jù),也就是請求頭中包含這樣的信息: Content-Type: application/x-www-form-urlencoded;

extended:如果設(shè)置為false,那么對URL-encoded的數(shù)據(jù)的解析采用querystring庫,如果設(shè)置為true那么采用qs庫((querystring和qs的不同))

// home.pug
$.ajax({
    url:userPath+"/userinfo-company",
    data:{
        module:"user",
        userId:userId
    },
    type:"POST",
    success:function(res){
        alert(res);
    },
    error:function(error){
        console.log(error);
    }
});

// index.js

var bodyParser = require("body-parser");  // bodyparser中間件
   // bodyParser.json是用來解析json數(shù)據(jù)格式的
   // bodyParser.urlencoded則是用來解析我們通常的form表單提交的數(shù)據(jù),也就是請求頭中包含這樣的信息: Content-Type: application/x-www-form-urlencoded
router.post("/userinfo-company", function(req, res, next) {
    var module = req.body.module;
    var userid = req.body.userId;
    request(
        { 
            url: nodeApi + "/menu/getInfo",
            method: "POST",
            form: {
                module: module,
                userId: userid
            }
        },
        function(error,response,body) {
            if( response.statusCode == 200 ) {
                var tempArr = JSON.parse(body);
            }
        }
    );
})

安全性問題后臺無法讀取到cookie,后面將請求菜單的方法放在了js中,然后在將菜單傳到路由中,通過res.render進(jìn)行動(dòng)態(tài)渲染

router.post("/menu", function(req, res, next) {
    menuArr = JSON.parse(req.body.menuArr);
    res.send("OK");
    
});

后面發(fā)現(xiàn)可以傳遞cookie,但未在項(xiàng)目中使用

默認(rèn)情況下,cookies是禁用的。在defaults或options將jar設(shè)為true,使后續(xù)的請求都使用cookie.

var request = request.defaults({jar: true})
request("http://www.google.com", function () {
    request("http://images.google.com")
})

通過創(chuàng)建request.jar()的新實(shí)例,可以使用定制的cookie,而不是request全局的cookie jar。

var j = request.jar()
var request = request.defaults({jar:j})
request("http://www.google.com", function () {
    request("http://images.google.com")
})

或者

var j = request.jar()
var cookie = request.cookie("your_cookie_here")
j.setCookie(cookie, uri, function (err, cookie){})
request({url: "http://www.google.com", jar: j}, function () {
    request("http://images.google.com")
})

注意,setCookie至少需要三個(gè)參數(shù),最后一個(gè)是回調(diào)函數(shù)。

中間件

Express 是一個(gè)自身功能極簡,完全是由路由和中間件構(gòu)成一個(gè)的web開發(fā)框架:從本質(zhì)上來說,一個(gè) Express 應(yīng)用就是在調(diào)用各種中間件。中間件(Middleware)是一個(gè)函數(shù),如果當(dāng)前中間件沒有終結(jié)請求-響應(yīng)循環(huán),則必須調(diào)用next()方法將控制權(quán)交給下一個(gè)中間件,否則請求就會(huì)掛起。

中間件分為:應(yīng)用級中間件,路由級中間件,錯(cuò)誤處理中間件,內(nèi)置中間件,第三方中間件。

上面用的bodyParser是應(yīng)用級的中間件,router是路由級的中間件,有關(guān)中間件更詳細(xì)的內(nèi)容參見express官網(wǎng)(express中間件)

一些小的注意點(diǎn)

模板引擎前面的縮進(jìn)要么是空格或者是tab,如果兩者混用會(huì)報(bào)錯(cuò)。

express更改路由中的內(nèi)容的時(shí)候必須要重啟本地服務(wù)器。只需要全局安裝supervisor,然后命令行supervisor app.js就可以自動(dòng)重啟。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92537.html

相關(guān)文章

  • Web 實(shí)時(shí)推送技術(shù)的總結(jié)

    摘要:本文對過去和現(xiàn)在流行的實(shí)時(shí)推送技術(shù)進(jìn)行了比較與總結(jié)。以上我們介紹了三種實(shí)時(shí)推送技術(shù),然而各自的缺點(diǎn)很明顯,使用起來并不理想,接下來我們著重介紹另一種技術(shù)它是比較理想的雙向通信技術(shù)。 前言 隨著 Web 的發(fā)展,用戶對于 Web 的實(shí)時(shí)推送要求也越來越高 ,比如,工業(yè)運(yùn)行監(jiān)控、Web 在線通訊、即時(shí)報(bào)價(jià)系統(tǒng)、在線游戲等,都需要將后臺發(fā)生的變化主動(dòng)地、實(shí)時(shí)地傳送到瀏覽器端,而不需要用戶手動(dòng)...

    Rocture 評論0 收藏0
  • [Java] 嘗試詞法分析器的總結(jié)

    摘要:寫在前面由于我對寫解析器只有閱讀了幾篇文章的知識量,因此水平并不是很高,此文權(quán)當(dāng)一次個(gè)人總結(jié),無法保證所涉及的知識點(diǎn)思路完全無誤,如有錯(cuò)誤,還請各位大佬指正。除此之外的狀態(tài)都是不合法的,這也就是有時(shí)候解析類的包比如會(huì)看到的錯(cuò)誤的情況。 寫在前面 由于我對寫解析器只有 閱讀了幾篇文章 的知識量,因此水平并不是很高,此文權(quán)當(dāng)一次個(gè)人總結(jié),無法保證所涉及的知識點(diǎn)、思路完全無誤,如有錯(cuò)誤,還請...

    flybywind 評論0 收藏0
  • 解讀express 4.x源碼(1)

    摘要:在后續(xù)的總結(jié)中,我會(huì)繼續(xù)分析,并準(zhǔn)備將一些值得分析的逐一解讀,也會(huì)涉及一些。從一個(gè)官方示例開始這是官方給出的一個(gè)簡單程序,運(yùn)行后訪問顯示。第一行載入了框架,我們來看源代碼中的。代碼的開始定義了一個(gè)函數(shù),函數(shù)有形參,,為回調(diào)函數(shù)。 這兩天仔細(xì)看了看express的源碼,對其的整個(gè)實(shí)現(xiàn)有了較清晰的認(rèn)識,所以想總結(jié)一下寫出來,如果有什么不對的地方,望指出。 這是第一篇,首先介紹一個(gè)最簡單的...

    summerpxy 評論0 收藏0
  • 后端知識點(diǎn)總結(jié)——NODE.JS基礎(chǔ)

    摘要:后端知識點(diǎn)總結(jié)基礎(chǔ)不是是一種軟件開發(fā)平臺,它的競爭對象歷史第一次有一種語言可以通吃前后端網(wǎng)站阿里云鏡像版本年初年中年底最新版本功能強(qiáng)大可靠,適合大型企業(yè)級項(xiàng)目簡單易用適合互聯(lián)網(wǎng)項(xiàng)目易用適合平臺性能好適合服務(wù)器端密集型項(xiàng)目不適合密集型項(xiàng)目密集 后端知識點(diǎn)總結(jié)——NODE.JS基礎(chǔ) 1.Node.js Node.js不是JS,是一種軟件開發(fā)平臺,它的競爭對象JSP/PHP/ASP.NET...

    Freeman 評論0 收藏0
  • 從零開始編寫React-Express單頁博客應(yīng)用(學(xué)習(xí)總結(jié))

    摘要:單頁博客應(yīng)用編寫總結(jié)很久之前就想寫一個(gè)博客應(yīng)用在一開始想要直接用和模板直接寫但是暑假一開始的時(shí)候不小心入了的坑所以就一不做二不休直接用寫那既然用了不寫個(gè)單頁應(yīng)用也過意不去了不前前后后寫了將近兩個(gè)星期現(xiàn)在看來這其實(shí)是一個(gè)很容易的應(yīng)用但是鑒于 React-Express單頁博客應(yīng)用編寫總結(jié) 很久之前就想寫一個(gè)博客應(yīng)用.在一開始想要直接用express和ejs模板直接寫, 但是暑假一開始的時(shí)...

    Jioby 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<