WanderWiser后端常规业务(用户管理,行程管理)拟将采用Node.js+express框架进行构建,语法为ESModule。在使用科技高效编写代码时建议把框架、语法和下文中controllers文件夹中的testController和routes中的test喂给科技工具,更容易获得符合本项目框架的生成结果。
```
WanderWiser_backend
├─ app.js
├─ bin
│ └─ www
├─ config
│ └─ dbconfig.js
├─ controllers
│ ├─ testController.js
│ ├─ userCenterController.js
│ ├─ userLoginController.js
│ └─ weatherController.js
├─ Function
│ └─ utilityFunctions.js
├─ images
│ ├─ architecture.png
│ └─ deploy.png
├─ package-lock.json
├─ package.json
├─ public
│ └─ stylesheets
│ └─ style.css
├─ README.md
├─ routes
│ ├─ test.js
│ ├─ userCenter.js
│ ├─ userLogin.js
│ └─ weather.js
└─ views
├─ error.ejs
├─ error.jade
├─ index.jade
└─ layout.jade
```
介绍架构:
-
app.js
应用程序的入口文件,在这个文件中初始化 Express 应用程序、配置中间件、路由等。负责启动服务器,是整个应用程序的核心配置文件。 -
bin/www
启动应用程序的脚本,通常它用来监听请求并启动 HTTP 服务器。在大多数 Express 项目中,bin/www是通过app.js启动的,负责设置端口和启动服务器。 -
config/dbconfig.js
用于配置与数据库相关的设置。包括数据库连接的配置,连接字符串、数据库类型等。这个文件通常用于集中管理数据库连接。老规矩,每次更新代码后记得检查是否正确修改为自己的配置。 -
controllers
控制器目录下包含了多个模块,负责具体的业务逻辑处理。控制器通过响应前端的请求,处理数据,返回结果。- testController.js: 负责测试相关的逻辑。
- userCenterController.js: 负责用户中心的功能。
- userLoginController.js: 处理与用户登录相关的操作。
- weatherController.js: 处理天气信息相关的逻辑。
-
Function/utilityFunctions.js(暂时没用)
该文件可以包含一些工具函数,辅助控制器处理某些通用任务,如数据格式化、验证等。 -
images
该目录用于存放静态资源,如图片文件,这些文件可以直接被前端访问。 -
public/stylesheets/style.css
这是静态资源目录之一,用来存放公共的前端样式文件。 -
routes
路由目录下包含了 Express 路由模块,用于处理不同的 HTTP 请求和匹配到相应的控制器。- test.js: 处理测试相关的路由。
- userCenter.js: 处理用户中心的路由。
- userLogin.js: 处理用户登录相关的路由。
- weather.js: 处理天气信息相关的路由。
-
views
存放视图模板的目录,使用的是模板引擎(如 Jade 或 EJS)来渲染 HTML 页面。error.jade、index.jade和layout.jade是不同的模板文件,可能用来渲染错误页面、主页等。
下面以登录注册功能的开发为例来介绍框架,下面文件结构中主要关注的只有app.js、config、controllers、route文件夹。假设前端向后端发送了一个登录请求,后端的处理流程如下:
1. 前端发起请求:前端向http://localhost:3000/userAccount/Login发起一个 HTTP POST 请求,传递包含用户名、密码等字段的请求体。这里用postman进行接口测试。

2. Express 路由匹配:通过app中的定义,后端会交给路由文件 routes/userAccount.js来处理该请求,转发到依据请求转发到controllers\userAccountController.js中对应的处理函数controllers进行业务处理。


3. 业务逻辑:控制器中调用一些业务逻辑函数,如 login,验证用户的用户名和密码是否正确并查询数据库进行验证。

4. 返回响应:控制器函数处理完请求后会返回一个响应,告诉前端请求的结果。如果登录成功,返回用户信息和成功消息;如果失败,则返回错误代码和错误信息。
如图,返回给前端的信息:

如图是后端被前端请求时的提示(格式由代码定义而定,这里预先有全局设置当前端访问时,后端提示前端访问的方式+url+返回码)。
总结,访问顺序:
- 前端发送 POST 请求到
/userLogin。 - Express 路由文件
routes/AccountLogin.js将该请求传递给 accountLoginController.js中的login函数。 - 控制器中的
login函数调用相应的业务逻辑函数来验证用户(此处即为login自身。实际上,你可以定义一个主函数login来接收请求(就像app.js一样),在主函数内部调用外部定义的其他函数来实现响应的功能(如将密码验证在controllers/accountLogin中单独做一个函数identify,并在主函数中调用它(identify),在末尾则只export导出主函数login来接收路由转发请求))。 - 根据验证结果,控制器返回登录成功或失败的响应。
而实际上,对新业务的开发也基本只用进行上述涉及部分代码的开发,即:
1. 在app.js中注释明确标出并给出案例的两处分别定义路由并进行路由挂载;
2. 在route中开发路由文件实现接口定义和转发;
3. 在controllers中实现业务处理逻辑,并将路由将使用的对应主函数在结尾导出。
其他注意事项:
不要轻易对app.js中除了明确划分出来用于定义和应用路由的区域外的代码进行修改!!如果调查清楚一定有必要修改的请先在交流群说明情况;
如果需要进行数据库配置的更新,则对dbconfig.js进行修改并注释说明;
如果需要使用新的中间件,则对app.js或在路由文件(Route)中进行引入,并按照之前的教程对package.json和package-lock.json文件进行更新;
其他待补充。
1196

被折叠的 条评论
为什么被折叠?



