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 相关文章推荐
Mootools 1.2教程 滚动条(Slider)
Sep 15 Javascript
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
Jan 11 Javascript
学习JavaScript设计模式(链式调用)
Nov 26 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
Oct 09 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 Javascript
React Native实现进度条弹框的示例代码
Jul 17 Javascript
使用vue实现多规格选择实例(SKU)
Aug 23 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 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
dedecms系统常用术语汇总
2007/04/03 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
php的curl封装类用法实例
2014/11/07 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python获取各操作系统硬件信息的方法
2015/06/03 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
高校教师思想汇报
2014/01/11 职场文书
初三物理教学反思
2014/01/21 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
空乘英文求职信
2014/04/13 职场文书
安全生产大检查方案
2014/05/07 职场文书
授权委托书公证
2014/09/14 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
javaScript Array api梳理
2021/03/31 Javascript
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
Python基础之元编程知识总结
2021/05/23 Python
Python机器学习之底层实现KNN
2021/06/20 Python