一、安装Node.js
Node.js是基于V8引擎的,它支持许多操作系统,如Windows、Mac和Linux。安装Node.js之前,需要先选择相应的操作系统版本。可以在官方网站(https://nodejs.org)下载不同平台下的Node.js。
// 下载Node.js // Windows版本 https://nodejs.org/dist/v14.15.4/node-v14.15.4-x64.msi // Mac版本 https://nodejs.org/dist/v14.15.4/node-v14.15.4.pkg // Ubuntu版本 sudo apt install nodejs // CentOS版本 sudo yum install nodejs
安装完成之后,可以通过以下命令验证Node.js的安装:
node -v
如果输出了版本号,则说明Node.js已安装成功。
二、Node.js模块
Node.js提供了许多核心模块,如http、fs、path等。通过Node.js的require()方法,可以在代码中引入相应的模块。下面是一个例子:
// 引入http模块 const http = require('http'); // 创建一个服务器 http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World!'); }).listen(8080); // 在终端上输出一段文本 console.log('Server running at http://localhost:8080/');
在Node.js中,模块分为核心模块和文件模块。核心模块是Node.js自身提供的模块,文件模块是用户自定义的模块。用户自定义的模块可以通过module.exports或exports将函数、对象、类等导出给其他模块使用,也可以通过require()方法来引入其他模块的函数、对象、类等。
三、Node.js异步编程
Node.js采用异步方式进行编程,它的IO操作都是异步的。这就意味着在执行IO操作的同时,Node.js可以继续执行其他的代码,而不需要等到IO操作完成之后才能执行其他代码。
异步编程可以提高Node.js的性能,避免了因为等待IO操作而造成的阻塞,提高了系统的响应速度。Node.js中的异步编程方式包括回调函数、Promise等方式,下面是一个回调函数例子:
// 使用回调函数进行异步编程 function readFile(callback) { fs.readFile('file.txt', function (err, data) { if (err) { console.log(err); } else { callback(data); } }); } // 调用readFile函数并传入一个回调函数 readFile(function (data) { console.log(data); });
四、Node.js的事件循环
Node.js中的事件循环是实现异步编程的核心。当Node.js启动时,事件循环会开始运行,它会不断地从事件队列中取出事件,然后执行对应的回调函数。
事件循环包括以下几个阶段:
- timers阶段:执行setTimeout和setInterval等定时器回调函数
- pending callbacks阶段:执行系统级别的回调函数
- idle, prepare阶段:系统内部使用
- poll阶段:等待I/O事件完成
- check阶段:执行setImmediate的回调函数
- close callbacks阶段:执行close事件的回调函数
下面是一个事件循环的例子:
// 在timers阶段注册一个定时器回调函数 setImmediate(function () { console.log('setImmediate'); }); // 在poll阶段注册一个I/O事件 fs.readFile('file.txt', function (err, data) { console.log('readFile'); }); // 在check阶段注册一个setImmediate回调函数 setImmediate(function () { console.log('setImmediate 2'); });
执行结果是:
setImmediate readFile setImmediate 2
五、Node.js的调试
Node.js提供了许多调试工具,如Node.js自身的调试器、VS Code的调试器等。Node.js自身的调试器可以通过命令行方式来使用,VS Code的调试器可以通过安装插件并配置launch.json文件来使用。
下面是Node.js自身的调试器的例子:
// 新建一个文件名为debug.js const a = 1; const b = 2; const sum = a + b; debugger; // 执行debug.js并启动调试器 node inspect debug.js // 在控制台中输入以下命令 > n // 继续执行到下一行 > repl // 进入repl环境,可以查看变量的值 > sum // 输出变量sum的值
VS Code的调试器需要在launch.json文件中配置调试参数和调试脚本,下面是一个launch.json的例子:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Debug", "program": "${workspaceFolder}/debug.js", "outFiles": [], "sourceMaps": true } ] }
六、Node.js的web开发
Node.js可以用来开发web应用,其中最著名的框架是Express。Express是一个快速、灵活的Node.js web应用框架,它提供了许多中间件和工具,方便开发者创建web应用。
下面是一个使用Express框架创建web应用的例子:
// 安装Express框架 npm install express // 创建一个文件名为app.js // 引入Express框架 const express = require('express'); // 创建Express实例 const app = express(); // 创建路由 app.get('/', function (req, res) { res.send('Hello World!'); }); // 启动服务器 app.listen(3000, function () { console.log('Server listening on port 3000'); });
执行完以上代码后,在浏览器中输入http://localhost:3000/即可访问该web应用。
七、Node.js的npm
Node.js的npm(Node Package Manager)是一个包管理器,可以方便地管理Node.js的第三方模块。
npm可以用于安装、升级、卸载Node.js模块,也可以用于查看已安装模块的版本等信息。下面是使用npm安装一个模块的例子:
// 安装一个名为express的模块 npm install express
除此之外,npm还提供了许多其他的命令,如publish、unpublish、init等,可以通过npm help命令查看npm的详细帮助信息。