01、express + mysql搭建nodejs服务端项目流程(一)——使用express-generator创建项目

165 阅读5分钟

记录一下使用express + mysql 搭建nodejs项目流程,项目是使用 express-generator 进行创建的。
express + mysql搭建nodejs服务端项目流程系列文章链接:
01、express + mysql搭建nodejs服务端项目流程(一)——使用express-generator创建项目
02、express + mysql搭建nodejs服务端项目流程(二)——添加打印日志winston和mysql相关依赖
03、express + mysql搭建nodejs服务端项目流程(三)——使用joi、crypto-js和jwt等技术完善注册登录接口
以下是关于 Express Generator 的作用、使用方式、生成项目的目录结构解析,以及各依赖包的详细说明:


一、Express Generator 的作用

Express Generator 是一个命令行工具,用于快速生成 Express 应用的骨架代码。它的核心价值在于:

  1. 标准化项目结构
    自动创建符合 Express 最佳实践的目录和文件。
  2. 快速启动开发
    省去手动配置路由、中间件、视图引擎等基础代码的时间。
  3. 模板化配置
    预置常用依赖(如日志、静态文件处理、错误处理等)。
  4. 灵活定制
    支持选择视图引擎(如 EJS、Pug)、CSS 预处理器等。

二、Express Generator 的使用方式

1. 安装工具

全局安装 express-generator

npm install -g express-generator

2. 生成项目

使用以下命令创建项目(以生成名为 myapp 的项目为例):

2.1、直接创建
express myapp (myapp 是项目名) # 直接创建,目前直接创建是选择  jade  作为模板引擎
2.2、指定模板引擎创建
express --view=pug myapp  # 选择 Pug 作为模板引擎

3. 安装依赖

进入项目目录并安装依赖:

cd myapp
npm install

4. 启动项目

npm start

访问 http://localhost:3000 即可看到默认页面。

4.1、安装 nodemon

可以安装 nodemon 来监控 node.js 源代码的任何变化和自动重启你的服务器。

全局安装 nodemon:
npm install -g nodemon
安装 nodemon后项目启动方式:
nodemon bin/www
4.2、修改package.json文件,如果下图所示

把package文件里修改node为nodemon的截图.png 修改后可以用 npm start 命令启动项目,达到 nodemon bin/www 命令启动项目一样的效果

项目启动截图png.png


三、项目目录结构详解

以下是生成的目录结构及其作用:

myapp/
├── **bin/**                # 启动脚本目录
│   └── **www**            # Node.js 服务器入口脚本(配置端口、HTTP服务)
│
├── **public/**             # 静态资源目录(浏览器可直接访问)
│   ├── **stylesheets/**   # CSS 文件
│   ├── **images/**        # 图片
│   └── **javascripts/**   # 客户端 JavaScript
│
├── **routes/**             # 路由定义目录
│   ├── **index.js**       # 根路径路由处理
│   └── **users.js**       # 用户相关路由示例
│
├── **views/**              # 模板文件目录(如 Pug、EJS)
│   ├── **error.pug**      # 错误页面模板
│   ├── **index.pug**      # 首页模板
│   └── **layout.pug**     # 全局布局模板
│
├── **app.js**              # 应用主入口(中间件、路由挂载、错误处理)
└── **package.json**        # 项目依赖和脚本配置

四、核心依赖包详解

1. express

  • 作用:Node.js 的 Web 框架,提供路由、中间件等核心功能。
  • 使用方式:在 app.js 中创建应用实例:
    const express = require('express');
    const app = express();
    

2. body-parser

  • 作用:解析 HTTP 请求体(如 JSON、URL-encoded 数据)。
  • 使用方式:在 app.js 中配置:
  • 自 Express 4.16.0 版本开始,不需要安装body-parser这个中间件,Express 已经内置了,所以直接使用即可
    app.use(express.json());       // 解析 JSON
    app.use(express.urlencoded({ extended: false })); // 解析表单数据
    

3. cookie-parser

  • 作用:解析 Cookie 数据。
  • 使用方式:在 app.js 中启用:
    const cookieParser = require('cookie-parser');
    app.use(cookieParser());
    

4. morgan

  • 作用:HTTP 请求日志中间件。
  • 使用方式:在 app.js 中配置日志格式:
    const logger = require('morgan');
    app.use(logger('dev'));  // 输出简短日志(如 GET / 200 5ms)
    

5. debug

  • 作用:调试信息输出工具(按命名空间控制日志)。
  • 使用方式:在 bin/www 中记录服务器状态:
    const debug = require('debug')('myapp:server');
    debug('Server listening on port 3000');
    

6. http-errors

  • 作用:创建 HTTP 错误对象(如 404、500)。
  • 使用方式:在路由中抛出错误:
    const createError = require('http-errors');
    app.use((req, res, next) => {
      next(createError(404)); // 触发 404 错误处理
    });
    

7. pug (原 jade)

  • 作用:模板引擎,动态渲染 HTML。
  • 使用方式:在 app.js 中配置视图引擎:
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'pug');
    

五、其他重要文件说明

1. bin/www

  • 作用:启动 HTTP 服务器的入口脚本。
  • 关键代码
    const server = http.createServer(app);
    server.listen(port);
    server.on('error', onError); // 处理端口冲突等错误
    

2. app.js

  • 作用:应用配置中心,包含中间件、路由挂载和错误处理。
  • 关键配置
    // 静态文件托管
    app.use(express.static(path.join(__dirname, 'public')));
    
    // 路由挂载
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    
    // 错误处理中间件
    app.use((err, req, res, next) => {
      res.locals.message = err.message;
      res.status(err.status || 500);
      res.render('error'); // 渲染错误页面
    });
    

六、依赖关系总结

依赖包用途典型代码位置
expressWeb 框架核心app.js
body-parser解析请求体数据app.js 中间件配置
cookie-parser解析 Cookieapp.js 中间件配置
morgan记录 HTTP 请求日志app.js 中间件配置
debug调试信息输出bin/www
http-errors创建 HTTP 错误对象路由错误处理
pug模板引擎渲染 HTMLviews/*.pug

七、项目启动流程

  1. 用户访问 http://localhost:3000
  2. bin/www 启动服务器并监听端口。
  3. 请求进入 app.js,依次通过中间件(如日志、静态文件处理)。
  4. 路由匹配到 routes/index.js,渲染 views/index.pug
  5. 若发生错误(如 404),跳转到错误处理中间件。

八、配置 cors 跨域

1、运行如下的命令,安装 cors 中间件:

npm install cors
  1. app.js 中导入并配置 cors 中间件:
// 导入 cors 中间件
const cors = require('cors')
// 将 cors 注册为全局中间件
app.use(cors())

更多的关于cors跨域的知识点记录在下面的文章中:
跨域问题深度解析与Node.js解决方案实践


九、扩展建议

  • 添加新路由:在 routes/ 下新建文件,并在 app.js 中挂载。
  • 更换模板引擎:使用 express-generator --view=ejs 生成 EJS 项目。
  • 集成数据库:添加 mongoosesequelize 依赖操作 MongoDB/MySQL。

通过 Express Generator,开发者可以快速搭建符合规范的 Express 应用,专注于业务逻辑而非基础配置。