「我的个人助手」主要用于为用户提供一些日常使用的小工具,包含天气查询、日程管理、事项提醒等功能。
仓库(当前仓库)地址: life-helper-backend
技术栈: Node.js
+ Nest.js
+ TypeScript
+ Typeorm
+ MySQL
+ Redis
+ Docker
仓库地址: life-helper-miniprogram
技术栈: 原生小程序
+ 自定义的一套框架加强工具
仓库地址: life-helper-frontend
技术栈: Angular
+ TypeScript
+ Sass
+ RxJS
+ Swagger
+ Webpack
Web 地址: 我的个人助手
以下是当前项目的技术架构,可供读者参考。
本地开发环境主要用于新功能开发的前期阶段,就在当前开发的电脑部署环境,MySQL
和 Redis
等服务也是自建的。
本地开发到了较为成熟的阶段,会将代码进行提交在测试环境部署,测试环境用的是一台低配具有公网 IP 的阿里云服务器,MySQL
和 Redis
等资源购买的是阿里云的服务。
预发布环境处理运行代码的服务器以外,其他服务直接连生产环境的资源,用于临上线前的最后一道测试。
Codeup
)进行自动化部署,尽量避免手工上线。https://api.lifehelper.com.cn
https://www.lifehelper.com.cn
CDN
+ OSS
的架构承接 Web 端服务。关于如何让 OSS
支持单页应用请看这篇文章 —— 《如何让 OSS 支持单页应用》
src/app.module.ts
。src/modules/
目录下,每个模块一个同名目录。controller
,service
,model
,interface
等文件等放置在该特性模块内,无需再建二级目录。controller
)中直接使用共享模块的服务,而应该自建一个服务,在该服务内使用共享模块的服务,哪怕只有一行代码也要这样做。*.controller.ts
均对应一个同名 *.dto.ts
文件,该文件下均使用类(class
)进行定义。src/shared/
。*.controller.ts
和 *.dto.ts
文件。-
)分隔,所有该业务相关文件均放置于该目录下。*.controller.ts
和 *.dto.ts
文件一一对应)。目录示例(假设业务名为 my-feature
):
my-feature/
│
├── my-feature.service.ts # 主要
│
├── my-feature-a.controller.ts # 控制器,每个业务模块至少对应一个控制器
├── my-feature-a.dto.ts # DTO 文件,与同名控制器一一对应
│
├── my-feature-b.controller.ts # 控制器,每个业务模块至少对应一个控制器
├── my-feature-b.dto.ts # DTO 文件,与同名控制器一一对应
│
├── ...
│
├── feature-one/
│ ├── feature-one.service.ts
│ ├── feature-one.interface.ts
│ ├── feature-one.entity.ts
│ └── feature-one.model.ts
│
├── feature-two/
│ ├── feature-two.service.ts
│ ├── feature-two.interface.ts
│ ├── feature-two.entity.ts
│ └── feature-two.model.ts
│
└── ...