开源项目教程:药房管理系统
项目目录结构及介绍
Pharmacy-Mangment-System/
├── README.md
├── app/
│ ├── controllers/
│ ├── models/
│ ├── views/
│ └── routes.js
├── config/
│ ├── database.js
│ └── config.js
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── server.js
└── package.json
- README.md: 项目说明文件,包含项目的基本信息和使用指南。
- app/: 应用程序的主要目录,包含控制器、模型、视图和路由。
- controllers/: 存放控制器文件,处理业务逻辑。
- models/: 存放数据模型文件,定义数据结构和操作。
- views/: 存放视图文件,负责前端页面的展示。
- routes.js: 定义应用程序的路由规则。
- config/: 配置文件目录,包含数据库配置和其他配置。
- database.js: 数据库连接和配置文件。
- config.js: 其他应用程序配置文件。
- public/: 静态资源目录,包含CSS、JavaScript和图片文件。
- css/: 存放样式文件。
- js/: 存放JavaScript文件。
- images/: 存放图片文件。
- server.js: 项目的启动文件,负责启动服务器。
- package.json: 项目的依赖管理文件,包含项目的依赖包和脚本命令。
项目的启动文件介绍
项目的启动文件是 server.js
,它负责启动服务器并加载应用程序的各个模块。以下是 server.js
的基本内容:
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
// 加载配置文件
require('./config/config')(app);
// 加载路由
require('./app/routes')(app);
// 启动服务器
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
- 引入Express框架: 使用
express
模块创建一个应用实例。 - 设置端口: 从环境变量中获取端口,如果没有设置则使用默认端口3000。
- 加载配置文件: 调用
config/config.js
文件进行应用程序的配置。 - 加载路由: 调用
app/routes.js
文件加载应用程序的路由规则。 - 启动服务器: 使用
app.listen
方法启动服务器,并在控制台输出服务器运行的端口。
项目的配置文件介绍
项目的配置文件主要存放在 config/
目录下,包括数据库配置和其他应用程序配置。
database.js
database.js
文件负责数据库的连接和配置:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/pharmacy', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
console.log('Connected to MongoDB');
});
- 引入Mongoose: 使用
mongoose
模块进行数据库连接。 - 连接数据库: 使用
mongoose.connect
方法连接到本地的 MongoDB 数据库。 - 错误处理: 监听
error
事件,输出连接错误信息。 - 连接成功: 监听
open
事件,输出连接成功信息。
config.js
config.js
文件包含其他应用程序配置:
module.exports = (app) => {
// 设置视图引擎
app.set('view engine', 'ejs');
// 设置静态资源目录
app.use(express.static('public'));
// 解析请求体
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
};
- 设置视图引擎: 使用
ejs
作为视图引擎。 - **设置静态
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考