Node.js 基础教程

Node.js 基础教程

1. 什么是 Node.js?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,允许你在服务器端运行 JavaScript 代码。它是开源的、跨平台的,并且非常适合构建高性能、可扩展的网络应用程序。

2. 安装 Node.js

2.1 下载安装

  1. 访问官方网站 https://nodejs.org/
  2. 选择适合你操作系统的长期支持(LTS)版本
  3. 下载并运行安装程序
  4. 安装完成后,打开命令行并验证安装:
bash 复制代码
node --version
npm --version

2.2 通过包管理器安装

Windows

使用 Chocolatey:

bash 复制代码
choco install nodejs-lts
macOS

使用 Homebrew:

bash 复制代码
brew install node
Linux (Ubuntu/Debian)
bash 复制代码
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

3. 基本概念和语法

3.1 创建第一个 Node.js 程序

创建 hello.js 文件:

javascript 复制代码
console.log('Hello, Node.js!');

在命令行运行:

bash 复制代码
node hello.js

3.2 模块系统

CommonJS 模块导入导出

math.js

javascript 复制代码
function add(a, b) {
    return a + b;
}

function subtract(a, b) {
    return a - b;
}

module.exports = {
    add,
    subtract
};

app.js

javascript 复制代码
const math = require('./math');

console.log(math.add(5, 3));      // 输出: 8
console.log(math.subtract(10, 4)); // 输出: 6

3.3 异步编程

回调函数
javascript 复制代码
function fetchData(callback) {
    setTimeout(() => {
        callback('数据已获取');
    }, 2000);
}

fetchData((result) => {
    console.log(result);
});
Promise
javascript 复制代码
function fetchDataPromise() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('数据已获取');
        }, 2000);
    });
}

fetchDataPromise()
    .then(result => console.log(result))
    .catch(error => console.error(error));
Async/Await
javascript 复制代码
async function getData() {
    try {
        const result = await fetchDataPromise();
        console.log(result);
    } catch (error) {
        console.error(error);
    }
}

getData();

4. NPM(Node Package Manager)

4.1 初始化项目

bash 复制代码
mkdir my-project
cd my-project
npm init -y

4.2 安装依赖

bash 复制代码
# 安装生产依赖
npm install express

# 安装开发依赖
npm install --save-dev nodemon

# 全局安装
npm install -g nodemon

4.3 package.json 脚本

json 复制代码
{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js",
    "test": "jest"
  }
}

5. 常用内置模块

5.1 文件系统(fs)

javascript 复制代码
const fs = require('fs');

// 同步读取文件
const content = fs.readFileSync('file.txt', 'utf8');

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

5.2 路径(path)

javascript 复制代码
const path = require('path');

const filePath = path.join(__dirname, 'files', 'data.json');
console.log(filePath);

5.3 HTTP 模块

javascript 复制代码
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World');
});

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

6. 搭建简单的 Web 服务器(Express)

6.1 安装 Express

bash 复制代码
npm install express

6.2 基本服务器

javascript 复制代码
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('Hello World!');
});

app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});

7. 最佳实践和建议

  1. 使用 constlet 替代 var
  2. 使用异步编程和 Promise
  3. 使用 async/await 处理异步操作
  4. 合理使用错误处理
  5. 保持代码模块化
  6. 使用 ESLint 进行代码风格检查

结语

Node.js 是现代 Web 开发不可或缺的技术。通过持续学习和实践,你将能够构建高效、可扩展的应用程序。

相关推荐
kyriewen12 分钟前
手写 call、apply、bind:从原理到实现,附 3 个最容易忽略的边界情况
前端·javascript·面试
胡萝卜术20 分钟前
从内存视角重新认识 JavaScript 数据类型:一份深度学习笔记
前端·javascript·面试
LiuJun2Son1 小时前
Angular 快速入门:从零搭建你的第一个应用
前端·javascript·angular.js
烬羽1 小时前
从零理解树与二叉树:用 JS 带你手撕遍历和递归
javascript·数据结构
YHL1 小时前
🚀从零理解树与二叉树 —— 概念、实现与遍历
前端·javascript·数据结构
十九画生1 小时前
学 JavaScript 数据类型,真正要搞懂的是:变量里存的到底是什么?
javascript
ZengLiangYi1 小时前
测试策略:单元测试 + 集成测试怎么写
javascript·typescript·node.js
JieE2122 小时前
JS 到底有多少种数据类型?从ECMA规范到内存本质,一文彻底搞懂
javascript·数据结构·面试
前端Hardy2 小时前
GitHub 爆火!Three.js + React + ECharts 打造最强数据大屏
前端·javascript
数据知道3 小时前
视觉伪装(下):WebGL 渲染器与厂商特征的底层伪造与屏蔽
javascript·数据采集·webgl·指纹浏览器