W.W后端结构说明

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.jadeindex.jadelayout.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+返回码)。

总结,访问顺序:

  1. 前端发送 POST 请求到 /userLogin
  2. Express 路由文件 routes/AccountLogin.js 将该请求传递给 accountLoginController.js 中的 login 函数。
  3. 控制器中的 login 函数调用相应的业务逻辑函数来验证用户(此处即为login自身。实际上,你可以定义一个主函数login来接收请求(就像app.js一样),在主函数内部调用外部定义的其他函数来实现响应的功能(如将密码验证在controllers/accountLogin中单独做一个函数identify,并在主函数中调用它(identify),在末尾则只export导出主函数login来接收路由转发请求))。
  4. 根据验证结果,控制器返回登录成功或失败的响应。

而实际上,对新业务的开发也基本只用进行上述涉及部分代码的开发,即:

1. 在app.js中注释明确标出并给出案例的两处分别定义路由并进行路由挂载;

2. 在route中开发路由文件实现接口定义和转发;

3. 在controllers中实现业务处理逻辑,并将路由将使用的对应主函数在结尾导出。

其他注意事项:

不要轻易对app.js中除了明确划分出来用于定义和应用路由的区域外的代码进行修改!!如果调查清楚一定有必要修改的请先在交流群说明情况;

如果需要进行数据库配置的更新,则对dbconfig.js进行修改并注释说明;

如果需要使用新的中间件,则对app.js或在路由文件(Route)中进行引入,并按照之前的教程对package.json和package-lock.json文件进行更新;

其他待补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值