就業(yè)班nodejs視頻案例第3天_第1頁(yè)
就業(yè)班nodejs視頻案例第3天_第2頁(yè)
就業(yè)班nodejs視頻案例第3天_第3頁(yè)
就業(yè)班nodejs視頻案例第3天_第4頁(yè)
就業(yè)班nodejs視頻案例第3天_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程名稱第 1 天課堂筆記(本課程共 8 天)前端與移動(dòng)開發(fā)學(xué)院htt目錄目錄2一、3一、Express 框架Express 框架是的 Node 框架,所以和 jQuery、zepto、yui、bootstrap 都不一個(gè)東西。Express 在的受歡迎的程度,和 jQuery 一樣,就是企業(yè)的事實(shí)上的標(biāo)準(zhǔn)。自己可以把第一天的作業(yè),就是那個(gè)靜態(tài)文件服務(wù)給封裝成為模塊。封裝的越多,就自己做出了類似Express 的東西。EXPRESS 的哲學(xué)是在你的想法和服務(wù)器之間充當(dāng)薄薄的一層。這并不意味著他不夠健壯,或者沒(méi)有足夠的有用特性,而是盡量少干預(yù)你,讓你充分表達(dá)自己的,同時(shí)提供一些有用的東西。英語(yǔ)官

2、網(wǎng):ht/中文官網(wǎng):http:/.cn/整體感知,Express 框架。安裝 Express 框架,就是使用 npm令。-save 參數(shù),表示自動(dòng)修改 package.json 文件,自動(dòng)添加依賴項(xiàng)。1var express = require(express); 23var app = express();路由能力:1npm install -save express原生 Node 開發(fā),會(huì)發(fā)現(xiàn)有很多問(wèn)題。比如:呈遞靜態(tài)頁(yè)面很不方便,需要處理每個(gè) HTTP 請(qǐng)求,還要考慮 304 問(wèn)題路由處理代碼不直觀清晰,需要寫很多正則表達(dá)式和字符串函數(shù)不能集中精力寫業(yè)務(wù),要考慮很多其他的東西1var e

3、xpress = require(express); 23var app = express(); 45app.set(view engine,ejs); 6app.get(/,function(req,res)res.render(haha,news : 我是小啊,我也是啊,哈10);模板引擎:1app.use(express.sic(./public);靜態(tài)文件伺服能力:4app.get(/,function(req,res)res.send(你好); 7);8app.get(/haha,function(req,res)res.send(這是 haha 頁(yè)面,); 11);12app.g

4、et(/student/(d10)$/,function(req,res)res.send(學(xué)生信息,學(xué)號(hào) + req.params0); 15);16app.get(/teacher/:gonghao,function(req,res)res.send(老師信息,工號(hào) + req.params.gonghao); 19);2021app.listen(3000);學(xué)習(xí)的是 Express4.X,和 Express3.X 差別非常大。11);1213app.listen(3000);二、路由當(dāng)用 get 請(qǐng)求一個(gè)的時(shí)候,做什么事情:當(dāng)用t一個(gè)的時(shí)候,做什么事情:如果想處理這個(gè)的任何 metho

5、d 的請(qǐng)求,那么寫 all這里的,不分大小寫,也就是說(shuō),你路由是實(shí)際上小寫的也行。所有的 GET 參數(shù),? 后面的都已經(jīng)被忽略。#也被忽略你路由到/a , 實(shí)際/a?id=2&sex=nan 也能被處理。正則表達(dá)式可以被使用。正則表達(dá)式中,未知部分用圓括號(hào)分組,然后可以用 req.params0、1得到。req.params 類數(shù)組對(duì)象。app.get(/AAb,function(req,res)res.send(你好); 3);1app.all(/,function() 23);1app.t(,function(req,res) 23);1app.get(,function(req,res)

6、 23);冒號(hào)是更的寫法。app.get(/student/:id,function(req,res)var id = req.paramsid;3var reg= /d6$/;/正則驗(yàn)證if(reg.test(id)res.send(id);elseres.send(請(qǐng)檢查格式); 89);app.get(/student/(d10)$/,function(req,res)res.send(學(xué)生信息,學(xué)號(hào) + req.params0); 3);表單可以自己提交到自己上。適合進(jìn)行 RESTful 路由設(shè)計(jì)。簡(jiǎn)單說(shuō),就是一個(gè)路徑,但是 http method 不同,對(duì)這個(gè)頁(yè)面的使用也不同。/st

7、udent/345345get學(xué)生信息add添加學(xué)生信息delete刪除學(xué)生新三、中間件如果的 get、t 回調(diào)函數(shù)中,沒(méi)有 next 參數(shù),那么就匹配上第一個(gè)路由,就不會(huì)往下匹配了。如果想往下匹配的話,那么需要寫 next()app.get(/,function(req,res,next)console.log(1);next();4);5app.get(/,function(req,res)console.log(2); 8);app.get(/,function(req,res)res.render(form); 3);4app.t(/,function(req,res)/將數(shù)據(jù)添加進(jìn)入

8、數(shù)據(jù)庫(kù)res.send(成功); 8);下面兩個(gè)路由,感覺(jué)沒(méi)有關(guān)系:但是實(shí)際上了,因?yàn)?admin 可以當(dāng)做用戶名 login 可以當(dāng)做 id。app.get(/:username/:id,function(req,res)console.log(1);res.send(用戶信息 + req.params.username); 4);5app.get(/admin/login,function(req,res)console.log(2);res.send(管理員登錄); 9);解決方法 1:交換位置。 也就是說(shuō),express 中所有的路由(中間件)的順序。匹配上第一個(gè),就不會(huì)往下匹配了。具

9、體的往上寫,抽象的往下寫。解決方法 2:路由 get、t 這些東西,就是中間件,中間件講究順序,匹配上第一個(gè)之后,就不會(huì)往后匹配了。next 函數(shù)才能夠繼續(xù)往后匹配。app.get(/:username/:id,function(req,res,next)var username = req.params.username;/檢索數(shù)據(jù)庫(kù),如果 username 不存在,那么 next()if(檢索數(shù)據(jù)庫(kù))console.log(1);res.send(用戶信息);elsenext();910);11app.get(/admin/login,function(req,res)console.lo

10、g(2);res.send(管理員登錄); 15);app.get(/admin/login,function(req,res)console.log(2);res.send(管理員登錄); 4);5app.get(/:username/:id,function(req,res)console.log(1);res.send(用戶信息 + req.params.username); 9);app.use()也是一個(gè)中間件。與 get、t 不同的是,他的不是精確匹配的。而是能夠有小文件夾拓展的。比如:如果寫一個(gè)/app.use()就給了增加一些特定功能的便利場(chǎng)所。實(shí)際上 app.use()的東西

11、,基本上都從第能得到。大多數(shù)情況下,渲染內(nèi)容用 res.render(),將會(huì)根據(jù)views 中的模板文件進(jìn)行渲染。如果不想使用 views文件夾,想自己設(shè)置文件夾名字,那么 app.set(views,aaaa);如果想寫一個(gè)快速測(cè)試頁(yè),當(dāng)然可以使用 res.send()。這個(gè)函數(shù)將根據(jù)內(nèi)容,自動(dòng)幫設(shè)置了Content-Type 頭部和 200 狀態(tài)碼。send()只能用一次,和 end 一樣。和 end 不一樣在哪里?能夠自動(dòng)設(shè)置 MIME類型。如果想使用不同的狀態(tài)碼,可以:res.sus(404).send(Sorry, we cannot findt!);如果想使用不同的 Conten

12、t-Type,可以:res.set(Content-Type, text/html);/當(dāng)你不寫路徑的時(shí)候,實(shí)際上就相當(dāng)于/,就是所有app.use(function(req,res,next)console.log(new Date();next();5);app.use(/admin,function(req,res)res.write(req.originalUrl + n);/admin/aa/bb/cc/ddres.write(req.baseUrl + n);/adminres.write(req.path + n);/aa/bb/cc/ddres.end(你好); 6);四、GET 請(qǐng)求和T 請(qǐng)求的參數(shù)GET 請(qǐng)求的參數(shù)在 URL 中,在原生 Node 中,需要使用 url 模塊來(lái)識(shí)別參數(shù)字符串。在 Express 中,不需要使用 url 模塊了??梢灾苯邮褂?reuery 對(duì)象。T 請(qǐng)求在 express 中不能直接獲得,必須使用 body-parser 模塊。使用后,將可以用 req.body 得到參數(shù)。但是如果表單中含有文件上傳,那么還是需要使用 formidable 模塊。Node 中全是回調(diào)函數(shù),所以法封裝。自己封裝的函數(shù),里面如果有異步的方法,比如 I/O,那么

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論