Express 是一個(gè)基于 Node.js 封裝的上層服務(wù)框架,它提供了更簡(jiǎn)潔的 API 更實(shí)用的新功能化借。它通過(guò)中間件和路由讓程序的組織管理變的更加容易。
如果需要跟加進(jìn)一步的了解建議去 express官網(wǎng)看捡多。沒(méi)時(shí)間寫(xiě)那么詳細(xì)蓖康,我只是把自己之前學(xué)習(xí)的一些筆記簡(jiǎn)單記錄下來(lái),如果有問(wèn)題可以找我探討垒手。
使用:
1.下載 安裝 npm install express --save
2.引入
3.創(chuàng)建一個(gè)server
4.監(jiān)聽(tīng)
5.get(二級(jí)-三級(jí)蒜焊。。科贬。地址,function(req,res){})
.post(二級(jí)-三級(jí)泳梆。。榜掌。地址,function(req,res){})
.use(二級(jí)-三級(jí),function(req,res){});
require('url');
on('data');
on('end')
中間件
作用是拓展功能优妙、處理數(shù)據(jù)(便捷)
const express = require('express');
const server = express();
server.listen(1273);
server.use(function(req,res,next){
console.log('你好我是user01');
next();
});
server.use(function(req,res,){
console.log('你好我是user02');
})
上面是運(yùn)行結(jié)果是:你好我是user01 --> 你好我是user02
因?yàn)槭褂昧? next() ,這個(gè)中間件。
在express中 GET唐责、POST的參數(shù)解析等也是可以使用方便的第三方的處理(上篇說(shuō)到ajax的封裝中就講過(guò)了怎么實(shí)現(xiàn)和封裝)。
express-static 讀取輸出
var express = require('express');
var bodyParser = require('body-parser');//解析body瘾带,尤其是復(fù)雜的對(duì)象參數(shù)
var static = require('express-static'); // 中間件(托管靜態(tài)文件)
var server = express();
server.listen(1767);
server.use(bodyParser.urlencoded({}));
server.use('/user',function(req,res,next){
console.log(req.body);
// body 是POST請(qǐng)求
if(req.body.user == 'Anny' && req.body.pass =='123456'){
res.send('ok')
}
else{
res.send('no ok!');
}
//res.send({a:10});
//next();
});
server.use(static('./www')); // www目錄下的圖片鼠哥、CSS 文件熟菲、JavaScript 文件對(duì)外開(kāi)放訪問(wèn)了
如果wwww 文件里面有文件就可以直接讀取出來(lái)。
- next();
表示朴恳,如果下面還有其它的中間件抄罕,就執(zhí)行,否則就不執(zhí)行于颖。
app.use('',function (res,req) {
console.log("我是user01");
//next(); // 如果不使用next呆贿,返回的結(jié)果是 : 我是user01
});
app.use('',function (res,req) {
console.log("我是user02");
})森渐;
如果使用了 next() 做入。輸出是:我是user01 我是user02
如果是get的數(shù)據(jù),直接使用 req.query 解析就OK了同衣。
默認(rèn)解析了竟块,直接使用。
- 插件 body-parser ,解析body參數(shù)
const express = require('express');
const bodyParser = require('body-parser');
const static = require('express-static');
const multer = require('multer');// 專(zhuān)門(mén)用來(lái)解析上傳文件的
const server = express();
server.listen(3000);
server.use(bodyParser.urlencoded({})); // 通中間件耐齐,解析body參數(shù)
server.use(multer({dest:'地址值'}).any()); // 可以上傳任意的文件
- multer 專(zhuān)門(mén)用來(lái)解析上傳文件的(需要添加條件)
multer的 dest 默認(rèn)解析出來(lái)是哈希值浪秘,沒(méi)有后綴。
需要 使用中間件 path 解析埠况。path.parse() 解析返回的是一個(gè)對(duì)象(文件名和后綴都有)
{root:'/',dir:'' ,base:'xxx.docx', ext: '.docx', name:''}
{root是 在什么根目錄耸携,dir是 絕對(duì)路徑 ,base是 文件名+后綴辕翰,ext是 后綴夺衍,name是 什么文件名}
server.use('/user',function(req,res,next){
console.log(req.body); //查看解析后的body參數(shù)
if(req.body.user == 'xiaoming' && req.body.pass =='123456'){
res.send('ok')
}
else{
res.send('no ok!');
}
//res.send({a:10});
//res.write();
//res.end();
//next();
});
server.use(static('./www')); // 能改變文件地址
express-static
能改變文件地址
利用中間件
如果有這個(gè)文件就讀出來(lái)顯示 wwwres.end();響應(yīng)
var express = require('express');
var app = express();
// 一個(gè)簡(jiǎn)單的 logger
app.use(function(req, res, next){
console.log('%s %s', req.method, req.url);
next();
});
// 響應(yīng)
app.use(function(req, res, next){
res.send('Hello World');
});
app.listen(3000);
- router 路由
路由使用非常頻繁,它的作用就是幫助大家把目錄結(jié)構(gòu)分的更加的詳細(xì)金蜀。下面舉個(gè)例子:
const express = require('express');
// 初始化
const userRouter = express.Router();
const newsRouter = express.Router();
const app = express();
app.listen(3000);
app.use('/user',userRouter); // 這里 "/user" 表示把大模塊拆分成小模塊了刷后。
app.use('/news',newsRouter);
// 小服務(wù)
userRouter.use('/xiaoming',function(req,res){
res.send('user 小明!')
})
userRouter.use('/test',function(req,res){
res.send('哈哈哈渊抄,測(cè)試test尝胆!')
})
newsRouter.use('/newsTest',function(req,res){
res.send('渲染新聞')
})
// 這是沒(méi)有拆分模塊化的做法,不推薦
//app.use('www.baidu.com/news/xxxx',function(){});
//app.use('www.baidu.com/list/xxxx',function(){});
//app.use('www.baidu.com/users/xxxx',function(){});
...
在瀏覽器輸入的基礎(chǔ)路徑+/user/xiaoming -----> 結(jié)果是: “user 小明护桦!”
在瀏覽器輸入的基礎(chǔ)路徑+/user/test -----> 結(jié)果是: “哈哈哈含衔,測(cè)試test!”
下篇:cookie及cookie加密