Node.js 登录注册应用教程
本教程基于开源项目 Node.js-Register-Login-App,详细介绍项目的目录结构、启动文件和配置文件。
1. 项目的目录结构及介绍
Node.js-Register-Login-App/
├── models/
│ ├── user.js
├── routes/
│ ├── auth.js
├── views/
│ ├── index.ejs
│ ├── login.ejs
│ ├── register.ejs
├── .gitignore
├── LICENSE
├── README.md
├── SECURITY.md
├── package.json
├── server.js
目录结构介绍
- models/: 存放数据模型文件,如
user.js
定义用户模型。 - routes/: 存放路由处理文件,如
auth.js
处理认证相关的路由。 - views/: 存放视图文件,使用 EJS 模板引擎,如
index.ejs
,login.ejs
,register.ejs
。 - .gitignore: 指定 Git 版本控制系统忽略的文件和目录。
- LICENSE: 项目许可证文件。
- README.md: 项目说明文档。
- SECURITY.md: 项目安全政策文档。
- package.json: 项目依赖和脚本配置文件。
- server.js: 项目启动文件。
2. 项目的启动文件介绍
server.js
server.js
是项目的启动文件,负责初始化 Express 应用、连接数据库并启动服务器。
const express = require('express');
const mongoose = require('mongoose');
const session = require('express-session');
const app = express();
// 配置会话
app.use(session({
secret: 'your_secret_key',
resave: true,
saveUninitialized: true
}));
// 连接数据库
mongoose.connect('mongodb://localhost/node_auth', { useNewUrlParser: true, useUnifiedTopology: true });
// 设置视图引擎
app.set('view engine', 'ejs');
// 引入路由
const authRoutes = require('./routes/auth');
app.use('/', authRoutes);
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
主要功能
- 初始化 Express 应用: 使用
express()
创建应用实例。 - 配置会话: 使用
express-session
中间件配置会话管理。 - 连接数据库: 使用
mongoose.connect
连接 MongoDB 数据库。 - 设置视图引擎: 设置 EJS 作为视图引擎。
- 引入路由: 引入并使用
auth.js
路由文件。 - 启动服务器: 监听指定端口启动服务器。
3. 项目的配置文件介绍
package.json
package.json
文件包含了项目的元数据和依赖管理。
{
"name": "nodejs-register-login-app",
"version": "1.0.0",
"description": "A user login and registration app using Node.js, Express, Mongoose, EJS and express-sessions",
"main": "server.js",
"scripts": {
"start": "nodemon server.js"
},
"dependencies": {
"bcrypt": "^5.0.0",
"dotenv": "^8.2.0",
"ejs": "^3.1.5",
"express": "^4.17.1",
"express-session": "^1.17.1",
"mongoose": "^5.10.13"
},
"devDependencies": {
"nodemon": "^2.0.6"
}
}
主要配置项
- name: 项目名称。
- version: 项目版本。
- description: 项目描述。
- main: 项目入口文件。
- scripts: 定义脚本命令,如 `