node 通用的中间件
为什么学习Node,因为他的门槛比较高一点,现在比较热门一点。
技术这种东西,用最短的时间学会了收益终身。
1.常用的中间件:
// 通用的中间件
//bodyParser connect 内建的中间件,用来解析请求体,支持 application/json, application/x-www-form-urlencoded, 和 multipart/form-data。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(logger('dev')); //connect 内建的中间件,在开发环境下使用,在终端显示简单的不同颜色的日志
************************************
//session中间件的使用方法:
方法1:
app.use(session({
secret: config.session_secret,
store: new RedisStore({port: config.redis_port,host: config.redis_host,}),
resave: true,
saveUninitialized: true,
}));
方法2:
app.use(session({
secret: '8dj3Vd3',
store: new RedisStore(conf.SESSION_REDIS),
    //name: "wab_session",
    cookie: {maxAge: 1000 * 3600 * 10},//10小时
    resave: false,
    saveUninitialized: true
}));
************************************
app.use(require('cookie-parser')(config.session_secret));  请看这个微博:http://www.cnblogs.com/coolicer/p/4191548.html
app.use(compress());
2.看看这个博客:http://zhan.renren.com/mynodejs?gid=3602888498042060523&checked=true
分析一下上面的博客:
在 node.js 中模块分为核心模块和文件模块两种,核心模块是通过 require('xxxx') 导入的,文件模块是以 require('/xxxx') 或 require('./xxxx')、require('../xxxx') 形式导入的;核心模块是用c/c++编译的二进制模块,而文件模块是后缀为.js、.json、.node 的文件,在 node.js 中一个文件/文件夹也可以称之为一个模块。更多关于模块及模块加载顺序的信息请查阅官网:http://nodejs.org/api/all.html#all_modules 
这里导入了 express、http、path 核心模块,routes 文件夹下的 index.js 和 user.js 文件模块。
因为 express 框架是依赖 connect 框架(Node的一个中间件框架)创建而成的,可查阅 connect 文档:http://www.senchalabs.org/connect/和 express 官方文档:http://expressjs.com/api.html了解更多内容。
app.set(name, value):设置 name 的值为 value 
app.set('port', process.env.PORT || 3000):设置端口为 process.env.PORT 或 3000 
app.set('views', __dirname + '/views'):设置 views 文件夹为视图文件的目录,存放模板文件,__dirname 为全局变量,存储着当前正在执行脚本所在的目录名。
app.set('view engine', 'ejs'):设置视图模版引擎为 ejs
app.use([path], function):使用中间件 function,可选参数path默认为"/"
app.use(express.favicon()):connect 内建的中间件,使用默认的 favicon 图标,如果想使用自己的图标,需改为app.use(express.favicon(__dirname + '/public/images/favicon.ico')); 这里我们把自定义的 favicon.ico 放到了 public/images 文件夹下。
app.use(express.logger('dev')):connect 内建的中间件,在开发环境下使用,在终端显示简单的不同颜色的日志,比如在启动 app.js 后访问 localhost:3000,终端会输出:
            Express server listening on port 3000 GET / 200 21ms - 206b GET /stylesheets/style.css 304 4ms 
数字200显示为绿色,304显示为蓝色。假如你去掉这一行代码,不管你怎么刷新网页,终端都只有一行 Express server listening on port 3000。
app.use(express.bodyParser()):connect 内建的中间件,用来解析请求体,支持 application/json, application/x-www-form-urlencoded, 和 multipart/form-data。
app.use(express.methodOverride()):connect 内建的中间件,可以协助处理 POST 请求,伪装 PUT、DELETE 和其他 HTTP 方法。
app.use(app.router):设置应用的路由(可选),详细请参考:http://stackoverflow.com/questions/12695591/node-js-express-js-how-does-app-router-work 
app.use(express.static(path.join(__dirname, 'public'))):connect 内建的中间件,设置根目录下的 public 文件夹为静态文件服务器,存放 image、css、js 文件于此。
if ('development' == app.get('env')) {app.use(express.errorHandler());}:开发环境下的错误处理,输出错误信息。
app.get('/', routes.index):路由控制器,如果用户访问" / "路径,则由 routes.index 来控制,routes/index.js 内容如下:
            exports.index = function(req, res){ res.render('index', { title: 'Express' }); }; 
通过 exports.index 导出 index 函数接口,app.get('/', routes.index) 相当于:
            app.get('/', function(req, res){ res.render('index', { title: 'Express' }); };) 
res.render('index', { title: 'Express' }):调用 ejs 模板引擎解析 views/index.ejs(我们之前通过 app.set('views', __dirname + '/views')设置了模版文件默认存储在 views 下),并传入一个对象作为参数,这个对象只有一个属性 title: 'Express',即用字符串 Express 替换 views/index.ejs 中所有 title 变量,后面我们将会了解更多关于模板引的内容。
            http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); 
这段代码的意思是创建服务器并监听3000端口,成功后在命令行中显示 Express server listening on port 3000,然后我们就可以通过在浏览器输入 localhost:3000 来访问了。
这一小节我们学习了如何创建一个工程并启动它,了解了工程的大体结构,下一节我们将学习 Express 的基本使用及路由控制。
node 通用的中间件的更多相关文章
- Node.js  + Express中间件详解
		
使用中间件 Express是一种路由和中间件Web框架,它具有自己的最小功能:Express应用程序本质上是一系列中间件函数调用. 中间件函数是可以访问请求对象 (req),响应对象(res)以及应用 ...
 - <node>……express的中间件……//
		
Express是一个基于Node.js平台的web应用开发框架,在Node.js基础之上扩展了web应用开发所需要的基础功能,从而使得我们开发Web应用更加方便.更加快捷. 中间件是什么? 中间件函数 ...
 - 59.node的serve-favicon中间件的使用
		
转自:https://www.zhi-jie.net/node-serve-favicon-use/ 有一个名称为serve-favicon的中间件,可以用于请求网页的favicon图标.譬如如下的使 ...
 - node的express中间件之directory
		
direcotry中间件用于在浏览器中流出网站某个目录下的所有子目录及文件. app.use(express.directory(path,[options])); 查看网站根目录下的文件及目录 va ...
 - node的express中间件之static之ajax提交json
		
static中间件可以使客户端直接访问网站中的所有静态文件. 利用这个功能可以直接把服务器上的静态页面直接读取出来返回到客户端. 从客户端点击一个按钮,向服务器端发送数据.并且插入到mysql数据库中 ...
 - node的express中间件之session
		
虽然session与cookie是分开保存的.但是session中的数据经过加密处理后默认保存在一个cookie中.因此在使用session中间件之前必须使用cookieParser中间件. app. ...
 - node的express中间件之bodyParser
		
bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理. 下面是一个文件上传的例子. 建立一个1.html页面 <!DOCTYP ...
 - koa,express,node 通用方法连接MySQL
		
这个教程不管node,express,koa都可以用下面方法连接,这里用koa做个参考 这个教程的源码地址: https://github.com/xiaqijian/... 新建文件目录,我是这样子 ...
 - node.js 的 中间件 初理解
		
听说中间件还挺重要,下面梳理一下初认识: 中间件是什么?简单说说http请求服务的过滤,当交给函数处理之前先交给它处理.匹配后会终止,要想再匹配,得加: next. 中间件能解决什么问题?检测用户登录 ...
 
随机推荐
- 烂泥:KVM虚拟机克隆
			
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了有关KVM虚拟机快照的创建与恢复,这篇文章我们来介绍有关KVM虚拟机克隆. KVM虚拟机的克隆,我们可以分以下几步: 1. 使用virt ...
 - JS高级程序设计2nd部分知识要点3
			
对象转换方法:1> toLocaleString(),2> toString(),ValueOf()方法会返回相同的值 栈方法是 LIFO (后进先出)的数据结构 -push ,pop 方 ...
 - ACM竞赛高手比其他程序员水平高很多吗?
			
1. ACM是一种很直接的评价程序员水平的体系 2. ACM竞赛会带来很多机遇(深造or工作),同时又是一个不小的挑战 3. 为竞赛而竞赛的事情不可取 详细点击这里
 - Ubuntu 14.04(32位)安装Oracle 11g(32位)全过程
			
1.将系统更新到最新:sudo apt-get updatesudo apt-get dist-upgrade2.安装Oracle所需的依赖包:sudo apt-get install automak ...
 - LeetCode题解-----Maximum Gap
			
题目描述: Given an unsorted array, find the maximum difference between the successive elements in its so ...
 - 矩阵乘法快速幂  codevs 1250 Fibonacci数列
			
codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1 ...
 - c查漏补缺
			
restrict 要理解什么是restrict,首先要知道Pointer aliasing:指两个或以上的指针指向同一数据,例如: ; int *a = &i; int *b = &i ...
 - Android网络之数据解析----SAX方式解析XML数据
			
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
 - grunt的使用方法,环境配置和插件安装
			
虽然现在grunt的用的越来越少了,但是插件数量还是相当多的,另外grunt和gulp的使用相当相似: grunt需要安装node和npm 验证node是否安装:node -v 验证npm是否安装:n ...
 - 实例化Model的三种方式