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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
JavaScript数组合并的多种方法
May 22 Javascript
微信小程序 less文件编译成wxss文件实现办法
Dec 05 Javascript
详解webpack分包及异步加载套路
Jun 29 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
Apr 01 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
用node.js写一个jenkins发版脚本
May 21 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
详解VUE中的插值( Interpolation)语法
Oct 18 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 中执行系统外部命令
2006/10/09 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
Python 学习笔记
2008/12/27 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
python ddt实现数据驱动
2018/03/14 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
python属于解释语言吗
2020/06/11 Python
Python 解析简单的XML数据
2020/07/24 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
导师工作推荐信范文
2014/05/17 职场文书
食品工程专业求职信
2014/06/15 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
劳动仲裁调解书
2015/05/20 职场文书