express + redis 构建基于node的开发环境

来源:互联网 发布:图像拼接算法apap 编辑:程序博客网 时间:2024/06/06 07:01

Node.js的性能毋庸置疑,基于Chrome的V8引擎,使用全异步化的处理方式,使得Node.js具有其他web框架无与伦比的性能优势。

异步化的开发模式虽然在性能上有很大的提升,但是个人觉得基于异步化的开发模式,会似的代码分散在各个模块中,对面向对象的封装性有着比较大的侵扰。当然也可能仅仅是个人的一点愚见。

言归正传,搭建基于express的web开发框架流程如下

1. 安装node环境

windows环境,下载最新的node的稳定版

安装后使用node -v检查安装是否成功

linux环境,下载最新的二进制安装包或者源码包进行安装


2. 安装express开发环境

使用npm -g install express命令即可将express系统全局安装到node模块系统中

npm的全局安装和本地安装的区别,npm全局安装和本地安装在命令行的执行上仅仅在于是否添加了-g参数,

如果添加了-g参数,则是全局安装,否则是本地安装,全局安装后可以在命令行中执行相关的命令,一般如express等需要在命令行中执行的模块建议选择全局安装,

而本地安装则是在当前命令运行的目录下创建node_modules文件夹,将依赖的相关模块下载安装到此文件夹下,一般依赖的一些第三方的库建议选择本地安装


3. 使用express模板,生成express工程

使用express -e myprj 命令生成express的工程,其中使用-e 表示使用的是ejs模板 来生成对应的html文件

生成对应的工程后,可以在工程目录中看到

bin, node_modules, public, routes,views, app.js, packapge.json文件/文件夹

其中package.json文件为工程的描述文件

app.js为系统的启动文件

routes中包含两个文件index. js user.js涉及到路由相关的内容

views中为系统的模板文件,系统需要使用到的一些html,ejs模板均可以在此目录下找到,

public为一些公共文件的路径,主要存放一些js,图片,css等静态资源

node_modules为工程中需要使用的一些node模块的存放地,可以在package.json文件中添加工程依赖的相关模块,然后使用npm install命令即可将相关的模块

局部安装到此目录下

bin为系统启动的脚本文件



4. 安装redis连接器中间件

使用npm install redis-connector命令即可将redis的node驱动安装到本工程中


5. 修改app.js

其中cookie设置session的时间(单位毫秒),需要注意的是此时间需要设置为大于1分钟,过短可能会导致session不过期的现象

在path后加载session模块和redis的驱动模块

var session = require('express-session');
var RedisStore = require('connect-redis')(session);


session使用redis作为session的存放地,当然也可以存放在mongodb中,redis的性能自不必多少,由于redis在存放的数据大于1k的时候性能可能会急剧下降,redis在处理大数据量的性能测试,可以参考相关性能测试结果,因此不要将过多的数据存放在redis中。由于使用redis作为session存储的地方,因此可以设置数据的过期时间,有些在构造参数中设置ttl数据,应该是设置缓存的session数据在redis中的过期时间

app.use(session({

  store: new RedisStore({
    host: "192.168.142.138",
    port: 6379,
    db: "0"
  }),
  resave:false,
  saveUninitialized:true,
  secret: 'keyboard cat',
  cookie: {maxAge: 100000}
}))


app.use('/', routes);
app.use('/users', users);

对session的处理要放在/拦截器和/users拦截器的前面


其中cookie设置session的时间(单位毫秒),需要注意的是此时间需要设置为大于1分钟,过短可能会导致session不过期的现象

也可以在redis中设置ttl值,此值应该是redis中存放的数据的过期时间。如果没有做redis数据的重新更新,则最后一次设置到redis中的session数据在经过了ttl时间后会自动的清除redis中的缓存数据
  store: new RedisStore({
    host: "192.168.142.138",
    port: 6379,
    db: "0",

    ttl : 1000

  }),


这样在程序中就可以获取到对应的session数据了,如果要修改session的数据,可以直接将数据保存到session中即可。如下所示

router.get('/login', function(req, res){
console.log(req);
//定义user对象存储页面提交的数据
var user = {
name : req.query.name,
password : req.query.password
};
//将user对象存入到session中,在success.ejs页面显示相关信息
req.session.user = user;
res.render('success', {
title : "xxxffff",
user: req.session.user
}
);
});



6. 安装superior,以便可以实时的检测到系统文件的变化

使用如下命令安装,需要注意的是superior必须全局安装,否则错误命令会提示安装到全局
npm -g install supervisor

安装后就需要使用

supervisor app.js来启动程序,而不是使用node app.js来启动程序

7. 启动系统

由于安装了supervisor,而在express4.x版本中express的启动方式修改为npm start来启动系统,其实在packapge.json中已经使用了
  "scripts": {
    "start": "node ./bin/www"
  },

来启动系统的,因此此处需要修改为
  "scripts": {
    "start": "supervisor ./bin/www"
  },


使用npm start来启动系统

访问http://localhost:3000即可


对于基本的环境已经搭建完毕,可以使用console.log(req.session)来在后台打印session中的相关内容

检查访问后,是否在redis中可以看到相关的数据,可以使用redis的命令行工具来检查相关的数据是否正确。


后续会加入mongodb来将相关数据保存到mongodb中






其中cookie设置session的时间(单位毫秒),需要注意的是此时间需要设置为大于1分钟,过短可能会导致session不过期的现象
0 0
原创粉丝点击