【实践】express搭建nodeJS中间层(三)

2024-06-07 15:32

本文主要是介绍【实践】express搭建nodeJS中间层(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

之前2篇已经比较详细地介绍用express搭建nodeJS中间层并部署到centOS服务器,用forever管理nodeJS进程,这一系列工作 都是基于 项目已经调试 完毕了。但实际开发过程中会发现 每次修改完 代码后 都需要关闭node进程然后 重启才能生效,特别麻烦,这篇就介绍一个 自动监听并同步的的 node工具——supervisor。

全局安装 supervisor

直接用npm安装既可,输入指令 :

$ npm -g install supervisor

这里注意一点的就是,supervisor必须安装到全局,如果你不安装到全局,错误命令会提示你安装到全局。

如果不想安装到默认的全局,也可以自己修改全局路径到当前路径 :

$ npm config set prefix "路径"

用supervisor启动express项目

安装完以后就可以 用 supervisor 来启动 express项目了,进入项目根目录,执行:

$ supervisor ./bin/www

如果你之前已经 用forever 来托管这个进程了,在执行 supervisor之前 应该关闭 这个进程。

关闭所有forever托管的进程:

$ forever stopall

然后再执行supervisor的命令,这样你的项目一旦发生更改(只要不是语法错误),supervisor会帮你自动同步到该进程里来,不需要重新启动。

这里写图片描述

好了,顺便做个小测试吧,我们先在浏览器打开这个网站。数据已经监听到了:

这里写图片描述

随意修改一个 nodeJS文件,然后会看到:

这里写图片描述

node服务已经重新启动了,很方便对吧 ^_^ 。

让supervisor监听模板文件的改动

默认情况下,supervisor只能监听 nodeJS的文件,其他的文件改动它是不会捕捉到的。下面我们 通过添加 启动参数 的方式扩展这一功能。

首先 我们明确下 supervisor的几个 options 的用法:

//要监控的文件夹或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

好了,看了上面的介绍,大家应该注意到 --extensions <extensions> 参数,对的,我们把 需要添加监听的文件名后缀 添加进去就可以了。我的项目里采用的ArtTemplate模板引擎,所有模板文件的后缀名是 .art ,所以我启动 supervisor的命令是这样的:

$ supervisor --extensions art ./bin/www

这样 模板文件 你更改后也能生效了,当然如果css文件也要同时添加监听,可以这么写:

$ supervisor --extensions art,css ./bin/www

运行的效果是这样的:

这里写图片描述

后话

当前 国内 关于express 4.x 搭建nodeJS中间层的 文档和一手资料不多,每当遇到问题时 就需要 去翻墙看看国外网站的或者翻译一些英文的帖子,着实不易啊。希望 我的这些 “战地笔记”能为有需要的人提供参考价值吧 ^ _ ^

@参考 《supervisor模块监控nodejs文件的变化并自动刷新》

这篇关于【实践】express搭建nodeJS中间层(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039566

相关文章

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源