Trang chủ › Blog › Giải pháp phát triển
Các loại framework phát triển Web/Mobile và cách lựa chọn
Framework giúp công việc của bạn đơn giản hơn, tiết kiệm công sức viết code hoàn toàn từ đầu. Ngoài ra, sử dụng framework phù hợp còn giúp thiết kế và xử lý sự cố nhanh hơn, rút ngắn thời gian phát triển.
1. Framework là gì?
Framework là mã khung (boilerplate) giúp đơn giản hóa việc phát triển bằng cách cung cấp hạ tầng để xây dựng code riêng của bạn. Hoặc, bạn có thể coi nó là một template cung cấp sẵn các chức năng tái sử dụng, được viết sẵn nhằm giúp phát triển phần mềm dễ dàng hơn.
Nói như vậy nghe khá trừu tượng, nên hãy lấy một ví dụ đơn giản để cụ thể hơn. Giả sử bạn là frontend developer, đang tham gia một dự án phát triển full-stack. Bạn có thể dùng một trong nhiều backend framework phổ biến cung cấp sẵn chức năng phía server cần thiết, rồi thêm code tùy chỉnh cho phần frontend.
Hầu hết ngôn ngữ lập trình đều có ít nhất một framework liên quan (có khi nhiều hơn). JavaScript có Vue, Angular; Ruby có Ruby on Rails; Python có Django, v.v. Nội dung của framework khác nhau rất nhiều tùy theo framework, ngôn ngữ và mục đích.
Phần lớn framework phổ biến là mã nguồn mở và được cộng đồng developer duy trì. Ví dụ, Vercel tạo ra Next.js nhằm tăng tốc phát triển ứng dụng và giúp developer sử dụng dịch vụ đơn giản hơn.
2. Các loại framework phát triển ứng dụng Web và Mobile
Framework có thể dùng để phát triển website, ứng dụng mobile, data science và nhiều lĩnh vực khác. Dưới đây là một số framework phổ biến.
2.1 Framework ứng dụng Web
- AngularJS là framework JavaScript phía frontend. Đây là một trong những web framework phổ biến nhất, được cộng đồng nhiệt tình ủng hộ.
- AngularJS do Google phát triển và hỗ trợ. Nó có các tính năng như two-way data binding giúp rút ngắn thời gian phát triển, và dependency injection giúp các đoạn code khác nhau dễ tương tác với nhau hơn.
- Django là framework phát triển web mã nguồn mở được Django Software Foundation hỗ trợ. Được viết bằng Python — ngôn ngữ lập trình phổ biến — Django được thiết kế để khuyến khích "phát triển nhanh và thiết kế gọn gàng, thực tiễn". Nó nhanh, an toàn và có khả năng mở rộng.
- Rails cũng là framework mã nguồn mở. Nó được viết bằng Ruby — ngôn ngữ lập trình hướng đến sự dễ sử dụng. Rails được thiết kế để cần ít code hơn, ít lặp lại hơn, và được cộng đồng lớn hỗ trợ. Rails cũng được dùng để xây dựng các trang như Airbnb, Twitch, Hulu.
- Express là backend framework của Node.js, cho phép khởi động và cấu hình server với gần như không tốn thêm chi phí. Miễn phí, mã nguồn mở, viết bằng JavaScript. Express nổi tiếng vì rất linh hoạt. Ngoài ra, các developer còn tạo ra nhiều middleware package để giải quyết các vấn đề phát triển web.
2.2 Framework phát triển Mobile
- Flutter là framework mã nguồn mở của Google. Hỗ trợ cả iOS và Android, có các widget tùy chỉnh hoàn toàn.
- Flutter được thiết kế để tăng tốc phát triển ứng dụng, tạo ra ứng dụng hấp dẫn, thân thiện với người dùng. Nó dùng một lớp mỏng code C/C++, nhưng phần lớn hệ thống được viết bằng Dart.
- Xamarin là framework dựa trên .NET rất phổ biến của Microsoft. Cũng hỗ trợ iOS và Android, với cộng đồng gồm 60.000 contributor.
- React Native do Facebook phát triển. Mã nguồn mở, đa nền tảng, viết bằng JavaScript. Được dùng trong nhiều ứng dụng phổ biến như Discord, Instagram, Shopify.
- NativeScript là framework đa nền tảng mã nguồn mở. Ứng dụng NativeScript được xây dựng bằng JavaScript, và cũng hỗ trợ các framework JavaScript khác như Angular, Vue. Nổi tiếng nhờ hỗ trợ backend phong phú.
- Ionic cũng là framework đa nền tảng mã nguồn mở. Sử dụng JavaScript, HTML, CSS, và có thư viện component UI, cử chỉ, công cụ được tối ưu cho mobile. Ionic xây dựng ứng dụng nhanh và có thể tích hợp với các frontend framework như Angular, Vue.
3. Ưu điểm của framework
Framework cung cấp bộ khung để lập trình viên xây dựng lên trên đó khi tạo phần mềm hay ứng dụng web, giúp họ không cần bắt đầu từ số 0. Nói cách khác, nó giúp giảm chi phí phát triển phần mềm/web và rút ngắn thời gian phát triển.
Nhưng đó không phải là tất cả những gì framework mang lại.
- Tập trung vào một mảng phát triển cụ thể: Nếu bạn là full-stack developer, mạnh về backend, bạn có thể dùng framework để bao quát phần frontend, từ đó tập trung vào thế mạnh của mình.
- Nâng cao năng suất: Framework có thể bao quát các chức năng tái sử dụng, mang tính tổng quát. Nhờ đó, lập trình viên không cần viết code cho những phần không thay đổi giữa các dự án phần mềm/web. Ngoài ra, học framework của một ngôn ngữ như Java còn giúp tăng tốc độ phát triển và nâng cao năng suất hơn nữa.
- Dễ kiểm thử hơn: Framework giúp bạn loại bỏ vấn đề nhanh hơn khi bắt đầu xử lý sự cố. Ví dụ, nếu bạn dùng một frontend framework uy tín, bạn có thể yên tâm nó hoạt động đúng và tập trung xử lý sự cố vào phần backend.
- Tốc độ: Khi phát triển ứng dụng từ đầu, code cho một chức năng cụ thể có thể chưa được tối ưu hoàn hảo. Nếu triển khai chức năng tương tự bằng framework, bạn sẽ dùng code đã được phát triển để chạy nhanh nhất có thể và liên tục được cải tiến. Nói cách khác, dùng framework có thể giúp ứng dụng của bạn chạy nhanh hơn.
- Độ tin cậy: Framework được duy trì bởi các developer, những người kiểm thử code kỹ lưỡng để đảm bảo độ tin cậy cao nhất. Framework cũng được xây dựng để theo kịp yêu cầu thay đổi, nên ứng dụng web của bạn không bất ngờ ngừng hoạt động.
- Tài liệu hướng dẫn: Một framework tốt đi kèm tài liệu phong phú và sự hỗ trợ từ cộng đồng. Một lý do lớn để dùng framework là có sẵn nguồn tham khảo được cập nhật thường xuyên, cùng những người khác học hỏi và chia sẻ kinh nghiệm từ đó.
- Bảo mật: Dù framework được duy trì bởi công ty như Meta, Microsoft hay bởi cộng đồng lập trình viên, bạn vẫn có thể tin tưởng rằng nó đã được kiểm thử và kiểm thử lại nhiều lần để xử lý các lỗ hổng bảo mật của ngôn ngữ lập trình.
4. So sánh framework và library
Framework và library có cùng mục đích: mở rộng phạm vi chức năng developer có thể dùng ngay, tối ưu khối lượng công việc của developer, và giảm khả năng xảy ra lỗi hay code kém hiệu quả. Framework và library là các khối code do bên thứ ba phát triển nhằm giải quyết các vấn đề chung trong một ngôn ngữ lập trình cụ thể.
Tuy nhiên, hai khái niệm này có sự khác biệt về mặt kỹ thuật. Một trong những khác biệt then chốt giữa framework và library là quyền kiểm soát lệnh gọi. Khi dùng library, lập trình viên quyết định khi nào và ở đâu sẽ gọi nó.
Khi dùng framework, framework sẽ chỉ dẫn bạn. Nó cung cấp bộ khung cơ bản và cho lập trình viên biết cần gì. Vì vậy, developer sẽ chèn code cần thiết, bổ sung vào framework theo chức năng mong muốn. Nhưng cuối cùng, chính framework là nơi gọi code khi cần, và cũng chịu trách nhiệm chạy chương trình.
5. Nhược điểm của framework
Framework rất phù hợp với nhiều loại phần mềm và phát triển web, nhưng không hoàn hảo. Dưới đây là một số thách thức tiềm ẩn cần lưu ý khi cân nhắc dùng framework.
Cần học framework và ngôn ngữ của nó: Framework giúp lập trình viên tăng tốc phát triển, nhưng nó không đơn thuần là công cụ cắm-vào-là-chạy. Bạn cần học chính framework đó, đồng thời cũng cần biết ngôn ngữ lập trình mà framework dựa vào. Ví dụ, dù bạn muốn dùng Django, bạn vẫn cần có kiến thức về Python để làm được điều đó.
Giới hạn về cấu trúc: Ngay cả framework tiên tiến nhất cũng không được thiết kế để làm được mọi thứ. Chúng được thiết kế cho mục đích cụ thể, chẳng hạn cung cấp một chức năng backend nhất định, nên ít hữu ích cho các công việc khác.
Có rất nhiều framework: Framework gần đây rất phổ biến, nên việc chọn đúng cái phù hợp có thể khó khăn. Bạn cần cẩn trọng để tìm ra lựa chọn tốt nhất cho ứng dụng của mình và tận dụng tối đa nó.
6. Làm sao để chọn đúng framework?
Nếu tự mình tìm framework, có một số câu hỏi giúp bạn quyết định dễ dàng hơn. Ví dụ, bạn biết những ngôn ngữ lập trình nào? Việc dùng framework mã nguồn mở có quan trọng không? Framework cần những chức năng gì? Bạn mạnh về frontend developer hơn backend developer, hay ngược lại? Bạn đang làm dự án như thế nào?
Sau khi trả lời những câu hỏi này, hãy tìm framework phù hợp với yêu cầu của bạn. Sau đó, tìm hiểu xem các lập trình viên khác nghĩ gì về framework đó. Tìm cộng đồng lập trình viên đang dùng framework đó và hỏi xem họ có thấy nó phù hợp với bạn hay không.
Dù là phát triển frontend bằng JavaScript hay backend bằng Python, có rất nhiều nguồn tài nguyên ngoài kia. Vì vậy, đừng lúc nào cũng chọn framework mới nhất, hào nhoáng nhất. Hãy tìm hiểu kỹ và chọn công cụ phù hợp với bạn.
7. Kết luận
Đề xuất quan trọng nhất cho lập trình viên muốn dùng framework phần mềm để phát triển ứng dụng là học framework và ngôn ngữ lập trình mới dựa trên nhu cầu của ứng dụng đang phát triển.
Ngoài ra, bạn nên phân tích các mảng như frontend, backend, quản lý cloud, công nghệ mobile, cùng thị phần tiềm năng và tính bền vững của công nghệ đó, hiểu rõ đặc điểm của công nghệ trước khi quyết định có gắn bó với nó hay không.




