摘要:介紹如有不詳細或者不正確的地方多多指正。可以通過官方提供的命令行進行安裝,官方目前默認的界面文件用格式,建議修改為格式的文件版權問題,同時要在中安裝對應的包和設置對應的界面引擎解釋器。
express介紹
如有不詳細或者不正確的地方多多指正。
我們可以拿js與jquery關系來類比一下:
jQuery是JS在瀏覽器環(huán)境下的封裝庫,把DOM操作,ajax等封裝成了兼容性好,方便使用的方法
node是JS的一個非瀏覽器運行平臺,里面提供API進行web服務器開發(fā),封裝了node關于web的一些API
兩者有相同之處,express和jQuery都是對自己平臺(node,DOM API)進行了封裝
兩者有不同之處,功能范疇完全不一樣。express開發(fā)服務器,jquery做瀏覽器端操作。
express可以通過官方提供的命令行進行安裝,官方目前默認的界面文件用jade格式,建議修改為pug格式的文件(jade版權問題) ,同時要在package.json中安裝對應的npm包和app.js app.set("view engine", "pug")設置對應的界面引擎解釋器。
路由 get請求路由的使用首先要引入express的路由模塊,express官網(wǎng)的一個簡單的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應用生成器生成一個網(wǎng)站,它默認已經(jīng)使用了 bodyParser.json 與 bodyParser.urlencoded 的解析功能,除了這兩個,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:如果設置為false,那么對URL-encoded的數(shù)據(jù)的解析采用querystring庫,如果設置為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進行動態(tài)渲染
router.post("/menu", function(req, res, next) { menuArr = JSON.parse(req.body.menuArr); res.send("OK"); });
后面發(fā)現(xiàn)可以傳遞cookie,但未在項目中使用
默認情況下,cookies是禁用的。在defaults或options將jar設為true,使后續(xù)的請求都使用cookie.
var request = request.defaults({jar: true}) request("http://www.google.com", function () { request("http://images.google.com") })
通過創(chuàng)建request.jar()的新實例,可以使用定制的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至少需要三個參數(shù),最后一個是回調函數(shù)。
中間件Express 是一個自身功能極簡,完全是由路由和中間件構成一個的web開發(fā)框架:從本質上來說,一個 Express 應用就是在調用各種中間件。中間件(Middleware)是一個函數(shù),如果當前中間件沒有終結請求-響應循環(huán),則必須調用next()方法將控制權交給下一個中間件,否則請求就會掛起。
中間件分為:應用級中間件,路由級中間件,錯誤處理中間件,內(nèi)置中間件,第三方中間件。
上面用的bodyParser是應用級的中間件,router是路由級的中間件,有關中間件更詳細的內(nèi)容參見express官網(wǎng)(express中間件)
一些小的注意點模板引擎前面的縮進要么是空格或者是tab,如果兩者混用會報錯。
express更改路由中的內(nèi)容的時候必須要重啟本地服務器。只需要全局安裝supervisor,然后命令行supervisor app.js就可以自動重啟。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92537.html
摘要:本文對過去和現(xiàn)在流行的實時推送技術進行了比較與總結。以上我們介紹了三種實時推送技術,然而各自的缺點很明顯,使用起來并不理想,接下來我們著重介紹另一種技術它是比較理想的雙向通信技術。 前言 隨著 Web 的發(fā)展,用戶對于 Web 的實時推送要求也越來越高 ,比如,工業(yè)運行監(jiān)控、Web 在線通訊、即時報價系統(tǒng)、在線游戲等,都需要將后臺發(fā)生的變化主動地、實時地傳送到瀏覽器端,而不需要用戶手動...
摘要:寫在前面由于我對寫解析器只有閱讀了幾篇文章的知識量,因此水平并不是很高,此文權當一次個人總結,無法保證所涉及的知識點思路完全無誤,如有錯誤,還請各位大佬指正。除此之外的狀態(tài)都是不合法的,這也就是有時候解析類的包比如會看到的錯誤的情況。 寫在前面 由于我對寫解析器只有 閱讀了幾篇文章 的知識量,因此水平并不是很高,此文權當一次個人總結,無法保證所涉及的知識點、思路完全無誤,如有錯誤,還請...
摘要:在后續(xù)的總結中,我會繼續(xù)分析,并準備將一些值得分析的逐一解讀,也會涉及一些。從一個官方示例開始這是官方給出的一個簡單程序,運行后訪問顯示。第一行載入了框架,我們來看源代碼中的。代碼的開始定義了一個函數(shù),函數(shù)有形參,,為回調函數(shù)。 這兩天仔細看了看express的源碼,對其的整個實現(xiàn)有了較清晰的認識,所以想總結一下寫出來,如果有什么不對的地方,望指出。 這是第一篇,首先介紹一個最簡單的...
摘要:后端知識點總結基礎不是是一種軟件開發(fā)平臺,它的競爭對象歷史第一次有一種語言可以通吃前后端網(wǎng)站阿里云鏡像版本年初年中年底最新版本功能強大可靠,適合大型企業(yè)級項目簡單易用適合互聯(lián)網(wǎng)項目易用適合平臺性能好適合服務器端密集型項目不適合密集型項目密集 后端知識點總結——NODE.JS基礎 1.Node.js Node.js不是JS,是一種軟件開發(fā)平臺,它的競爭對象JSP/PHP/ASP.NET...
摘要:單頁博客應用編寫總結很久之前就想寫一個博客應用在一開始想要直接用和模板直接寫但是暑假一開始的時候不小心入了的坑所以就一不做二不休直接用寫那既然用了不寫個單頁應用也過意不去了不前前后后寫了將近兩個星期現(xiàn)在看來這其實是一個很容易的應用但是鑒于 React-Express單頁博客應用編寫總結 很久之前就想寫一個博客應用.在一開始想要直接用express和ejs模板直接寫, 但是暑假一開始的時...
閱讀 3406·2021-11-24 09:39
閱讀 1797·2021-11-17 09:33
閱讀 3503·2021-10-12 10:12
閱讀 5019·2021-09-22 15:51
閱讀 1112·2019-08-30 13:11
閱讀 3572·2019-08-30 10:59
閱讀 564·2019-08-30 10:48
閱讀 1311·2019-08-26 13:48