这篇文章可能和一般的使用express不到10行代码构建一个服务器不太一样,因为我之前有使用过springboot进行后端框架的搭建,所以感觉这种方法虽然简单,但是可能就缺乏
扩展性
和规范性
0.项目背景
当前我正在开发一个自己使用的小型项目,由于是小型项目而且仅自己使用,所以感觉就没必要直接上SpringBoot作为后端框架,而且我希望能接触到更多的东西,于是选择使用NodeJS
作为后端服务器。
1.安装NodeJS和MySQL
首先要保证你的电脑中有Node和MySQL,如果没有的话,可以参考以下教程
安装Node.js
安装MySQL— 5.7.19(超详细–图文教程)
2.创建一个Node.js项目
在你需要放NodeJS后端的位置打开cmd
创建项目目录
mkdir 你的文件名
进入目录
cd 你的文件名
初始化项目
npm init
没有什么特殊要求直接默认Enter
即可
3.安装必要模块
通过vscode打开刚才创建的文件夹,安装以下模块
express
:一个流行的 Web 框架,用于搭建 Web 服务器和处理 HTTP 请求。mysql2
:一个 MySQL 的 Node.js 驱动程序,用于连接和操作 MySQL 数据库。dotenv
:一个用于从.env
文件中加载环境变量的模块,可以帮助你安全地管理敏感信息,例如数据库密码。
你可以使用以下命令安装这些模块:
npm install express mysql2 dotenv forwarded
这里安装的时候可能会被系统代理(魔法)影响,所以请先关闭魔法之后再进行安装
等待安装成功
4.创建HTTP服务器
在根目录 下创建一个
index.js
文件
使用 express
模块创建一个 HTTP 服务器非常简单,你只需要编写以下代码:
const express = require('express');
const app = express();app.get('/', (req, res) => {res.send('Hello, world!');
});app.listen(3000, () => {console.log('Server is running on port 3000');
});
启动服务器
node index.js
这个代码会创建一个 HTTP 服务器,监听在 localhost:3000
上。当你在浏览器中访问 http://localhost:3000
时,你将看到一个显示“Hello, world!”的页面。
5.连接MySQL数据库(service)
创建一个数据库
首先需要创建一个后续需要使用的数据库,可以通过workbench或sqlserver等工具
create database 数据库名
创建.env
文件配置mysql
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=你的密码
DB_NAME=数据库的名称
创建目录service
和index.js
编辑index.js
使用 mysql2
模块连接到 MySQL 数据库也很简单。你只需要编写以下代码:
const mysql = require('mysql2/promise');
require('dotenv').config();const pool = mysql.createPool({host: process.env.DB_HOST,user: process.env.DB_USER,password: process.env.DB_PASSWORD,database: process.env.DB_NAME
});module.exports = pool;
6.创建路由 和 controller
这里的路由不是我们前端页面的路由,而是一个路由对应一个请求地址
创建目录
创建一张数据表格
创建一张表格,测试是否连接上数据库
const pool = require("../../service/index")async function createTimeTable(req, res) {try {await pool.query(`CREATE TABLE IF NOT EXISTS time_record (id INT AUTO_INCREMENT PRIMARY KEY,time date NOT NULL,name VARCHAR(255) NOT NULL,tag VARCHAR(255) NOT NULL,duration smallint NOT NULL)`);res.status(200).send('Time table created successfully!');} catch (error) {console.error('Error creating time table:', error);res.status(500).send('Failed to create time table');}
}module.exports = {createTimeTable,
}
创建一个router对应
const express = require('express');
const router = express.Router();
const timeController = require('./time');router.get('/create', timeController.createTimeTable)module.exports = router
7.启动服务器
修改index.js
const express = require('express');
const app = express();
const routes = require('./controller/router');
require('dotenv').config();app.use(express.json());
app.use(routes);const port = process.env.PORT || 3000;
app.listen(port, () => {console.log(`Server is running on port ${port}`);
});
访问地址localhost:3000/create
这里的create是对应之前设置的 route 的
创建成功
我们去workbench中去看看
是存在的!证明整体的是没问题的
当前只是简单的搭好了整体的框架,后续将需要我们进行各个模块的填充和业务逻辑的实现