Express服務器開發

做者 | Jesksonhtml

來源 | 達達前端小酒館前端

Express服務器開發node

建立Express應用程序,Express路由,pug視圖模板的使用web

Express簡介:

讓咱們來建立Express應用程序,Express是一個Node.js Web應用框架,它很強大,能夠爲用戶建立各類Web應用和HTTP工具,使用Express框架能夠搭建一個完整功能的網站。算法

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){
})
複製代碼

request對象爲HTTP請求

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類型

response對象爲HTTP響應

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路由

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全棧技術領域,數據結構與算法、網絡原理等通俗易懂的呈現給小夥伴。謝謝支持,承蒙厚愛!!!


若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。


請點贊!由於大家的贊同/鼓勵是我寫做的最大動力!

歡迎關注達達的CSDN!

這是一個有質量,有態度的博客

前端技術棧
相關文章
相關標籤/搜索