Express进阶
了解请求
使用body-parse处理请求
了解express.js中间件的概念
根据请求设置不同的响应
使用路由分配模块
Request请求
Get请求——向服务器申请内容,请求体随URL发送,长度受限制,不加密
app.get('/search', function (req, res) {
res.send('你搜索了');
});
Post请求——向服务器提交内容,请求体单独发送,长度不限,安全
app.post('/search', function (req, res) {
res.send('你搜索了');
});
在页面from表单中method设为GET/POST,action填对应的内容
安装中间件
安装
$ npm install body-parser --save
添加依赖
var bodyParser = require('body-parser');
//解析JSON
app.use(bodyParser.json());
//处理页面传来的值
app.use(bodyParser.urlencoded({extended:true}));
与页面结合
add.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户</title>
</head>
<body>
<h1>姓名<%=name%></h1>
<h1>年龄<%=age%></h1>
<h1>爱好<%=fav%></h1>
</body>
</html>
app.js
app.post('/adduser', function (req, res) {
console.log(req.body);
var user = {};
user.name = req.body.name;
user.age = req.body.age;
user.fav = req.body.fav;
res.render('add',user);
});
表单页面自己添加
<form class="" action="/adduser" method="post">
<label for="name">姓名</label>
<input id="name" type="text" name="name" value="">
<label for="age">年龄</label>
<input id="age" type="text" name="age" value="">
<label for="fav">爱好</label>
<input id="fav" type="text" name="fav" value="">
<input type="submit" name="button" value="添加"></button>
</form>
写入文件
添加依赖
var fs = require('fs');//文件的读写
写入文件
var str = JSON.stringify(user);
fs.writeFile('./save/user.json',str,'UTF-8');
注意:要创建文件夹
持续写入内容
var str = JSON.stringify(user);
fs.appendFile('./save/user.json', str, 'UTF-8', function () {
console.log('追加内容完成');
});
创建数组,数组内为JSON格式
app.post('/adduser', function (req, res) {
console.log(req.body);
fs.readFile('./save/user.json', function (err,data) {
var userlist;
if(data.toString() === ''){
userlist = [];
}else{
userlist = JSON.parse(data);
}
var user = {};
user.name = req.body.name;
user.age = req.body.age;
user.fav = req.body.fav;
//将新用户推进数组保存
userlist.push(user);
//持续写入对象
var str = JSON.stringify(userlist);
fs.writeFile('./save/user.json',str,'UTF-8');
res.render('add',user);
});
});
自定义中间件
//自定义的中间件
function addnews(req,res,next) {
fs.readFile('./save/news.json', function (err,data) {
var newslist;
if(data.toString() === ''){
newslist = [];
}else{
newslist = JSON.parse(data);
}
var news = {};
news.title = req.body.title;
news.pic = req.body.pic;
news.newssrc = req.body.newssrc;
news.newstime = req.body.newstime;
newslist.push(news);
var str = JSON.stringify(newslist);
fs.writeFile('./save/news.json',str,'UTF-8');
// res.send('添加成功');
});
next();
}
//添加新闻
app.post('/addnews', addnews, function (req,res) {
console.log(req.body);
res.send('添加成功!!!');
});
自定义不同路由处理
自定义路由处理
//这个路由文件用于处理所有来自后台端的请求
var express = require('express');
var router = express.Router();
// 做其它路由处理
router.get('', function (req, res, next) {
});
router.post('', function (req,res, next) {
});
module.exports router;
app.js添加
app.use('/admin', admin);
//表示所有/admin请求都走admin.js路由请求
express自动构建工程
- 安装
$ npm install express-generator -g
- 创建一个ejs工程
$ express -e
- 执行安装
$ npm install
- 运行
$ npm start
网友评论