Kiến trúc Level 9 (Plugin System & Feature Registry) thực chất là cấp độ thiết kế phi tập trung hóa phần giao diện và định tuyến (Decentralized UI & Routing). Cụ thể hơn, trong codebase này nó mang lại các tính chất cốt lõi sau:
1. Tính Cắm và Chạy (Plug-and-Play)
- Trong kiến trúc cũ (truyền thống), khi tạo một tính năng mới, bạn phải sửa rất nhiều file cốt lõi của hệ thống: khai báo route trong routes.tsx, thêm label vào Sidebar.tsx, khai báo icon, phân quyền...
- Với Level 9, mỗi tính năng (Feature) là một hộp đen độc lập. Tính năng tự định nghĩa toàn bộ thuộc tính của nó bằng một Plugin Object (ở file [feature].module.ts). Bộ máy chính (Core) coi mọi thứ như một "phích cắm". Quản trị viên chỉ cần khai báo "cắm" nó vào src/app/plugins.ts là hệ thống tự động sinh ra menu, tự ráp route và kiểm tra quyền nội bộ.
2. Tiêu chuẩn Cách ly (Feature Isolation)
- Nếu tính năng "Khách hàng" bị lỗi code UI, nó sẽ không làm sập tuyến đường của tính năng "Đơn hàng".
- Không có hiện tượng "Git conflict" tại các điểm nút định tuyến trung tâm khi làm việc nhóm, vì mỗi lập trình viên chỉ làm việc trong ranh giới thư mục Feature của riêng họ.
3. Tối ưu Gói ứng dụng (Bundle Size Optimization)
- Bằng cách ép buộc toàn bộ Plugin phải nạp logic thông qua hàm lazy(import('./...')), ứng dụng ban đầu (shell) tải với tốc độ cực nhanh vì nó không chứa bất kỳ logic giao diện nặng nề nào của các tính năng.
- Lợi ích: Lập trình viên có thể thêm hàng trăm tính năng (modules) vào hệ thống ERP này. Trình duyệt của người dùng chỉ thực sự tải mã nguồn của module đó khi họ bấm vào menu tương ứng trên Sidebar. Đảm bảo ứng dụng chạy mượt mà ngay cả khi dự án khổng lồ lên.
4. Khả năng Kiểm soát và Tái cấu trúc tự động (Automated Discovery)
- Code lõi (Router và Navigation) hoàn toàn sử dụng hàm lặp qua vòng lặp của Registry thay vì các thiết lập nối chuỗi.
- Tính năng phân quyền (RBAC - Role Based Access Control) được nhúng sâu ở mức Feature. Code lõi tự động xác định không render menu hoặc chặn truy cập route nếu user không có quyền trong mảng requiredRoles của Plugin đó.
Tóm tắt, Level 9 đưa tư duy "Micro-frontends" cơ bản vào ứng dụng React, chuyển từ việc hệ thống phải đi phục vụ và liên kết với từng tính năng, sang việc các tính năng tự động ghi danh và hệ thống chỉ đóng vai trò phân phối tài nguyên.
#Level9 #SoftwareArchitecture #PluginSystem #ReactJS #MicroFrontends #WebDevelopment