loading...

0

node常用包

node 工具读完大概需要9分钟

  • 发布时间:2017-12-19 00:04 星期二
  • 刘伟波
  • 174
  • 更新于2018-09-05 10:34 星期三

1.NodeJs使用async让代码按顺序串行执行

描述

由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步调用关系,所需参数都还是undefined。

解决思路是保证函数A执行之前,函数A所需的四五个参数值都已经获得,可以通过async来实现代码的串行执行。

版本

nodejs:  6.9.5

async: 2.2.0

步骤

1、首先安装async

npm install async --save

2、写async串行化代码

笔者函数A所需的参数a,b,c,d,e都是通过函数调用获得,但是这五个函数调用都是独立的,之间不会相互影响,因此可以选择async中的 parrallel来实现,具体代码如下:


let async = require('async');
     async.parallel({
        paraA:function(done){
          let paraA = invokeA();//参数paraA通过invokeA获得
          done(null,paraA);
        },
        paraB:function(done){
          let paraB = invokeB();
          done(null,paraB);
        },
        paraC:function(done){
          let paraC = invokeC();
          done(null,paraC);
        },
        paraD:function(done){
          let paraD = invokeD();
          done(null,paraD);
        },
        paraE:function(done){
          let paraE = invokeE();
          done(null,paraE);
        }
    },function(error, result){
        func(result.paraA,result.paraB,result.paraC,result.paraD,result.paraE);//函数func需要参数paraA,paraB......
    })


使用async时,result汇总了串行阶段的所有返回值,并可以在串行代码执行完毕后使用。

注意:如果所需串行的代码相互之间形成前后依赖关系,那么可以使用async中的series,具体使用方法为将上例中的parallel改为series


2.forever让nodejs应用后台执行

nodejs一般是当成一条用户命令执行的,当用户断开客户连接,运用也就停了,很烦人。如何让nodejs应用当成服务,在后台执行呢?

最简单的办法:

$ nohup node app.js &

但是,forever能做更多的事情,比如分别记录输出和错误日志,比如可以在js中作为api使用。

$ sudo npm install forever -g   #安装
$ forever start app.js          #启动
$ forever stop app.js           #关闭
$ forever start -l forever.log -o out.log -e err.log app.js   #输出日志和错误



3.good-storage

4.better-scroll

细节1:利用computed计算新的数组并且传值,调用它的refresh()

       2:利用watch观测有数据的时候,调用refresh()

query(newQuery){
if(!newQuery){
setTimeout(()=>{
this.$refs.shortcut.refresh()
},20)
}
}

    3: show or hide也要让重新计算,所有重新调用refresh()

this.showFlag = true;

setTimeout(()=>{
this.$refs.listContent.refresh()
},20)
setTimeout(()=>{
if(this.currentIndex===0){
this.$refs.songList.refresh()
}else {
this.$refs.searchList.refresh()
}
},20)


4.vConsole 移动端

5.pm2

 is a General Purpose Process Manager and a Production Runtime for Node.js apps with a built-in Load Balancer.

https://github.com/Unitech/pm2












你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符,如果内容过多或者要及时回复,建议去 平台,一般一天之内就会回复。
    关于技术问题或者有啥不懂的都可以留言,我会定期回复答 疑,推荐最新仓库 前端知识体系, 感謝支持!