Open sunyongjian opened 8 years ago
首先要知道express是干什么的。他是我们nodejs使用的框架,就跟我们前端js要用angular一样,这是后端的框架,可以简化我们的代码,实现快速,简单的开发。另外,express 跟其他的工具搭配,会更强。比如第三方中间件,因为express只有一个内置的static 来处理静态文件的中间件。比如学过的bodyParser (处理json和查询字符串)
var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('im SYJ'); }); app.listen(8080);
app.locals 一个用来存储属性的空对象 当模板渲染对象时,会将locals和 我们传在render里的对象 合并为一个。 当我们在locals 中设置属性,所有的模板就都有这个属性了。 感觉后续用法有待开发
app.use 使用中间件 第一个参数可以是具体的设置路径,第二是callback
app.get 可以获取app.set()设置的值、设置路由
app.post 设置post请求路由
*app.all('')* all + '' 表示所有请求
app.route 设置路由
var app = express();
app.route('/events') .all(function(req, res, next) { 在 path 为'/events' 的路由前执行,可以设定中间件
}) .get(function(req, res, next) { res.send(...); }) .post(function(req, res, next) {
})
## Request - **req.body** **请求体** 通常请求体 中的数据需要用事件监听来获取。第三方中间件可以自带监听并处理。比如body-parser中的json()来处理json格式的,urlencoded({ extended: true }) 来处理查询字符串 Multer处理http提交multipart/form-data,也就是文件上传 > 拓展 multipart/form-data 常用的表单上传文件的方式,比如写邮件添加附件。发送的也是字符串,只不过不是常见的key=value那种,而是加了分隔符等内容的构造体 --开始-- --分割-- -- 结尾-- - **req.path** 请求路径-->pathname - **req.method** 请求方式 - **req.hostname** 请求主机名 -->www.baidu.com - **req.query** 请求的查询字符串 - **req.headers** 请求头 - **req.params** 请求路径参数 如果我们写了一个route (路由) 是user/:name/:name2 第二个路径名就可以req.params.name这样取到。带: 的都会以 key value 的方式 ```{name:'',name1:''}``` 放到req.params中。 ## Response - **res.end** 结束response进程 相当于nodejs中的end - **res.send** 结束并返回数据。 参数支持对象格式的,数字,以及字符串。 - **res.json** 结束并```JSON.stringify``` 你的参数,比如```res.json({name:22})``` - **res.status(code)** ```res.status(403).end();``` - **res.set()** 设置响应头 ```javascript res.set('Content-Type', 'text/plain'); res.set({ 'Content-Type': 'text/plain', 'Content-Length': '123', 'ETag': '12345' }) //对象里面重复的后面会把前面的覆盖 res.set('Set-Cookie','name=syj')
res.get() 获取设置的属性值
res.get('Content-Type'); //text/plain
res.render 读取模板引擎 并且返回给客户端 支持三个参数,(view [, locals] [, callback]) 第一个参数是读取的模板文件名,第二个是需要替换的属性值,{username:'SYJ'} 第三个是callback 后面两个参数可以不传。
{username:'SYJ'}
app.get('/contact',function(req,res){ res.render('contact',{msg:'contact'}); });
res.cookie(name,value,options)
Sets cookie name to value
header 1 | header 2
new Date(Date.now()+20*1000)})
1.app.use(cookieParser('syj'));2.res.send(req.signedCookies);此时cookie在req.signedCookies上
内置static('/root',{options})
body-parser 第三方 用来处理请求体中的数据,require并使用 use这个中间件,会自动处理post请求 ,request.body 中的数据。json字符串,查询字符串都转化为对象
var bodyParser=require('body-parser'); app.use(express.bodyParser())
multer 用来处理http提交multipart/form-data,也就是文件上传。详细api 见 https://github.com/expressjs/multer
var multer = require ( 'multer' ) app.use(multer({ dest: './uploads/' }))
cookie-parser 处理请求头中的cookie,并把其转化为对象,放到request上。在use这个中间件下面都可以用request.cookies 取到传过来的cookie。。。 原生使用request.headers['cookie'] 取到一个字符串'; '分割的 另外 response.cookie可以设置cookie,注意区分。 response.cookie(name,value,{options}).. 原生只能使用
response.cookie(name,value,{options})..
res.setHeader('Set-Cookie',"age=6; Domain=localhost");
var cookieParser = require('cookie-parser'); app.use(cookieParser()) //支持传秘钥参数
session-parser 虽然session与cookie是分开保存的.但是session中的数据经过加密处理后默认保存在一个cookie中.因此在使用session中间件之前必须使用cookieParser中间件. 使用了 session-parser中间件以后,requset.session上就有了session的所有属性......... 原生的话是先从cookie上 取出sessionid对应的值,这个值保存在我们后台对象中,作为 key。所有通过对象 obj.key 可以取出它对应的信息。
var session = require('express-session'); app.use(session({options})) //options参数的具体取值: key:字符串,用于指定用来保存session的cookie名称,默认为coomect.sid. store:属性值为一个用来保存session数据的第三方存储对象. fingerprint:属性值为一个自定义指纹生成函数. cookie:属性值为一个用来指定保存session数据的cookie设置的对象,默认值为{path:”/”,httpOnly:true,maxAge:14400000}. path是cookie保存路径.httpOnly是否只针对http保存cookie, maxAge用于指定cookie的过期时间,单位为毫秒. secret:字符串.用来对session数据进行加密的字符串.这个属性值为必须指定的属性.
express
首先要知道express是干什么的。他是我们nodejs使用的框架,就跟我们前端js要用angular一样,这是后端的框架,可以简化我们的代码,实现快速,简单的开发。另外,express 跟其他的工具搭配,会更强。比如第三方中间件,因为express只有一个内置的static 来处理静态文件的中间件。比如学过的bodyParser (处理json和查询字符串)
app
app.locals 一个用来存储属性的空对象 当模板渲染对象时,会将locals和 我们传在render里的对象 合并为一个。 当我们在locals 中设置属性,所有的模板就都有这个属性了。 感觉后续用法有待开发
app.use 使用中间件 第一个参数可以是具体的设置路径,第二是callback
app.get 可以获取app.set()设置的值、设置路由
app.post 设置post请求路由
*app.all('')* all + '' 表示所有请求
app.route 设置路由
app.route('/events') .all(function(req, res, next) { 在 path 为'/events' 的路由前执行,可以设定中间件
}) .get(function(req, res, next) { res.send(...); }) .post(function(req, res, next) {
})
res.get() 获取设置的属性值
res.render 读取模板引擎 并且返回给客户端 支持三个参数,(view [, locals] [, callback]) 第一个参数是读取的模板文件名,第二个是需要替换的属性值,
{username:'SYJ'}
第三个是callback 后面两个参数可以不传。res.cookie(name,value,options)
Sets cookie name to value
header 1 | header 2
new Date(Date.now()+20*1000)})
不写或者设0默认为会话cookie,存在客户端内存中1.app.use(cookieParser('syj'));2.res.send(req.signedCookies);此时cookie在req.signedCookies上
中间件
内置static('/root',{options})
body-parser 第三方 用来处理请求体中的数据,require并使用 use这个中间件,会自动处理post请求 ,request.body 中的数据。json字符串,查询字符串都转化为对象
multer 用来处理http提交multipart/form-data,也就是文件上传。详细api 见 https://github.com/expressjs/multer
cookie-parser 处理请求头中的cookie,并把其转化为对象,放到request上。在use这个中间件下面都可以用request.cookies 取到传过来的cookie。。。 原生使用request.headers['cookie'] 取到一个字符串'; '分割的 另外 response.cookie可以设置cookie,注意区分。
response.cookie(name,value,{options})..
原生只能使用session-parser 虽然session与cookie是分开保存的.但是session中的数据经过加密处理后默认保存在一个cookie中.因此在使用session中间件之前必须使用cookieParser中间件. 使用了 session-parser中间件以后,requset.session上就有了session的所有属性......... 原生的话是先从cookie上 取出sessionid对应的值,这个值保存在我们后台对象中,作为 key。所有通过对象 obj.key 可以取出它对应的信息。