node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用


Posted in Javascript onNovember 04, 2014

在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也总是要不断地重复这几个很烦人的操作。有没有办法做到当文件修改之后,Node.js自动重新启动(或重新加载文件)以节省时间呢?一开始我是想到用grunt的watch模块来监控文件变化,但后来在网上一查,原来我们想到的,别人早已想到,并且已经做得很好。Node Supervisor正是这样一个可以实现这种需求的Node.js模块。

根据Github上的说明,Node Supervisor原本是用于服务器上Node.js应用崩溃的时候,自己重新启动。当然它也可以监控你的项目的js(或CoffeeScript)文件变化,进而重启来方便我们调试应用程序。

安装方法(以全局模块安装):

npm install supervisor -g

假设你的Node.js程序主入口是app.js,那么只需要执行以下命令,即可开始监控文件变化。

supervisor app.js

Supervisor还支持多种参数,列举如下:

//要监控的文件夹或js文件,默认为'.'

-w|--watch <watchItems>
//要忽略监控的文件夹或js文件  

-i|--ignore <ignoreItems>
//监控文件变化的时间间隔(周期),默认为Node.js内置的时间

-p|--poll-interval <milliseconds>
//要监控的文件扩展名,默认为'node|js'

-e|--extensions <extensions>
//要执行的主应用程序,默认为'node'

-x|--exec <executable>
//开启debug模式(用--debug flag来启动node)

--debug
//安静模式,不显示DEBUG信息

-q|--quiet

例子:

supervisor myapp.js

supervisor -w py_scripts -e 'py' -x python myapp.py

supervisor -w lib, server.js, config.js, server.js

实现同样功能的类似产品还有Run.js和Nodeman,这两个我都没用过。但是从文档上来看,前者和Supervisor一样都是极简的5分钟就可以上手的那种,功能比Supervisor稍弱;后者的feature比较多,对应的文档就特别长,估计要研究透也得至少半个小时。选择哪一个,全看项目需求和个人喜好。

Javascript 相关文章推荐
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
Aug 01 Javascript
jQuery增加、删除及修改select option的方法
Aug 19 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
Dec 09 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
vue中uni-app 实现小程序登录注册功能
Oct 12 Javascript
js绘制一条直线并旋转45度
Aug 21 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 #Javascript
node.js中的Socket.IO使用实例
Nov 04 #Javascript
Node.js的特点和应用场景介绍
Nov 04 #Javascript
Node.js中的模块机制学习笔记
Nov 04 #Javascript
Node.js异步I/O学习笔记
Nov 04 #Javascript
JavaScript中的ubound函数使用实例
Nov 04 #Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 #Javascript
You might like
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
Java中final关键字详解
2015/08/10 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
jQuery 获取对象 定位子对象
2010/05/31 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
获取body标签的两种方法
2011/10/13 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
光声世纪笔试题目
2012/08/25 面试题
材料物理专业个人求职信
2013/12/15 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书