Typescript Express #2 Build Infrastructure Source Code
Đây là phần thứ 2 trong series tìm hiểu Typescript-express
1 Typescript express #1: Init source code
2 Typescript Express #2 Build Infrastructure Source Code ( bài này )
Trong bài viết này mình sẽ giới thiệu đến các bạn cấu trúc source code mà mình đã build và cảm thấy nó phù hợp nhất với mình cho đến thời điểm hiện tại, Các bạn có thể tham khảo và có ý kiến gì thì cứ góp ý cho mình nhé.
Để cho việc coding trở nên thoải mái và dễ dàng hơn thì việc phân chia cấu trúc thư mục một cách hợp lý cũng ảnh hưởng rất nhiều. Cùng mình tìm hiểu nhé !
Overview
Cấu trúc folder sẽ giống như này:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.
├── package-lock.json
├── package.json
├── src
│ ├── App.ts
│ ├── Infrastructures
│ │ ├── Constants
│ │ │ └── index.ts
│ │ ├── Contracts
│ │ │ └── ResponseTrait.ts
│ │ ├── Controllers
│ │ │ ├── BaseController.ts
│ │ │ └── index.ts
│ │ ├── Exceptions
│ │ │ ├── HttpException.ts
│ │ │ ├── NotAuthorizationException.ts
│ │ │ ├── NotFoundException.ts
│ │ │ └── index.ts
│ │ ├── Helpers
│ │ │ └── index.ts
│ │ ├── Middlewares
│ │ │ ├── ErrorMiddleware.ts
│ │ │ ├── LoggerMiddleware.ts
│ │ │ └── index.ts
│ │ ├── Repositories
│ │ │ ├── BaseRepository.ts
│ │ │ └── index.ts
│ │ ├── Requests
│ │ │ ├── ValidateRequest.ts
│ │ │ └── index.ts
│ │ ├── Traits
│ │ │ └── ResponseTraits.ts
│ │ └── Utils
│ │ ├── axiosClient.ts
│ │ └── index.ts
│ ├── Routes
│ │ └── index.ts
│ ├── api
│ │ └── Users
│ │ ├── Controllers
│ │ │ └── UserController.ts
│ │ ├── Middlewares
│ │ │ └── UserMiddleware.ts
│ │ ├── Requests
│ │ │ └── UserRequest.ts
│ │ ├── Routes
│ │ │ └── index.ts
│ │ ├── Services
│ │ | └── UserService.ts
│ │ └── Repository
│ │ └── UserRepository.ts
│ └── index.ts
├── tsconfig.json
└── tslint.json
Folder Infrastructures
chứa những Common source code
hoặc là Base source code
Folder Routes
sẽ là nơi tổng hợp tất cả các Routing
của ứng dụng.
File index.ts
là file sẽ chạy khi start app và mình chỉ định nghĩa các port nào cho app
File App.ts
mình init express
app và attach các router, middleware…
Folder api
chứa các modules
như Users
, Auth
, …
Trong mỗi modules bao gồm các sub folder như:
- Controllers // Handle request, chúng ta ko xử lý logic tại đây mà sẽ đưa cho
Service
đảm nhận - Middlewares // Có thể viết thêm các middleware dành riêng cho module
- Requests // Định nghĩa các rule cho việc validate request trước khi vào
Controller
- Routes // Khai báo tất cả các router của module
- Services // Sẽ xử lý phía logic của module
- Repository // Access vào DB truy vấn data
Trên đây là cách mình tổ chức thư mục cho project, cảm ơn bạn đã đọc bài viết này, và bài tiếp theo sẽ hướng dẫn các bạn implement nó