nodejs+express搭建中遇到的坑

来源:互联网 发布:如何在mac制作铃声 编辑:程序博客网 时间:2024/06/08 03:55

    近期做一个小项目,除了需要正常的web-server功能,还需要在后台定时执行数据统计和挖掘。参考现成的两种方案nodejs和nginx-lua后,最终因为npm社区的强大(其实是我比较懒,npm现成的东西实在是太多了)选择了nodejs


安装nodejs
    nodejs平台上最有名的就是express这款web开发框架。window平台安装nodejs过程比较顺利,不过在linux(debian)平台遇到一个问题。apt源中nodejs版本实在是太低了,根本运行不了最新express。有两个解决办法,一个是直接下载linux下运行bin文件,再分别针对node和npm做软连接,第二种就是直接下载源码安装。
    直接下载二进制运行老遇到些莫名其妙的问题,所以我用的是第二种,wget下载后解压,一路make,make install。
    这里稍微提下,如果是macosx平台下,可以直接下载对应安装包或者使用grew安装,个人建议brew,安装brew的时候记得切换为国内的brew源,强烈推荐中科大mirrors.ustc.edu.cn的源,速度飞快。

生成Express工程
    我们选用的是express框架,所以只需要用全局方式安装express其实就可以自行创建工程了,不过express附带了一个工程生成器。进入命令行,分别执行:
  1. 安装npm install express -g;
  2. 安装npm install express-generator -g;
  3. 进入工程所在目录,创建工程 express xxx;
  4. 进入工程目录,运行npm install安装express依赖模块;
    恭喜,正常情况下,你的工程就顺利建立起来了。不过如果你不想等待30分钟以上的安装过程,建议你在执行这些命令前,安装cnpm,这是用于替换npm的一个工具,我们把他指向淘宝的npm镜像,命令如下:
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    后面的事情就简单了,在npm的地方全部替换成cnpm,体验秒下的感觉。

运行Express
    接下来配置bin/www,使用npm start启动项目即可。不过如果部署到生产环境的服务器,还是建议你安装pm2,可以将项目分布式后台驻守,命令如下:
  1. 安装npm install pm2 -g
  2. 启动pm2 start bin/www --name xxx
  3. 停止pm2 stop xxx
  4. 重启pm2 reload xxx



Express中常用模块
    下面再顺便推荐些必用的模块:
  • async:由于nodejs全局充斥非阻塞回调,稍微复杂点的模块,肯定是回调嵌套回调,代码写得极其恶心。async就是用来解决这个问题的,其中的async.auto可以把嵌套关系串联起来,而且可以设置处理顺序,代码如下:
    async.auto({    user:action.func1,    search:action.func2,    write:['user','search',func3]},function(err, results){    func4(request, response, results);});

  • config:json配置文件必备
  • string-format:可以使用format('xxx{0}',replce)方式替换字符串;
  • memory-cache : 内存缓存组件,使用getter和putter操作数据缓存。
  • node-schedule: 可用于后台定期执行任务,我找的就是这个,用法也很简单,比如每5秒执行一个任务:
    var schedule = require('node-schedule');var rule = new schedule.RecurrenceRule();rule.second = [1,6,11,16,21,26,31,36,41,46,51,56];schedule.scheduleJob(rule, onLoop);


原创粉丝点击