Node.js 开发指南,命令手册,常用概念

Node.js 开发指南

1. Node.js 概述

Node.js 是一个用于在浏览器之外执行 JavaScript 代码的运行环境。它基于 Google Chrome 的 V8 JavaScript 引擎,这使得开发者可以使用 JavaScript 进行服务端脚本编写,从而开发动态的 Web 应用程序。Node.js 以其非阻塞、事件驱动的架构而著称,这使其在处理 I/O 密集型应用时非常高效。

2. Node.js 安装与基础操作
  • 查看版本

    • node -v:查看 Node.js 版本号。
    • npm -v:查看 npm(Node.js 包管理器)版本号。
  • 安装依赖包

    • npm install 包名@版本:安装指定版本的包。
    • npm install 包名 --save-dev:将包安装到 devDependencies 中,用于开发环境。
    • npm install 包名 -g:全局安装包(如 nodemonnrm 等)。
  • 初始化项目

    • npm init -y:快速创建 package.json 文件,初始化项目。
    • npm install:根据 package.json 文件安装项目依赖。
  • 其他常用命令

    • clear:清屏。
    • ls:查看当前目录下的文件和文件夹。
3. 全局对象与工具
  • 全局对象

    • global:Node.js 提供的全局对象,例如 global.console.log("hello node") 可以在任何地方使用。
  • 工具

    • express:一个基于 Node.js 的 Web 框架,用于构建 HTTP 服务。
    • nodemon:用于监控文件变化,并自动重启 Node.js 应用程序的工具。
  • 镜像配置

    • npm config get registry:查看当前的 npm 镜像源。
    • npm config set registry <url>:设置镜像源(如淘宝源 https://registry.npm.taobao.org)。
    • nrm:npm 镜像源管理工具,可以方便地切换不同的镜像源。
  • Node.js 版本管理

    • npm install n -g:安装 n 版本管理工具。
    • n <version>:切换或安装指定的 Node.js 版本。
  • 缓存管理

    • npm cache clean -f:清理 npm 缓存。
4. Node.js 内置模块
  • 文件系统(fs)

    • fs.readFile(path, callback):异步读取文件内容。
    • fs.writeFile(file, data, callback):异步写入内容到文件。
  • 路径模块(path)

    • path.join([...paths]):将多个路径片段拼接成一个完整的路径字符串。
5. 模块系统

Node.js 使用 CommonJS 模块系统,每个文件都是一个模块。模块的成员可以通过 exports 对象导出,其他模块通过 require 函数进行导入。

  • 加载模块

    const fs = require('fs'); // 加载内置模块
    const custom = require('./customModule'); // 加载自定义模块
    const moment = require('moment'); // 加载第三方模块,需先安装
    
  • 导出与导入

    // 导出模块成员
    module.exports = {
      sayHello: function() {
        console.log("Hello");
      }
    };
    
    // 导入模块成员
    const { sayHello } = require('./customModule');
    sayHello();
    
  • 包的语义化版本规范

    • 版本号格式为 主版本号.次版本号.修订号,例如 3.3.3
      • 主版本号:有重大变更时增加。
      • 次版本号:新增功能时增加。
      • 修订号:修复 Bug 时增加。
  • 共享项目时删除 node_modules 文件夹
    通过 package.json 中的 dependencies 字段记录项目依赖,其他开发者可以通过 npm install 重新安装依赖。

6. Express 框架概述

Express 是一个基于 Node.js 的 Web 应用框架,它简化了服务器端开发,提供了丰富的功能用于处理 HTTP 请求和响应。

  • Express 项目初始化

    npm install express
    
  • 快速入门示例

    // 导入 express
    const express = require('express');
    // 创建应用对象
    const app = express();
    // 创建路由规则
    app.get('/home', (req, res) => {
      res.send('hello express server');
    });
    // 监听端口 启动服务
    app.listen(3000, () => {
      console.log('服务已启动,端口监听为 3000');
    });
    
7. Express 路由

路由决定了应用程序如何响应客户端对特定端点的请求。一个路由由请求方法、路径和回调函数组成。

  • 示例
    app.get('/home', (req, res) => {
      res.send('网站首页');
    });
    
    app.post('/login', (req, res) => {
      res.send('登录成功');
    });
    
    app.all('*', (req, res) => {
      res.send('<h1>404 Not Found</h1>');
    });
    
8. 获取请求参数

Express 提供了简便的 API 来获取请求报文中的数据,同时兼容原生 HTTP 模块的获取方式。

  • 示例
    app.get('/request', (req, res) => {
      console.log(req.query); // 获取查询字符串
      console.log(req.get('host')); // 获取指定的请求头
      res.send('请求报文的获取');
    });
    
9. 响应客户端请求

Express 提供了简便的 API 来设置响应状态码、响应头和响应体,同时兼容原生 HTTP 模块。

  • 示例
    app.get('/response', (req, res) => {
      res.status(500); // 设置响应状态码
      res.set('session', 'abcdefghijklmn'); // 设置响应头
      res.send('中文响应不乱码'); // 设置响应体
    });
    

案例

1. 使用 Express 构建一个简单的 Web 应用

const express = require('express');
const app = express();

// 主页路由
app.get('/', (req, res) => {
  res.send('欢迎来到我的网站');
});

// 登录路由
app.post('/login', (req, res) => {
  res.send('登录成功');
});

// 404 路由
app.all('*', (req, res) => {
  res.send('<h1>404 Not Found</h1>');
});

// 启动服务器
app.listen(3000, () => {
  console.log('服务器已启动,端口监听在 3000');
});

2. 使用 fs 模块读取和写入文件

const fs = require('fs');

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

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

通过这个开发指南和案例,你可以更好地掌握 Node.js 和 Express 的基本用法,并能够在实际项目中灵活应用这些知识。