Giao diện
@digiforce-nc/app
| Package | @digiforce-nc/app |
| Vai trò | Application bootstrap - entry point khởi động Digiforce server |
Tổng quan
@digiforce-nc/app là điểm vào (entry point) để khởi động một ứng dụng Digiforce. Package này thực hiện ba bước tuần tự:
- Load configuration - đọc file cấu hình ứng dụng
- Static plugin imports - nạp trước các plugin được khai báo tĩnh
- Start Gateway - khởi tạo và chạy server thông qua
Gatewaytừ@digiforce-nc/server
Cách hoạt động
getConfig()
Đọc cấu hình ứng dụng từ các nguồn (file .env, environment variables, config files). Trả về object cấu hình đầy đủ bao gồm:
- Database connection
- Server port & host
- Plugin list
- Logging level
- Các tùy chọn runtime khác
ts
const config = await getConfig();
// {
// database: { dialect: 'postgres', host: 'localhost', ... },
// port: 13000,
// plugins: ['users', 'acl', ...],
// ...
// }runPluginStaticImports()
Pre-load các plugin được import tĩnh (static import) - những plugin khai báo trực tiếp trong cấu hình ứng dụng thay vì dynamic load từ database.
Bước này đảm bảo các plugin core luôn sẵn sàng trước khi Gateway bắt đầu lifecycle chính.
Gateway
Gateway là class từ @digiforce-nc/server, quản lý toàn bộ application lifecycle:
| Giai đoạn | Mô tả |
|---|---|
| create | Tạo Application instance, kết nối database |
| start | init() → load() → install()/upgrade() → start() |
| restart | Dừng app hiện tại, tạo instance mới và start lại |
| stop | Graceful shutdown - đóng kết nối, cleanup resources |
Quan hệ với CLI
Khi chạy lệnh digiforce start, CLI (@digiforce-nc/cli) gọi package này:
bash
# Tương đương gọi @digiforce-nc/app
bun digiforce startFlow đầy đủ:
CLI (digiforce start)
→ @digiforce-nc/app
→ getConfig()
→ runPluginStaticImports()
→ Gateway.start()
→ Application.init()
→ Application.load()
→ Application.start()Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/server | Cung cấp Gateway và Application - engine chính |
@digiforce-nc/database | Kết nối và quản lý database |
TIP
@digiforce-nc/app là package mỏng - logic chính nằm trong @digiforce-nc/server. Package này chỉ đóng vai trò "keo dán" giữa config, plugin imports, và Gateway.