做者 | Jesksonhtml
來源 | 達達前端小酒館前端
Express服務器開發node
建立Express應用程序,Express路由,pug視圖模板的使用web
讓咱們來建立Express應用程序,Express是一個Node.js Web應用框架,它很強大,能夠爲用戶建立各類Web應用和HTTP工具,使用Express框架能夠搭建一個完整功能的網站。算法
能夠用中間件來響應HTTP請求,能夠定義路由表用於執行不一樣的HTTP請求,能夠向模板傳參數來動態渲染HTML頁面。express
命令行安裝Express框架:npm
cnpm install express --save
複製代碼
Express框架安裝在node_modules目錄中,而後須要一塊兒安裝以下模塊:json
body-parser是node.js的中間件,能夠處理JSON,Raw,Text,URL編碼的數據,cookie-parser是一個解析Cookie的中間件,而後經過req.cookies能夠獲取傳過來的Cookie,並轉爲對象。緩存
multer是node.js的中間件,用於處理enctype="multipart/form-data"的表單數據。bash
cnpm install body-parser --save
cnpm install cookie-parse --save
cnpm install multer --save
複製代碼
讓咱們來看看express框架的版本號:
cnpm list express
複製代碼
建立第一個Express框架實例
目的爲了輸出:「hello」,命名:express_demo.js文件
// 引入node模塊
const express = require('express');
// 建立express程序
const app = express();
// 添加HTTP路由
app.get('/', function(request, response){
// 輸出響應消息
response.send('hello express');
});
// 啓動HTTP服務器
app.listen(8080, function(){
console.log('express app');
});
複製代碼
執行項目:
node express_demo.js
複製代碼
而後就能夠用http://127.0.0.1:8080
express框架使用request對象和response對象來處理請求和響應的數據:
app.get('/', function(req,res){
})
複製代碼
req.app
爲callback,回調函數外部文件,利用req.app訪問express的實例
req.baseUrl
獲取當前安裝的URL路徑
req.body/req.cookies
爲得到「請求主體」
req.hostname/req.ip
獲取主機名,ip地址
req.originalUrl
獲取原始請求URL
req.params
獲取路由的參數
req.path
獲取請求路徑
req.protocol
獲取協議類型
req.query
獲取URL的查詢參數
req.route
獲取當前匹配的express路由
req.subdomains
獲取子域名
req.accepts()
檢查可接受請求的文檔類型
req.get()
獲取指定的HTTP請求頭
req.is()
判斷請求頭Content-Type的Mime類型
res.app
爲callback,回調函數外部文件,利用res.app訪問express的實例
res.append()
追加指定HTTP請求頭
res.set()
在res.append()後重置以前設置的請求頭
res.clearCookie()
清除Cookie
res.download()
傳送指定路徑的文件
res.get()
返回指定的HTTP請求頭
res.json()
傳送json響應
res.jsonp 傳送jsonp響應
res.location() 只設置響應的LocationHTTP請求頭,不設置狀態碼或者close response
res.redirect() 設置響應的LocationHTTP請求頭,而且設置狀態碼302
res.send() 傳送HTTP響應
res.status() 設置HTTP狀態碼
res.type() 設置Content-Type的MIME類型
express路由,由URI,HTTP請求和若干個句柄組成。
// 引入node模塊
const express = require('express');
// 建立express程序
const app = express();
// 添加http路由
app.get('/',function(request,response) {
// 輸出響應消息
response.send('hello dashucoding');
});
app.get('/users', function(req,res) {
// req , res
res.send('user');
});
// 啓動HTTP服務器
app.listen(8080, function(){
console.lo('express app');
});
複製代碼
GET 請求一個指定資源的表示形式,只用於獲取數據
POST 用於將屍體提交到指定的資源
HEAD 請求一個與GET相同的響應,但沒有響應體
PUT 用於請求有效載荷替換目標資源的全部當前表示
DELETE 刪除指定的資源
CONNECT 創建一個由目標資源標識的服務器的隧道
OPTIONS 用於描述目標資源的通訊選項
PATCH 用於對資源應用部分修改
app.get('/about',function(req,res){
res.send('about');
});
app.get('/ab?cd',function(req,res){
res.send('ab?cd');
}
app.get('/ab(cd)?e',function(req,res){
res.send('ab(cd)?e');
});
複製代碼
路由句柄,爲請求處理提供多個回調函數,next('route')方法
let d1 = function(req,res,next){
console.log('1');
next();
};
let d2 = function(req,res,next){
console.log('2');
next();
});
let d3 = function(req,res,next){
console.log('3');
next();
});
app.get('/', [d1,d2]);
複製代碼
next用於執行下一個回調函數,next('route')用於執行下一個相同路由。
// 引入node模塊
const express = require('express');
// 建立express程序
const app = express();
// 添加http路由
app.get('/', function(request, response){
// 輸出響應消息
response.send('hello');
});
app.get('/users', function(req,res){
res.send('user');
});
// 動態
app.get('/users/id', function(req,res){
let id = req.params.id;
// 返回響應
res.send('id='+id);
});
// 啓動HTTP服務器
app.listen(8080,function(){
console.log('expresss app');
});
const express = require('express');
const app = express();
app.get('/', function(request, response){
response.send('hello');
});
app.get('/users',function(req,res){
res.send('users');
});
app.param('id',(req,res,next)=>{
console.log('hello');
if(req.params.id==='1'){
next();
}else{
res.sendStatus(404);
}
});
app.get('/users/:id',(req,res)=>{
res.send('hello');
});
// 啓動服務器
app.listen(8080,function(){
console.log('express');
});
複製代碼
pug視圖模板
命令行下載:
npm install pug
複製代碼
pug.compile()將pug代碼編譯成一個JavaScript函數。
app.js
const express = require('express');
const app = express();
// 配置視圖模板
app.set('view engine', 'pug');
app.set('views', './views');
// 添加HTTP路由
app.get('/', function(request, response){
response.render('index.pug');
// 輸出響應消息,加載並解析index.pug文件
});
app.get('/users',function(req,res){
res.render('users.pug',{
title:'user',
users:[
{id:1,name:'張三',age:18}
]
});
});
// 啓動HTTP服務器
app.listen(8080,function(){
console.log('express');
});
複製代碼
users.pug:
doctype html
html
head
meta(charset="utf-8")
title #{title}
body
#app
for user in users
div
p id=#{user.id}
p name=#{user.name}
p age=#{user.age}
pug.render()模板函數:
const pug = require('pug');
console.log(pug.renderFile('template.pug',{
name:'dada'
});
複製代碼
執行pug.renderFile()函數,會把編譯出來的函數自動儲存到內部緩存中
做者Info:
【做者】:Jeskson 【原創公衆號】:達達前端小酒館。 【福利】:公衆號回覆 「資料」 送自學資料大禮包(進羣分享,想要啥就說哈,看我有沒有)! 【轉載說明】:轉載請說明出處,謝謝合做!~
大前端開發,定位前端開發技術棧博客,PHP後臺知識點,web全棧技術領域,數據結構與算法、網絡原理等通俗易懂的呈現給小夥伴。謝謝支持,承蒙厚愛!!!
若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。
這是一個有質量,有態度的博客