最近想做一个自己的网站,所需去稍微学了一下node的知识,打算 搭建一个基于 Node.js、Express 和 MySQL 的后端项目涉及几个关键步骤。以下是一个简单的指南: 先说明一下我这里使用的工具基本都是最新版本,如果后期有问题再做修改

"node.js": "v20.9.0",

"npm": "10.1.0",

"express": "4.18.2",

"mysql": "2.18.1"

1、 安装 Node.js 和 npm

确保你已经安装了 Node.js 和 npm(Node 包管理器)。你可以在 Node.js 官网 上找到安装程序。

2、 创建项目目录并初始化 node.js项目

自己新创一个文件,再进入文件输入命令cmd进入终端,可以选择快捷创建命令npm init -y ,快捷创建的信息都是默认,如果想要改里面的内容,也可以在创建好的package.json中直接手动修改,如下图: 也可使用npm init 逐一输入初始化信息,其中需要输入以下配置,这里我直接将配置说明罗列出来,以便查阅;

package name: 你的项目的名称。这是你项目的标识符,通常是小写字母,不能包含空格。这将成为你的项目的文件夹名称和生成的 package.json 文件的 “name” 属性。version: 你的项目的版本号。按照 Semantic Versioning 规范,通常是 1.0.0。description: 对你的项目的简短描述。entry point: 你的项目的主要入口文件,通常是 index.js 或 app.js。test command: 用于运行项目测试的命令。git repository: 你项目的 Git 仓库地址。如果你不使用 Git,你可以留空。keywords: 一组与你的项目相关的关键词,以空格分隔。author: 项目的作者。license: 项目的许可证。常见的选项包括 MIT、GPL-3.0、Apache-2.0 等。Is this OK? (yes): 最后,npm 会显示你提供的信息,并询问是否确认。如果一切都正确,你可以输入 “yes” 或直接按回车键

3、 安装依赖

1.安装 Express 和 MySQL 模块

这个时候我们就可以用vscode,打开初始化后的项目,再安装 Express 和 MySQL 模块,在终端输入以下命令即可:

npm install express mysql

2.全局安装 nodemon

要安装 nodemon,你可以使用 npm(Node Package Manager)。nodemon 是一个用于监视 Node.js 应用程序中文件更改并自动重新启动应用程序的工具。以下是安装 nodemon 的步骤:

打开命令行终端。在终端中,使用以下命令安装 nodemon:

npm install -g nodemon

这将全局安装 nodemon,使其可以在任何项目中使用。 如果你使用的是 yarn 包管理器,可以运行以下命令:

yarn global add nodemon

安装完成后,你就可以在命令行中使用 nodemon 命令了。例如:

nodemon your-app.js

这将启动 your-app.js 并监视文件更改。每当你保存文件时,nodemon 将自动重新启动应用程序,使你无需手动停止和重新启动。

请注意,全局安装 nodemon 可能需要管理员权限(使用 sudo 或在 Windows 上使用管理员命令提示符)。如果你遇到权限问题,可以考虑在没有管理员权限的情况下本地安装 nodemon:

npm install nodemon --save-dev

4、项目框架介绍

这里先考虑做一个简单项目框架,实际项目中可能需要更多的组织和配置,可能还需要考虑安全性、身份验证、错误处理等方面的内容,这里的项目暂不考虑。

node-express-mysql

|-- src

| |-- controllers

| | |-- userController.js

| |-- models

| | |-- userModel.js

| |-- routes

| | |-- userRoutes.js

| |-- utils

| | |-- database.js

|-- config

| |-- express.js

|-- app.js

|-- package.json

解析各个目录的用途:

src 目录: src(源代码)目录存放整个应用程序的源代码。controllers 目录:controllers 目录包含处理路由请求的控制器文件。每个文件对应一个实体(如用户或文章),负责处理路由相关的业务逻辑。models 目录:models 目录存放与数据库交互的模型文件。每个文件对应数据库中的一个表,定义了模型的结构以及与数据库的交互方法。routes 目录:routes 目录包含应用程序的路由文件。每个文件对应一个资源(如用户或文章),定义了与该资源相关的路由。src/utils 目录:utils 目录可以存放一些通用的工具函数或模块,例如数据库连接模块。config 目录:config 目录存放配置文件。app.js 文件:app.js 文件是应用程序的入口文件。它初始化 Express 应用程序,连接数据库,加载路由等。package.json 文件:package.json 文件包含了项目的元数据和依赖信息

示例文件内容:

**src/controllers/userController.js**:

处理路由请求的控制器,处理请求和响应;

// userController.js

const userService = require('../services/userService');

exports.getAllUsers = (req, res) => {

const users = userService.getAllUsers();

res.json(users);

};

**src/models/userModel.js**:

对数据库进行增删改查操作;

// userModel.js

const db = require('../utils/database');

exports.getAllUsers = () => {

const sql = 'SELECT * FROM users';

return db.query(sql, []);

};

**src/routes/userRoutes.js**:

在 Express 应用程序中添加路由和处理程序,处理来自客户端的请

// userRoutes.js

const express = require('express');

const router = express.Router();

const userController = require('../controllers/userController');

router.get('/users', userController.getAllUsers);

module.exports = router;

**src/utils/database.js**:

使用 mysql 模块创建数据库池并暴露方便之后直接使用。确保你已经创建了数据库和需要用的表,这里我直接使用Navicat连接mysql,再创建一个mydesign的数据库和users表。

// database.js

const mysql = require('mysql');

// 创建数据库连接池

const pool = mysql.createPool({

connectionLimit: 10, // 限制连接数,根据实际需求调整

host: 'localhost',

user: 'your-username',

password: 'your-password',// 这里使用自己数据库的密码

database: 'your-database-name',// 创建的数据库名字

});

// 获取数据库连接池中的一个连接

exports.query = (sql, params) => {

return new Promise((resolve, reject) => {

pool.getConnection((err, connection) => {

if (err) {

console.error('Database connection error:', err);

reject(err);

} else {

connection.query(sql, params, (queryErr, results) => {

connection.release();

if (queryErr) {

console.error('Error querying the database:', queryErr);

reject(queryErr);

} else {

resolve(results);

}

});

}

});

});

};

**config/express.js**:

存放配置文件,例如 Express 配置。在这个例子中,express.js 定义了 Express 应用程序的基本配置。

// express.js

// Configuration for Express app

const express = require('express');

const app = express();

const userRoutes = require('../routes/userRoutes');

// Add other middleware and configuration as needed

app.use('/api', userRoutes);

module.exports = app;

**app.js**:

是应用程序的入口文件。它汇聚了各个模块,初始化 Express 应用程序,连接数据库,加载路由等

// app.js

const expressApp = require('./config/express');

const PORT = process.env.PORT || 3000;

expressApp.listen(PORT, () => {

console.log(`Server is running on port ${PORT}`);

});

**package.json**:

包含项目的元数据和依赖信息。在这个例子中,用于管理项目的依赖和脚本

{

"name": "your-project-name",

"version": "1.0.0",

"main": "app.js",

"scripts": {

"start": "node app.js"

},

"dependencies": {

"express": "^4.17.1",

"mysql": "^2.18.1"

}

// Add other dependencies as needed

}

5、运行应用

在命令行中运行你的应用程序:

nodemon app.js

运行以上代码后,我这里出现了一个问题:Client does not support authentication protocol requested by server; consider upgrading MySQL client 去查了一下,说mysql8的加密规则改变了导致的,可以参考 这个 重新更换一下用户root的加密规则就可以了

现在,你的 Express 应用程序应该运行在 http://localhost:3000 上。你可以通过浏览器或其他工具测试你的路由。

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: