1) req.query:处理get请求,获取get的请求参数,支持obj[key]=value形式的参数串
2) req.body:处理post请求,获取post请求体,支持obj[key]=value形式的参数串
3) req.params:处理/:xxx形式的get或post请求,获取请求参数
4) req.param(name):处理get和post请求,但查找优先级由高到低:req.params->req.body->req.query。
后续补充正则表达式支持内容,也可详见express官方文档
2.ejd模板引擎(V)
1)简单易用的标签系统,只有如下三种标签
<% code %> : js代码
<%= code %> : 显示替换过HTML特殊字符的内容 (code: <h1>test code</h1>)
<%- code %> : 显示原始HTML内容
2)路由规则中调用res.render()渲染模板,并将产生的页面直接返回给客户端。介绍的两个参数:1)模板名称;2)传递给模板的数据对象,用户模板翻译
3)页面布局:layout或include(简单易维护)
3.mongoDB
1)DFS-based NoSql(C++)
2)面向web应用提供可扩展的高性能数据存储解决方案
3)强大的查询语言支持,语法类似面向对象的查询语言,可实现类似关系型数据库单表查询的绝大部分功能,支持对数据建立索引;
4)文档&集合:文档时最基本的单位,每个文档都有唯一的_id标识,文档属性为key-value键值对形式,可嵌套以存储复杂的数据类型;集合是许多文档的总和;
4.会话Session支持
1)session是一种持久网络协议;
2)cookie——在无状态HTTP协议上实现会话
3)开发者无需关注浏览器端存储的cookie唯一标识符,仅需使用它来识别用户(黑客就不再此范围咯)
4)很多服务端脚本语言都有会话功能,如php把每个唯一标识符存储到文件中
5)Express提供会话中间件,默认情况下将用户信息存储在内存中。我们也可以存放到数据库中,便于持久维护。借助express-session和connect-mongodb两个第三方中间件。
E:\DSpace\nodejs\blog> SET DEBUG=blog:* & npm start
> blog@0.0.0 start E:\DSpace\nodejs\blog
> node ./bin/www
Failed to load c++ bson extension, using pure JS version
E:\DSpace\nodejs\blog\node_modules\connect-mongo\lib\connect-mongo.js:30
var Store = connect.Store || connect.session.Store;
^
TypeError: Cannot read property 'Store' of undefined
at new module.exports (E:\DSpace\nodejs\blog\node_modules\connect-mongo\lib\
connect-mongo.js:30:47)
at Object.<anonymous> (E:\DSpace\nodejs\blog\app.js:31:9)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (E:\DSpace\nodejs\blog\bin\www:7:11)
at Module._compile (module.js:409:26)