【Node】node启动过程

本文详细介绍了Node.js的启动过程,包括启动V8引擎、创建process对象、加载核心模块及初始化应用环境等内容,并阐述了如何根据不同的启动参数加载内置模块或执行特定任务。

node_main.cc(入口)

1、node.cc

      启动v8,创建process(实现JSNI),加载core内核,启动uv

2、node.js(node内核)

      (1)加载evals模块(C++) process.binding('evals')

      (2)预加载内置的JS模块  process.binding('natives')

      (3)搭建应用核心

               startup.processFatal();
               startup.globalVariables();
               startup.globalTimeouts();
               startup.globalConsole();
               startup.processAssert();
              startup.processConfig();
              startup.processNextTick();
             startup.processStdio();
             startup.processKillAndExit();
              startup.processSignalHandlers();
              startup.processChannel();
               startup.resolveArgv0();

      (4)入口解析

                   (1)_third_party_main模块(内置JS)

                   (2)debug参数:_debugger模块

                   (3)-e/--eval参数:evalScript

                   (4)mainModule:主模块

                   (5)命令行:repl模块

                   (6)监听stdin





在下载并安装 Node.js 后,启动它的过程主要包括以下几个步骤: 1. **验证安装**:打开终端(在 Windows 上可以使用命令提示符或 PowerShell,macOS 和 Linux 用户可以使用终端),输入以下命令来检查 Node.js 是否安装成功: ```bash node -v ``` 如果安装成功,该命令会输出已安装的 Node.js 版本号。 2. **运行 JavaScript 文件**:Node.js 可以直接执行 JavaScript 文件。假设你有一个名为 `app.js` 的文件,可以通过以下命令运行它: ```bash node app.js ``` 3. **交互式运行模式**:如果希望在交互模式下运行 Node.js,可以直接在终端中输入 `node` 命令进入 REPL(Read-Eval-Print Loop)模式: ```bash node ``` 在此模式下,可以逐行输入 JavaScript 代码并立即看到执行结果。例如: ```javascript console.log("Hello, Node.js!"); ``` 执行后会输出: ``` Hello, Node.js! ``` 4. **退出 REPL 模式**:如果当前处于 Node.js 的交互模式,可以通过以下方式之一退出: - 输入 `.exit` 并按回车键。 - 或者按下 `Ctrl + C` 两次,或者 `Ctrl + D` 来结束当前会话。 5. **调试与开发**:在实际开发中,可能需要通过附加调试器来调试 Node.js 应用程序。例如,使用 `--inspect` 参数启动 Node.js 应用程序,并启用调试功能: ```bash node --inspect -p 9229 app.js ``` 其中 `-p 9229` 表示指定调试端口为 9229,这是默认的调试端口[^1]。 ### 示例代码 一个简单的 `app.js` 文件内容如下: ```javascript // app.js console.log("Node.js is running!"); // 创建一个 HTTP 服务器 const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello from Node.js server!\n'); }); server.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 运行这个脚本时,可以通过以下命令启动服务器: ```bash node app.js ``` 访问 `http://localhost:3000` 即可看到输出内容。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值