nodejs+express搭建中遇到的坑

    近期做一个小项目,除了需要正常的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);
    


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值