引言
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,让 JavaScript 可以在服务器端运行。它使得开发者可以使用 JavaScript 构建高性能、可扩展的网络应用程序。在第一天的学习中,我们将完成环境搭建,并了解 Node.js 的基本概念和简单应用。
一、环境搭建
1. 下载与安装
Node.js 的官方网站是nodejs.org/ ,在这里你可以找到适合你操作系统的安装包。对于大多数开发者来说,建议下载长期支持(LTS)版本,因为它更加稳定。
安装过程非常简单,按照安装向导的提示一步一步进行即可。安装完成后,你可以通过以下命令来验证是否安装成功:
node -v
如果安装成功,该命令会输出 Node.js 的版本号。同时,Node.js 自带了包管理工具 npm(Node Package Manager),你可以使用以下命令验证 npm 的安装:
npm -v
2. 集成开发环境(IDE)选择
有许多 IDE 可以用于 Node.js 开发,以下是一些常见的选择:
-
Visual Studio Code:这是一个免费且功能强大的开源 IDE,拥有丰富的插件生态系统,对 Node.js 开发提供了很好的支持。
-
WebStorm:由 JetBrains 开发的专业 JavaScript IDE,具备智能代码提示、调试工具等高级功能,但它是付费软件。
二、Node.js 基本概念
1. 单线程与事件驱动
Node.js 采用单线程、事件驱动的架构。单线程意味着在同一时间只能执行一个任务,但通过事件驱动和非阻塞 I/O 操作,Node.js 可以高效地处理大量并发请求。
例如,当一个 Node.js 程序发起一个文件读取请求时,它不会等待文件读取完成,而是继续执行后续的代码。当文件读取完成后,会触发一个事件,Node.js 会处理这个事件。
2. 模块系统
Node.js 使用模块系统来组织代码。一个模块就是一个独立的 JavaScript 文件,它可以包含变量、函数和类等。Node.js 内置了许多核心模块,如fs(文件系统模块)、http(HTTP 服务器模块)等。
以下是一个简单的模块示例:
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = {
add: add,
subtract: subtract
};
在另一个文件中,我们可以引入并使用这个模块:
// main.js
const math = require('./math');
const result1 = math.add(5, 3);
const result2 = math.subtract(5, 3);
console.log('加法结果:', result1);
console.log('减法结果:', result2);
3. 全局对象
在 Node.js 中,有一些全局对象可以在任何模块中使用。其中最常用的是global对象,它类似于浏览器中的window对象。
以下是一些常见的全局对象和方法:
- console:用于在控制台输出信息,如console.log()、console.error()等。
console.log('当前目录:', __dirname);
console.log('当前文件:', __filename);
三、第一个 Node.js 程序
1. 创建一个简单的 HTTP 服务器
使用 Node.js 的http模块,我们可以轻松创建一个简单的 HTTP 服务器。以下是一个示例代码:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
const port = 3000;
server.listen(port, () => {
console.log(`服务器正在监听端口 ${port}`);
});
将上述代码保存为server.js,然后在终端中运行以下命令:
node server.js
打开浏览器,访问http://localhost:3000,你将看到页面上显示Hello, World!。
2. 代码解释
- http.createServer():创建一个 HTTP 服务器实例,它接受一个回调函数作为参数,该回调函数在每次收到 HTTP 请求时都会被调用。
- res.statusCode:设置 HTTP 响应的状态码,这里设置为 200 表示请求成功。
- res.setHeader():设置 HTTP 响应的头部信息,这里设置响应内容的类型为纯文本。
- server.listen():让服务器开始监听指定的端口。
四、总结
在第一天的学习中,我们完成了 Node.js 的环境搭建,了解了 Node.js 的基本概念,包括单线程与事件驱动、模块系统和全局对象。同时,我们还创建了一个简单的 HTTP 服务器。这些知识是学习 Node.js 的基础,在后续的学习中,我们将深入探讨 Node.js 的更多功能和应用。
希望你通过今天的学习,对 Node.js 有了一个初步的认识,并能够顺利运行第一个 Node.js 程序。在接下来的学习中,你可以尝试修改代码,添加更多的功能,进一步熟悉 Node.js 的开发。