1.基础环境搭建与核心认知

核心目标

掌握 Node.js 基础、Express 初始化,搭建起开发环境。

Node.js 前置基础

CommonJS vs ESModule 核心区别

|------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
| CommonJS (require/module.exports) | ESModule (import/export) |
| 为 Node.js 服务(服务器端,同步加载) | 为浏览器 / 全端设计(异步加载,兼顾性能) |
| 运行时加载(执行到 require 才加载模块) | 编译时静态分析(import 必须在顶层,提前确定依赖) |
| 导出:module.exports = {a:1}exports.a = 1;导入:const mod = require('./mod.js') | 导出:export const a = 1/export default {a:1};导入:import {a} from './mod.js'/import mod from './mod.js' |
| 导出的是值的拷贝(修改导入的值不影响原模块) | 导出的是值的引用(原模块值变化,导入值同步变化) |
| 可省略后缀(如 require('./mod')),支持.node/.json 等 | 必须写完整后缀(如 import './mod.js'),仅支持.js/.mjs 等 |
| 顶层 this指向模块自身(module.exports) | 顶层 this 指向 undefined |

http(核心网络模块)和 path(路径处理模块)

http 模块:原生创建 HTTP 服务(对应前端 fetch)

http 模块是 Node.js 实现 "请求 - 响应" 模型的核心,用于创建 HTTP 服务器 / 客户端,对应前端通过 fetch/XMLHttpRequest 发起请求的逻辑(前端是 "请求方",Node.js 是 "响应方")。

1. 核心作用
  • 搭建极简 HTTP 服务器,处理客户端(浏览器 / Postman / 前端 fetch)的请求;
  • 模拟客户端发起 HTTP 请求(类似前端 fetch)。
2. 核心概念(请求 - 响应模型)

|--------------|-------------------------------------------------------|
| 概念 | 说明(对应前端) |
| Request(请求) | 客户端发给服务器的信息(如 URL、请求方法、参数),对应前端 fetch 的 request 配置; |
| Response(响应) | 服务器返回给客户端的信息(如状态码、响应头、数据),对应前端 fetch 拿到的 response ; |
| 监听端口 | 服务器绑定端口(如 3000),前端通过 http://localhost:3000 访问; |

3. 实操案例:创建最简 HTTP 服务器
复制代码
// 导入 http 模块
const http = require('http');

// 1. 创建服务器:回调函数处理 「请求(req) - 响应(res)」
const server = http.createServer((req, res) => {
  // ① 处理请求:获取请求方法、URL
  console.log('请求方法:', req.method); // GET/POST 等
  console.log('请求 URL:', req.url);   // 如 /api/user

  // ② 设置响应头(告诉客户端返回的是 JSON 数据,编码 utf-8)
  res.writeHead(200, { 
    'Content-Type': 'application/json; charset=utf-8',
    'Access-Control-Allow-Origin': '*' // 解决前端跨域
  });

  // ③ 返回响应数据(对应前端 fetch 拿到的 res.json())
  const responseData = {
    code: 200,
    msg: '请求成功',
    data: { name: 'Node.js http 模块' }
  };
  res.end(JSON.stringify(responseData)); // 结束响应并返回数据
});

// 2. 启动服务器,监听 3000 端口
server.listen(3000, () => {
  console.log('服务器运行在 http://localhost:3000');
});
  • res.end():必须调用,用于结束响应(否则客户端会一直等待)
  • 跨域处理:服务器需设置 Access-Control-Allow-Origin 响应头(类似前端配置代理);
  • 对比 Express:Express 是基于 http 模块的封装,简化了路由、中间件等逻辑。
path 模块:路径处理(解决跨系统兼容)

|-------------------|--------------------------|
| 方法 | 作用 |
| path.join() | 拼接路径(自动适配系统分隔符),最常用; |
| path.resolve() | 解析为绝对路径(从当前工作目录出发); |
| path.basename() | 获取路径中的文件名(含后缀); |
| path.extname() | 获取路径中的文件后缀(如 .js、.json); |
| path.dirname() | 获取路径中的目录名(去掉文件名的部分) |

Express 项目搭建

快速脚手架

前置:安装 Node.js(建议 14+ 版本)

步骤 1:全局安装脚手架

打开终端,执行以下命令(仅需安装一次):

npm install -g express-generator

步骤 2:创建 Express 项目
复制代码
# 创建项目(项目名自定义,如 my-express-app)
express my-express-app
步骤 3:进入项目并安装依赖
复制代码
# 进入项目目录
cd my-express-app

# 安装依赖(express 等核心包)
npm install
步骤 4:启动项目
复制代码
# 方式 1:默认启动(Node 直接运行 bin/www)
npm start

# 方式 2:热重载启动(修改代码无需重启,需先装 nodemon)
# 1. 安装 nodemon(开发依赖)
npm install nodemon --save-dev
# 2. 修改 package.json 的 scripts(新增 dev 命令)
"scripts": {
  "start": "node ./bin/www",
  "dev": "nodemon ./bin/www"  // 新增这行
}
# 3. 启动热重载服务
npm run dev
步骤 5:验证项目

打开浏览器访问 http://localhost:3000,能看到 Express 默认欢迎页面,说明创建成功。

脚手架生成的核心目录结构(关键)
复制代码
my-express-app/
├── bin/                // 启动脚本(www 是入口,监听端口)
├── public/             // 静态文件目录(放 css、js、图片等)
├── routes/             // 路由目录(处理接口/页面路由,如 index.js、users.js)
├── views/              // 视图模板目录(ejs/jade 等,前端页面)
├── app.js              // Express 核心配置(中间件、路由挂载)
├── package.json        // 依赖和脚本配置

|----------------|-----------------------|
| Express 目录 | 作用(类比 Vue) |
| app.js | 项目入口(类比 main.js) |
| routes/ | 路由文件(类比 Vue 的 router) |
| public/ | 静态资源(类比 Vue 的 public) |
| package.json | 依赖配置(和 Vue 一致) |

相关推荐
你真的可爱呀19 小时前
3.MySQL 数据库集成
mysql·node.js·express
你真的可爱呀20 小时前
4.前后端联调(Vue3+Vite + Express + MySQL)
mysql·node.js·vue·express
weixin_4624462320 小时前
【原创实践】Node.js 动态生成 SVG 项目规划纸模板 高仿 纸由我 PaperMe
node.js·生成纸张
PAQQ21 小时前
ubuntu22.04 搭建 Opencv & C++ 环境
前端·webpack·node.js
程序员爱钓鱼1 天前
Node.js 编程实战:路由处理原理与实践
后端·node.js·trae
Lucky_Turtle1 天前
【Node】npm install报错npm error Cannot read properties of null (reading ‘matches‘)
前端·npm·node.js
聊天QQ:276998851 天前
基于线性自抗扰(LADRC)的无人船航向控制系统Simulink/Matlab仿真工程探索
node.js
不会写DN2 天前
JavaScript call、apply、bind 方法解析
开发语言·前端·javascript·node.js
Tiam-20162 天前
安装NVM管理多版本node
vue.js·前端框架·node.js·html·es6·angular.js