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的函数重名看其初始化方式
Mar 08 Javascript
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
Angularjs 事件指令详细整理
Jul 27 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
js实现点赞按钮功能的实例代码
Mar 06 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 Javascript
多个Vue项目部署到服务器的步骤记录
Oct 22 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 高效率写法 推荐
2010/02/21 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
Django实现图片文字同时提交的方法
2015/05/26 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
在python里面运用多继承方法详解
2019/07/01 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
.net笔试题
2014/03/03 面试题
擅自离岗检讨书
2014/09/12 职场文书
综合实践活动报告
2015/02/05 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
给下属加薪申请报告
2015/05/15 职场文书