入坑node.js全面指南(一)

13 阅读2分钟

1. Node.js简介

什么是Node.js

Node.js是一个开源的JavaScript运行时环境,基于Chrome的V8引擎构建。它允许开发者在服务器端运行JavaScript,并且提供了丰富的库和模块,使得构建网络应用变得更加高效。

Node.js的特点

  • 非阻塞I/O:Node.js采用事件驱动、非阻塞I/O模型,提高了系统的并发处理能力。
  • 单线程:Node.js使用单线程模型,通过事件循环来处理多个连接,适用于高并发的场景。
  • 跨平台:Node.js支持多种操作系统,包括Windows、Linux和Mac OS。

2. 环境搭建

安装Node.js

访问Node.js官网下载适合你操作系统的版本,按照安装向导进行安装。

Node.js版本管理工具(nvm)

使用nvm可以方便地管理Node.js的多个版本。

安装特定版本的 Node.js:

nvm install <version>

安装最新的 LTS 版本:

nvm install lts

切换到已经安装的 Node.js 版本:

nvm use <version>

第一个Node.js程序

创建一个app.js文件,内容如下:

console.log("Hello, Node.js!");

在终端中运行:

node app.js

3. Node.js核心模块

node.js 内置了许多强大的模块,常用的包括:

  • http:创建 HTTP 服务器。
  • fs:文件系统操作。
  • path:文件路径操作。
  • url:URL 解析。
  • express:Web 框架(下一篇会详细介绍)。

事件模块

Node.js的事件模块提供了一种异步事件驱动的编程方式。

const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('event', () => {
  console.log('事件触发!');
});

emitter.emit('event');

文件系统模块

文件系统模块提供了对文件和目录的操作功能。

const fs = require('fs');

// 读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 写入文件
fs.writeFile('example.txt', 'Hello, World!', (err) => {
  if (err) throw err;
  console.log('文件已保存!');
});

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');
});

server.listen(3000, () => {
  console.log('服务器运行在 http://localhost:3000/');
});

路径模块

路径模块提供文件路径的处理方法。

const path = require('path');

const filePath = path.join(__dirname, 'example.txt');
console.log(filePath);

OS模块

OS模块提供有关操作系统的信息。

const os = require('os');

console.log('操作系统类型:', os.type());
console.log('系统内存:', os.totalmem());

4. NPM与模块管理

NPM简介

NPM是Node.js的包管理工具,提供了模块的安装、更新和卸载功能。

模块的安装与使用

安装第三方模块:

npm install express

使用模块:

const express = require('express');

创建自定义模块

创建一个模块文件myModule.js

module.exports.sayHello = function() {
  console.log('Hello from myModule!');
};

在主文件中使用:

const myModule = require('./myModule');
myModule.sayHello();

package.json详解

package.json是项目的配置文件,记录项目的基本信息及依赖。

{
  "name": "my-project",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

5. 异步编程

回调函数

Node.js使用回调函数处理异步操作。

fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

Promise

Promise是解决回调地狱的一种方式。

const fs = require('fs').promises;

fs.readFile('example.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error(err));

async/await

async/await更进一步,简化了异步代码的写法。

async function readFileAsync() {
  try {
    const data = await fs.readFile('example.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

readFileAsync();