(转载自:http://www.cnblogs.com/CodeGuy/archive/2013/04/27/3043040.html)
NodeJS”热部署“代码,实现动态调试
开发中遇到的问题
如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重新运行才会奏效。这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,而 PHP 则总是重新读取并解析脚本(如果没有专门的优化配置)。Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。
这时若你修改了js文件,或是调试功能,或是增加功能。这时需要重新发布该服务,每次修改都需要执行以下两步:
1 control+c
2 node server.js
很不爽!因此有人开发了一个自动发布(热发布)的工具,你只需要在修改文件后保存,它就能自动替你发布,这就是所谓的热部署。就像tomcat或websphere等一些主流的web应用服务器那样保存即热部署。下面将介绍两个NodeJS中的开源热部署工具。
(1)supervisor
supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。使用方法很简单,首先使用 npm 安装 supervisor:
$ npm install -g supervisor
如果你使用的是 Linux 或 Mac,直接键入上面的命令很可能会有权限错误。原因是 npm需要把 supervisor 安装到系统目录,需要管理员授权,可以使用 sudo npm install -g supervisor 命令来安装。
接下来,使用 supervisor 命令启动 app.js:
$ supervisor app.js
命令行窗口会显示启动成功信息,即开启了代码监听:
当代码被改动时,运行的脚本会被终止,然后重新启动。在终端中显示的结果如下:
supervisor 这个小工具可以解决开发中的调试问题。
github上的主页:https://github.com/isaacs/node-supervisor
(2)hotnode
首先需要安装,打开NodeJS命令行工具,输入sudo npm -g install hotcode进行全局安装
安装成功后,可以随时查看它的版本号,在命令行输入:hotcode -v
使用很简单,执行命令:hotcode server.js,输出信息如下:
每次修改都会有一条日志打印出来。
github上的主页:https://github.com/saschagehlich/hotnode
相关推荐
6. **零停机部署**: PM2支持热更新,可以在不中断服务的情况下更新应用代码。 7. **命令行工具**: 提供丰富的命令行选项,方便进行应用的启动、停止、重启、查看状态等操作。 **基于PM2的Node.js监控** 在"Node.js...
Vue.js是一种流行的前端JavaScript框架,用于构建用户界面。在进行Vue开发时,有几个关键的工具...通过VSCode的扩展功能和Node.js的工具链,开发者能够快速创建、构建、调试和部署Vue应用,享受到现代前端开发的便利。
Vue.js 是一款流行的前端JavaScript框架,它以组件化开发、易用性和高性能著称。...在实际开发过程中,你可能还需要了解如何进行单元测试、代码优化、部署上线等流程。不断学习和实践,是成为优秀的Vue开发者的关键。
3. Vue CLI的使用:创建项目、配置脚手架、热重载、打包部署等。 4. RBAC权限控制原理:角色、权限、用户的关联关系,以及权限的分配和验证。 5. Laravel框架基础:路由、控制器、视图、Eloquent ORM等。 6. Casbin...
对于大型项目,还需要考虑如何处理动态加载的模块,以及如何处理运行时的更新和热更新问题。 总的来说,Node.js 编译为单个可执行文件是一种提高分发效率和用户体验的有效策略,它简化了部署流程,同时也带来了一些...
开发服务器可能还会开启热重载功能,修改代码后无需手动刷新浏览器就能看到改动效果。 `npm run build` 命令则用于构建项目,将源代码转换为生产环境可用的形式。在 Node.js 中,这可能涉及编译 TypeScript 代码、...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用...同时,也可以了解到如何通过npm管理依赖,以及如何进行调试和部署。在实践中不断探索和优化,你的Node.js技能将会不断提升。
- 热加载与实时刷新:Vue.js的热加载配合Node.js的webpack-dev-server,能在开发过程中实现实时更新,提高开发效率。 - 部署策略:Node.js应用通常部署在服务器上,Vue.js打包后的静态资源通过nginx等反向代理...
"serpapi-nodejs"是一个基于Node.js的项目,它使用了JavaScript编程语言来实现对SerpAPI(Search Engine Result Page API)的调用。SerpAPI是一个提供搜索引擎结果页面数据的API,可以帮助开发者轻松获取搜索引擎...
Node.js是JavaScript运行时环境,允许我们在服务器端执行JavaScript代码,而Vue.js则是一个轻量级、高性能的前端MVVM框架,用于构建用户界面。下面我们将详细讨论这两个技术以及它们如何协同工作。 **1. Node.js...
这个过程通常包括代码压缩、去除冗余代码以及生成源映射等步骤,以确保最终构建的体积尽可能小,同时保持可调试性。 在开发过程中,代码风格的一致性和质量至关重要。滑轮项目中包含了`yarn run lint`命令,这是一...
9. **调试与测试**:WebStorm内置了强大的调试工具,你可以通过设置断点,检查变量,理解代码执行流程。对于单元测试,Vue-iView 2.0项目可能已经包含了测试框架如Jest,你可以通过`npm run test`运行测试。 通过...
这通常会启动一个热加载的本地服务器,任何代码更改都会实时反映在浏览器中,便于开发和调试。 4. **编译与最小化生产**: - 当你准备部署应用时,可以运行`npm run build`命令。这个命令会编译项目,优化代码并...
sourcestack:适用于全栈无服务器Typescript Web应用程序的高度适应性模板 sourcestack是“无电池”全栈无服务器Typescript Web应用程序模板,可以立即部署到您的AWS账户中并... 通过热重装在本地运行和调试所有应用程
PhaserSnake项目展示了基本的游戏开发流程,包括游戏设计、代码实现、测试和调试。开发者首先定义游戏规则,然后创建游戏对象(如蛇、食物),设置物理引擎参数,编写控制逻辑,最后处理用户输入和游戏状态更新。 #...
安装完成后,执行`npm run serve`启动本地开发服务器,服务器会监听配置的端口,并提供热重载功能,方便开发过程中的代码修改和调试。 7. **配置路由**: Vue项目中,路由管理是通过Vue Router实现的。你可以创建...
- **热重载**:集成`webpack-dev-server`和`nodemon`实现开发过程中代码变动的实时刷新。 - **插件**:如`webpack-bundle-analyzer`分析包大小,`enhanced-resolve`自定义解析规则。 - **环境变量**:使用`dotenv`...
`umi`基于React,并集成了路由、状态管理、代码分割、按需加载等功能,让开发者可以更专注于业务逻辑的实现。 ### 二、入门步骤 1. **环境准备**:确保已安装Node.js,因为`yarn`依赖于Node.js环境。访问[Node.js...
- **Vue Devtools**:推荐安装 Vue Devtools 浏览器扩展,用于在开发过程中调试 Vue 应用程序。 - **学习资源**:Vue.js 有丰富的文档和教程资源,可以帮助你快速上手并深入学习。 #### 四、总结 通过以上步骤,你...
3. **开发与调试**:使用像VS Code这样的IDE,可以集成热重载、自动编译和错误检查等功能,提升开发体验。 4. **部署**:完成开发后,项目可能需要进行打包,如使用`npm run build`创建生产环境的前端资源,然后将...