const express = require('express');
var server = express();//建立服務
//請求根目錄執行
server.use('/a.html',function(req,res){
res.send('aaa');
res.end();
});
server.use('/b.html',function(req,res){
res.send('bbb');
res.end();
});
server.listen(8080);//監聽
//send能夠直接返回 json
server.use('/a.html',function(req,res){
res.send({a:1,b:2});
res.end();
});
職匹配一個css
express-static:html
npm install express-static
08express1/server2.jsnode
const express = require('express');
const expressStatic = require('express-static');
var server = express();
server.listen(8080);
//指定去哪兒讀 靜態文件
server.use(expressStatic('./www'));
// localhost:8080/a.html
返回: {"ok":true,"msg":"成功"}mysql
獲取參數 req.querygit
var users ={
'yuonly':'123123',
'zhangsan':'666',
'lisi':'999'
}
server.get('/login',function(req,res){
//直接獲取get參數的對象
var username = req.query['username'];
var pwd = req.query['pwd'];
if(users[username]==null){
res.send({ok:false,msg:'用戶不存在'});
}else{
if(users[username]!=pwd){
res.send({ok:false,msg:'用戶名密碼錯誤'});
}else{
res.send({ok:true,msg:'登陸成功'});
}
}
})
// http://localhost:8080/login?username=lisi&pwd=123
安裝 bodyparser
npm install body-parser
引入模塊
const bodyParser = require('body-parser');
定義urlencoded中間件
server.use(bodyParser.urlencoded({}));
server.post('/',function(req,res){
從req.body中讀取post數據
console.log(req.body);
})
post: 須要 body-parser中間件sql
server.use(bodyParser.urlencoded({
extended:true,//啓用擴展模式,意義不大
limit:2*1024//限制 默認100k
}));
req.body
server.use('/',function(req,res,next){
console.log('aaa');
next();
})
server.use('/',function(req,res,next){
console.log('bbb');
})
server.use(function(req,res,next){
var str = '';
req.on('data',function(data){
str += data;
})
req.on('end',function(){
//解析事後的數據,綁定到req.body身上
req.body = querystring.parse(str);
//next後,在下面匹配的中間件仍然能夠接收到 req.body的數據
next();
})
})
server.use('/',function(req,res){
console.log(req.body);
})
const querystring = require('querystring');
module.exports = function(req,res,next){
var str = '';
req.on('data',function(data){
str += data;
})
req.on('end',function(){
req.body = querystring.parse(str);
next();
})
}
const express = require('express');
const bodyParser2 = require('./libs/my-body-parser.js');
var server = express();
server.listen(8080);
server.use(bodyParser2);
server.use('/',function(req,res){
console.log(req.body);
})
cookie: 在瀏覽器保存一些數據,每次向服務器發起請求都會帶過來數據庫
不安全、存儲空間小(4K)express
session: 保存在服務端,但session依賴cookienpm
更安全json
cookie中會有一個sessionid的ID,服務器根據cookie帶過來的sessionid找到服務器端與之對應的文件,進行讀取或寫入
cnpm install express express-static cookie-parser cookie-session
加密 10cookie-session/server2.js
req.secret = 'yuonly123123123';
res.cookie('user','yuonly',{signed:true});
const express = require('express');
var server = express();
//cookie
const cookieparser = require('cookie-parser');
server.use(cookieparser());
server.use('/aaa/a.html',function(req,res){
//讀取cookie 裝完cookie-parser後有這個屬性
console.log(req.cookies,'read');
//發送cookie
res.cookie('user','yuonly',{path:'/aaa',maxAge:30*24*3600*1000});
res.send('ok');
})
// http://localhost:8080/aaa/a.html
server.listen(8080);
發送
res.sercet = 'sjksdjfkl123';
res.cookie(名字,值,{path:生效路徑,maxAge:有效期,signed:是否須要簽名})
讀取cookie
cookie-parser
service.use(cookieParser(簽名))
service.use(function(req,res){
req.cookies;
req.signedCookies;
})
刪除
res.clearCookie(key)
擴展--加密 cookie-encrypter
server.use(cookiesession({
//session要有效,必須設置keys。
keys:['111','2222','3333','4444','555']
}));
if(req.session['count']==null){
req.session['count'] = 1;
}else{
req.session['count']++;
}
console.log(req.session['count']);
res.send('ok');
res.end();
req.session['count'] = 1;
安裝
cnpm install ejs
const ejs = require('ejs');
// 模板 數據
ejs.renderFile('./view/1.ejs',{name:'yuonly'},function(err,data){
console.log(data);
});
<div>
<%= name %>
</div>
const ejs = require('ejs');
ejs.renderFile('./view/2.ejs',{json:{arr:[{username:'yuonly'},{username:'xiaowang'}]}},function(err,data){
console.log(data);
});
<% for(var i=0;i<json.arr.length;i++){ %>
<div>
<%= json.arr[i].username %>
</div>
<% } %>
<% var str = '<div></div>'; %>
// html實體
<%= str %>
// html標籤自己
<%- str %>
cnpm install express express-static cookie-parser cookie-session body-parser ejs --save
bodyparser弊端,只能解析post數據,不能處理post上來的文件
只能獲取上傳文件的文件名.form表單 加上 enctype以後,乾脆沒東西了。
server_file.js
const express = require('express');
const bodyParser = require('body-parser');
var server = express();
server.use(bodyParser.urlencoded({extended:false}));
server.post('/',function(req,res){
console.log(req.body);
})
server.listen(8080);
<form action="http://localhost:8080" method="post" enctype="multipart/form-data">
文件: <input type="file" name="username" id=""> <br>
<input type="submit" value="上傳">
</form>
//1 安裝
cnpm install multer --save
//2 導入
var multer = require('multer');
//3 建立multer對象
var objMulter = multer({dest:'./www/upload/'});
//4 使用對應方法,any 上傳多文件
server.use(objMulter.single('f1'));
server.post('/',function(req,res){
//5 獲取上傳文件
console.log(req.files);
// [ { fieldname: 'username',
// originalname: '屏幕快照 2017-05-30 上午8.12.11.png',
// encoding: '7bit',
// mimetype: 'image/png',
// buffer: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 10 00 00 01 94 08 06 00 00 00 fd 2b 7d db 00 00 01 5e 69 43 43 50 49 43 43 20 50 72 6f 66 69 ... >,
// size: 160018 } ]
})
multer:用來解析文件的數據 enctype="multipart/form-data"
//1 multerObj
var obj = multer({dest:'upload'});
//2 設定上傳方法
server.use(obj.any());
//3 使用
server.use('/',function(req,res,next){
<!-- req.files -->
//4.新的文件名
var pathObj = pathLib.parse(req.files[0].originalname);
var newName = req.files[0].path + pathObj.ext;
//5.重命名 req.files[0].path
fs.rename(req.files[0].path,newName,function(err){
if(err){
res.send('上傳失敗');
}else{
res.send('成功');
}
})
})
cnpm install consolidate --save
輸出什麼東西
server.set('view engine','html');
模板文件放在哪兒了
server.set('views','./views');
我要用哪一種模板引擎
server.engine('html',consolidate.ejs);
至關於子服務器 server
//1.建立router
var routeUser = express.Router();
//2.把router添加到server
server.use('/user',routeUser);
//3.router內部的路由的定義
routeUser.get('/1.html',function(req,res){
res.send('user1');
})
routeUser.get('/2.html',function(req,res){
res.send('user222');
})
//localhost:8080/user/1.html
//localhost:8080/user/2.html
Server端:存數據 Client端:管理工具、Node
cnpm i mysql --save
const mysql = require('mysql');
//1.連接數據庫
// mysql.createConnection(哪臺服務器,用戶名,密碼,庫名);
var db = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'jy1608_blog',
port:8889
});
//2.查詢
db.query("SELECT * FROM `user`;",function(err,data){
if(err){
console.log(err);
}else{
console.log(data,'data');
}
})