Các phương án thay thế
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Lịch sử các cách tiếp cận kiến trúc
Big Ball of Mud
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Nó là gì; Tại sao nó phổ biến; Khi nào nó bắt đầu mang lại vấn đề; Phải làm gì và FSD giúp đỡ đây như thế nào
- (Article) Oleg Isonen - Last words on UI architecture before an AI takes over
- (Report) Julia Nikolaeva, iSpring - Big Ball of Mud and other problems of the monolith, we have handled
- (Article) DD - Big Ball of mud
Smart & Dumb components
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Về cách tiếp cận; Về khả năng áp dụng trong frontend; Vị trí của methodology
Về sự lỗi thời, về quan điểm mới từ methodology
Tại sao cách tiếp cận component-container lại xấu?
Design Principles
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Chúng ta đang nói về điều gì; Vị trí của FSD
SOLID, GRASP, KISS, YAGNI, ... - và tại sao chúng không hoạt động tốt cùng nhau trong thực tế
Và nó tổng hợp các thực hành này như thế nào
DDD
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Về cách tiếp cận; Tại sao nó hoạt động kém trong thực tế
Sự khác biệt là gì, nó cải thiện khả năng áp dụng như thế nào, nó áp dụng các thực hành ở đâu
- (Article) DDD, Hexagonal, Onion, Clean, CQRS, ... How I put it all together
- (Talk) Ilya Azin - Feature-Sliced Design (fragment about Clean Architecture, DDD)
Clean Architecture
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Về cách tiếp cận; Về khả năng áp dụng trong frontend; Vị trí của FSD
Chúng giống nhau như thế nào (đối với nhiều người), chúng khác nhau như thế nào
- (Thread) About use-case/interactor in the methodology
- (Thread) About DI in the methodology
- (Article) Alex Bespoyasov - Clean Architecture on frontend
- (Article) DDD, Hexagonal, Onion, Clean, CQRS, ... How I put it all together
- (Talk) Ilya Azin - Feature-Sliced Design (fragment about Clean Architecture, DDD)
- (Article) Misconceptions of Clean Architecture
Frameworks
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Về khả năng áp dụng trong frontend; Tại sao các framework không giải quyết vấn đề; tại sao không có cách tiếp cận duy nhất; vị trí của FSD
Không phụ thuộc vào framework, cách tiếp cận thông thường
- (Article) About the reasons for creating the methodology (fragment about frameworks)
- (Thread) About the applicability of the methodology for different frameworks
Atomic Design
Nó là gì?
Trong Atomic Design, phạm vi trách nhiệm được chia thành các layer tiêu chuẩn.
Atomic Design được chia thành 5 layer (từ trên xuống dưới):
pages
- Chức năng tương tự với layerpages
trong FSD.templates
- Các component xác định cấu trúc của trang mà không gắn với nội dung cụ thể.organisms
- Các module bao gồm các molecule và có logic kinh doanh.molecules
- Các component phức tạp hơn nói chung không chứa logic kinh doanh.atoms
- Các component UI không có logic kinh doanh.
Các module ở một layer chỉ tương tác với các module ở các layer bên dưới, tương tự như FSD. Tức là, các molecule được xây dựng từ các atom, các organism từ các molecule, các template từ các organism, và các page từ các template. Atomic Design cũng bao hàm việc sử dụng Public API trong các module để cô lập.
Khả năng áp dụng cho frontend
Atomic Design tương đối phổ biến trong các dự án. Atomic Design phổ biến hơn trong các nhà thiết kế web hơn là trong phát triển. Các nhà thiết kế web thường sử dụng Atomic Design để tạo ra các thiết kế có thể mở rộng và dễ bảo trì. Trong phát triển, Atomic Design thường được trộn lẫn với các methodology kiến trúc khác.
Tuy nhiên, vì Atomic Design tập trung vào các component UI và sự kết hợp của chúng, một vấn đề phát sinh với việc triển khai logic kinh doanh trong kiến trúc.
Vấn đề là Atomic Design không cung cấp một mức trách nhiệm rõ ràng cho logic kinh doanh, dẫn đến việc phân tán nó qua các component và mức khác nhau, làm phức tạp hóa bảo trì và testing. Logic kinh doanh trở nên mờ nhạt, khiến việc phân tách rõ trách nhiệm trở nên khó khăn và làm code ít modular và có thể tái sử dụng hơn.
Nó liên quan đến FSD như thế nào?
Trong bối cảnh của FSD, một số yếu tố của Atomic Design có thể được áp dụng để tạo ra các component UI linh hoạt và có thể mở rộng.
Các layer atoms
và molecules
có thể được triển khai trong shared/ui
trong FSD, đơn giản hóa việc tái sử dụng và
bảo trì các yếu tố UI cơ bản.
├── shared
│ ├── ui
│ │ ├── atoms
│ │ ├── molecules
│ ...
So sánh FSD và Atomic Design cho thấy rằng cả hai methodology đều hướng tới tính modular và tái sử dụng nhưng tập trung vào các khía cạnh khác nhau. Atomic Design hướng tới các component trực quan và sự kết hợp của chúng. FSD tập trung vào việc chia chức năng của ứng dụng thành các module độc lập và các kết nối giữa chúng.
- Atomic Design Methodology
- (Thread) About applicability in shared / ui
- (Video) Briefly about Atomic Design
- (Talk) Ilya Azin - Feature-Sliced Design (fragment about Atomic Design)
Feature Driven
Bài viết đang trong quá trình hoàn thiện
Để đẩy nhanh việc phát hành bài viết, bạn có thể:
- 📢 Chia sẻ phản hồi của bạn tại bài viết (comment/emoji-reaction)
- 💬 Thu thập tài liệu liên quan về chủ đề từ chat
- ⚒️ Đóng góp bằng bất kỳ cách nào khác
🍰 Stay tuned!
Về cách tiếp cận; Về khả năng áp dụng trong frontend; Vị trí của FSD
Về tính tương thích, phát triển lịch sử và so sánh