分享nodejs使用心得


尽管前端摸爬滚打也是半年有余,但是一直在php的圈子中混,当年通过《一本书学会HTML+CSS+JS》,从一个什么都不懂的伪IT,到现在勉强独立开发项目,其路程之艰险可想而知。废话不多说,请允许我推荐几个神器,nodejs开发之利器。

一 pm2

希望有一个可以管理nodejs进程的工具,老是用node命令也不现实,毕竟,服务端总不能开着一个终端界面吧。于是,nodejs家族给我们提供了。先开始用的forever,挺好用,但是放到某里云之后,不知道是centos版本问题,还是nodejs版本问题,forever命令失效了。弄了一圈没弄好,试试了大名鼎鼎的pm2,发现果然简约但不简单。
基本的指令屈指可数,好像我也就用到了start、stop、restart、delete、list、monit这么几个命令,对于普通项目居然已经绰绰有余了。网上帖子一大片,我就不赘述了。

二 crontab

这个工具对于系统维护员应该非常熟悉,这个服务就像是一个程序闹钟。不知道为什么安卓机想要自己设置一个闹钟这么难呢?(对于深度定制后的安卓系统,自定义的定时后台定时无法及时唤醒),linux下的crontab工具简单易用,至少这种时间定义格式应该会对于其他应用有所启发。
cron是一个常驻服务,只要用户编辑配置文件,就可以使用定时功能。
cron -e 编辑该用户的计时器设置
cron -l 列出该用户的计时器设置
cron -u <用户名称> 指定要设定计时器的用户名称


* * * * * * <路径命令>  <指定执行参数> >>  <日志文件>  2 >&1

6个*号分别表示 分钟0-59 小时0-23 天1-31 月1-12 星期0-6,比如
1.每晚的21:30重启nginx:30 21 /etc/init.d/nginx restart
2.每月1、 10、22日的4 : 45重启nginx:45 4 1,10,22 /etc/init.d/nginx restart
3.每一小时重启nginx: /1 /etc/init.d/nginx restart
4.晚上11点到早上7点之间,每隔一小时重启nginx: 23-7/1 /etc/init.d/nginx restart
可以说是非常强大,对于这个命令的智能化改造我觉得有很大的潜力。

三 export import

这个模块间的导入导出命令也是非常强大。
在nodejs环境中,我们采用的是CommandJS模块规范,使用require引入模块,使用module.exports导出接口
一个模块可以通过module.exports或exports将函数、变量等导出,以使其它javascript脚本通过require函数引入并使用。
如:


module.exports = { pool_destroy,query }

exports = module.exports = someObject;

ES6之前出现了JS模块加载的法案,最主要是CommonJS和AMD规范。CommonJS前者主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。

require是运行时调用,所以可以随处引入
import是编译时调用,必须放在文件开头引入,目前部分浏览器不支持,需要用babel把es6转成es5再执行。ES6模块主要有俩个功能:export和import。export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口,import用于在一个模块中加载export输出变量的接口。
代码:


//config.js
var configUrl = {
    host:'xxxxx'
}
export default configUrl

//加载变量
import congfigUrl from './config/congfigUrl.js';
let url = configUrl.host + ':5555';

四 express

这个框架应该说是经典,使用简单易上手,扩展方便。用php框架控制器组件的话要放到固定位置,要么更改路由,用了nodejs简直太方便,想用哪个端口用哪个,想放什么路径就放什么路径。并且,同样支持中间件。官方的说法采用事件驱动、一步编程、非阻塞模式等等,对于简单的程序运行也感觉不出啥,但基本上请求都是在ms级别说明响应还是非常好的。对于我来说,够用就行了。


文章作者: 无名小卒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无名小卒 !
  目录