Node Express 內容渲染

2021-09-27 08:41:07 字數 3177 閱讀 4611

**

大多數情況下,渲染內容用 res.render,它最大程度地根據布局渲染檢視。

如果想寫乙個快速測試頁,也許會用到 res.send。

你可以使用 req.query 得到查詢字串的值,

使用req.session 得到會話值,

或使用req.cookie/req.singedcookies 得到 cookies 值。

到示例 6-8 演示了常見的內容渲染任務:

示例 6-1 基本用法

// 基本用法

res.render('about');

});

示例 6-2 200 以外的響應**

res.status(500);

res.render('error');

});// 或是一行……

res.status(500).render('error');

});

示例 6-3 將上下文傳遞給檢視,包括查詢字串、cookie 和 session 值

res.render('about', );

});

示例 6-4 沒有布局的檢視渲染

// 下面的 layout 沒有布局檔案,即 views/no-layout.handlebars

// 必須包含必要的 html

res.render('no-layout', );

});

示例 6-5 使用定製布局渲染檢視

// 使用布局檔案 views/layouts/custom.handlebars

請求和響應物件 | 57

res.render('custom-layout', );

});

示例 6-6 渲染純文字輸出

res.type('text/plain');

res.send('this is a test');

});

示例 6-7 新增錯誤處理程式

// 這應該出現在所有路由方法的結尾

// 需要注意的是,即使你不需要乙個 " 下一步 " 方法

// 它也必須包含,以便 express 將它識別為乙個錯誤處理程式

console.error(err.stack);

res.status(500).render('error');

});

示例 6-8 新增乙個 404 處理程式

// 這應該出現在所有路由方法的結尾

res.status(404).render('not-found');

});

6.11.2 處理表單

當你處理表單時,表單資訊一般在 req.body 中(或者偶爾在 req.query 中)。你可以使用

req.xhr 來判斷是 ajax 請求還是瀏覽請求(第 8 章將深入討論)。讓我們看看示例 6-9 和

示例 6-10。

示例 6-9 基本表單處理

// 必須引入中介軟體 body-parser

console.log('received contact from ' + req.body.name +

' <' + req.body.email + '>');

try ) :

res.redirect(303, '/thank-you');

} catch(ex) ) :

res.redirect(303, '/database-error');

}});6.11.3 提供乙個api

如果提供乙個類似於表單處理的 api,引數通常會在 req.query 中,雖然也可以使用 req.

body。與其他 api 不同,這種情況下通常會返回 json、xml 或純文字,而不是 html。

你會經常使用不太常見的 http 方法,比如 put、post 和 delete。提供 api 將在第 15 章

深入討論。示例 6-11 和示例 6-12 使用下面的「產品」陣列(通常是從資料庫中檢索):

var tours = [,,

];

「節點」一詞經常用於描述 api 中的單個方法。

示例 6-11 簡單的 get 節點,只返回 json 資料

res.json(tours);

});

示例 6-12 根據客戶端的首選項,使用 express 中的 res.format 方法對其響應。

示例 6-12 get 節點,返回 json、xml 或 text

var toursxml = '<?xml version="1.0"?>' +

products.map(function(p)).join('') + ''';

var tourstext = tours.map(function(p)).join('\n');

res.format(,

請求和響應物件 | 59

res.send(toursxml);

},'text/xml': function()

'text/plain': function()

});});

在示例 6-13 中,put 節點更新乙個產品資訊然後返回 json。引數在查詢字串中傳遞

(路由字串中的 『』:id』』 命令 express 在 req.params 中增加乙個 id 屬性)。

示例 6-13 用於更新的 put 節點

//api 用於更新一條資料並且返回 json;引數在查詢字串中傳遞

var p = tours.some(function(p));

if( p ) );

} else );

}});

最後,示例 6-14 展示了乙個 del 節點。

示例 6-14 用於刪除的 del 節點

// api 用於刪除乙個產品

api.del('/api/tour/:id', function(req, res));

} else );}

Node express 官方例子cors

最近學習node以及express,看例子看的頭疼,剛看完cors,寫一下記錄下來。以下是index.js var express require var logger require morgan var bodyparser require body parser var api express...

node express 搭建後台(一)

2.安裝express cnpm install g express 全域性安裝express generator npm install g express generator express4 命令工具 3.express e mytest 建立專案 e 啟用ejs模板 4.npm start ...

node express允許跨域

找了好幾個解決跨域的方法,對我的程式都是無效的。前台用 能解決,但是想試一下純後台解決跨域,試過下面的,能完美解決。自定義跨域中介軟體 varallowcors function req,res,next use allowcors 使用跨域中介軟體var createerror 用來設定模版引擎 ...