初步瞭解Express(基於node.js的後端框架)

Express:基於node.js的後端框架。介紹javascript

實現一個HELLO WORLD

使用步驟: 1.mkdir app , cd app 2. npm init 3. npm i express -s 4. hello worldcss

var express = require('express');//引入exrpess
var app = express();//建立實例

//路由。當url匹配這裏的路由,就交由後面的函數處理
app.get('/', function (req, res) {
  res.send('Hello World!');
});

//建立server
var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});
複製代碼

咋看上去跟使用node.js建立一個靜態server有點像呢?emm由於express是基於node.js平臺。 上面本質上其實就是建立了一個本地server,監聽3000端口。server獲取的url的後綴,進行路由匹配,而後交給對應的函數進行處理。html

Express應用生成器瞭解一下?

上面的服務器看上去好像很單薄呀,若是我要實現登陸註冊等等豈不是要本身寫一大堆? Express應用生成器(express-generator)瞭解一下java

  1. npm i express-generator -s 介紹
  2. 命令範例:Usage: express [options] [dir]
  3. express --ejs .(在當前目錄下,建立腳手架,選擇模板爲.ejs)

[圖片上傳失敗...(image-568d2c-1525946563984)] 這時候咱們的目錄下新增不少文件,檢查一下package.json,發現咱們新依賴了不少東西,先安裝好各類依賴。npm inode

  1. 執行命令啓動服務器node bin/www,默認端口是3000,若是你想修改端口的話能夠在命令前面指定端口PORT=XXXX

服務器首頁
此時目錄結構已經比剛剛的完善不少了。

瞭解一下app.js?

  • bin/www 其實是用來搭建server,監聽端口。當收到請求的時候,則交給app.js來處理。

bin/www

  • app.js 其實是網站的主體,裏面包括了這個網站依賴的內容、處理請求的邏輯和執行過程。 app.js裏面的app實際上就是一個express的一個實例。

app.js

  1. 設置視圖引擎爲ejs
  2. 根據業務邏輯設置中間件處理請求的流程。
  3. 設置靜態資源目錄,當請求匹配靜態資源目錄下的路徑的時候,則會返回靜態資源內容。(例如當請求xxx.com/css/style.css的時候,剛好咱們的public目錄下有css文件夾,裏面存放着style.css。服務器就會返回這個文件)
  4. 根據請求後綴匹配不一樣的路由,而路由的處理須要咱們提早require到app.js裏面。
  5. 假如上述的各個路由都沒有匹配上,咱們就要返回404,你所請求的東西不存在。

什麼是中間件?

這裏咱們參考一下中文文檔express

中間件函數可以訪問請求對象 (req)、響應對象 (res) 以及應用程序的請求/響應循環中的下一個中間件函數。下一個中間件函數一般由名爲 next 的變量來表示。npm

中間件函數能夠執行如下任務:json

  • 執行任何代碼。
  • 對請求和響應對象進行更改。
  • 結束請求/響應循環。
  • 調用堆棧中的下一個中間件函數。

若是當前中間件函數沒有結束請求/響應循環,那麼它必須調用 next(),以將控制權傳遞給下一個中間件函數。不然,請求將保持掛起狀態。後端

瞭解一下Router方法?

最簡單的router
router方法本質上是一個匹配請求的函數,通常理解爲Express的路由層中間件。當匹配給router方法的時候,先處理請求,返回響應數據給模板引擎進行渲染。同時咱們看到裏面還有一個參數 next,這是是中間件的回電函數,若是他帶有參數,則表示拋出一個錯誤,參數爲錯誤的文本,例如:

function Middleware(request, response, next) { 
   next('出錯了!');
}
複製代碼

拋出錯誤之後,後面的中間件將再也不執行,直到發現一個錯誤處理函數爲止。若是沒有調用next方法,後面註冊的函數也是不會執行的。服務器

使用模板引擎

咱們在一開始利用express-generator生成框架的時候,輸入了ejs,這個ejs就是我指定了的模板引擎。經過模板引擎,咱們再也不把html裏面的內容寫死,而是經過router動態地把數據傳給模板引擎,讓它根據咱們傳入的數據動態地渲染頁面,甚至咱們能夠經過判斷語句來給不一樣的登陸狀態的用戶渲染頁面,經過循環語句給頁面添加內容等等,上面的router圖片中的

res.render('index', {title: 'Express'})
複製代碼

就是咱們給模板引擎傳給參數,選擇index模板,傳入一個對象,key爲title,value是一個字符串。而後咱們只須要在views中的index.ejs裏面,使用相應的語法便可動態渲染。

index.ejs
相關文章
相關標籤/搜索