- Published on
JavaScript Framework nào là tốt nhất?

- Authors
- Name
- Nguyen Pham
Tổng quan
Đâu là JavaScript Framework tốt nhất hiện nay? Vâng! Đây là một câu hỏi muôn thuở mà nhiều nhà phát triển thường đặt ra khi bắt đầu một dự án mới. Trong bài viết này, mình sẽ giúp quý vị chọn ra JavaScript Framework phù hợp nhất cho dự án của mình.
Thay vì bị rối bời bởi những ý kiến trái chiều từ cộng đồng lập trình, hãy cùng tìm hiểu xem JavaScript Framework nào là tốt nhất cho dự án của quý vị. Bởi càng hiểu rõ và có đủ thông tin chi tiết về dự án thì chắc chắn quý vị sẽ có định hướng đúng đắn cho quyết định của mình.
Câu chuyện của tại hạ
Trước đây và khoảng những năm 2006-2015 jQuery là JavaScript Framework phổ biến nhất, mặc dù nó rất đơn giản so với những gì chúng ta thấy ngày nay nhưng tại thời điểm đó nó đã giúp rất nhiều nhà phát triển xây dựng các ứng dụng web một cách dễ dàng và nhanh chóng. Nói không ngoa, jQuery đã làm nên một kỳ tích trong lịch sử lập trình web. Ngoài việc nó giúp tại hạ tương tác với DOM một cách dễ dàng, mà còn là một chén cơm đúng nghĩa, chỉ cần ngồi viết dăm ba cái plugin là có thể kiếm được một khoản tiền kha khá. Điều mà ít người làm được, tất nhiên đó không phải là một công việc dễ dàng.
Ấy vậy mà chỉ vài ba năm sau buổi hoàng kim của mình, jQuery đã bị "cạnh tranh" bởi những JavaScript Framework mới hiện đại hơn như Angular, React, Vue, Svelte, ... và cũng không thể không nhắc đến Node.js, một nền tảng mạnh mẽ cho phép chúng ta xây dựng hầu hết các ứng dụng web một cách dễ dàng.
Cũng không nằm ngoài vòng xoáy của sự bùng nổ JavaScript Framework thời điểm đó, tại hạ cũng dấn thân vào một cuộc vật lộn đầy rối bời và ngạt thở với lượng kiến thức đồ sộ của hàng đống Framework đó. Tài liệu thì ít mà các Framework thì cứ đua nhau mọc lên, cải tiến, lụi tàn ngày một. Chưa kịp học cái này xong thì nó đã bị khai tử, song song đó cái kia hay hơn đã xuất hiện... Đó là một khoảng thời gian kinh khủng nhất của không ít developer thời điểm đó.
Cứ vậy hết vật lộn với Angular lại nhảy sang React, Vue... rồi có hôm ngán quá lại quay về với Vanilla JavaScript, TypeScript... để rồi cuối cùng rồi lại hợp phố về Framework.
Có lúc nghĩ lại thấy uổng tiếc những khoảng thời gian phí phạm vào cho mấy framework chết yểu, nhưng có lúc lại thấy quý vì chính nhờ những xáo trộn đó lại giúp mình va chạm nhiều hơn với những cái hay, cái dở của mỗi framework để rồi có nhiều kinh nghiệm hơn trong những dự án về sau.
Không nên so sánh các Framework
Trên mạng không thiếu những người so sánh các Framework lẫn nhau, có người khen kẻ chê làm cho những người mới như tại hạ dạo trước đã đương rối càng thêm rối nữa. Thật tình mà nói những bài viết kiểu đó không giúp ích gì cho người đọc cả, có thể đó là vì mục đích quảng cáo trá hình hay vì mục đích nào đó khác. Nhưng nếu là một chuyên gia công nghệ thì chắc chắn cần có cái nhìn khách quan hơn, cần nêu ra từng Framework dựa trên những tiêu chí nhất định, từ đó đưa phần quyết định trở về cho người đọc.
Thực tế có nhiều người sử dụng những Framework đình đám nhưng viết code không tốt thì lại thua cả người viết code tốt với những ngôn ngữ già cỗi. Điều quan trọng nhất là viết code tốt, nắm vững kiến thức chuyên môn, chứ không phải là sử dụng Framework nào.
Vậy tại sao lại có quá nhiều JavaScript Framework?
Các Framework được tạo ra nhằm những mục đích khác nhau, có Framework dành cho việc xây dựng ứng dụng web real-time, có Framework dành cho việc xây dựng ứng dụng web tĩnh, có Framework dành cho việc xây dựng ứng dụng mobile, ... Mỗi Framework đều có những ưu điểm và nhược điểm riêng, và không có Framework nào là tốt nhất cả.
Ngoài ra các công ty công nghệ cũng tạo ra các Framework của riêng mình để phục vụ cho nhu cầu công việc của mình, ví dụ như Facebook đã tạo ra React, Google đã tạo ra Angular, ... Điều này giúp họ có thể kiểm soát được công nghệ của mình một cách tốt nhất, cũng như tránh được việc phụ thuộc vào các công nghệ của bên thứ ba.
Tìm kiểu JavaScript Framework phù hợp
Để chọn ra JavaScript Framework phù hợp cho dự án của mình, quý vị cần xác định rõ mục tiêu của dự án, nhu cầu công việc, kiến thức chuyên môn, ... Đừng chọn Framework chỉ vì nó đang thịnh hành, mà hãy chọn Framework phù hợp với mình và dự án của mình.
Có nhiều người chỉ nhìn vào các báo cáo thị trường, các bài viết so sánh các Framework, ... để rồi đưa ra quyết định một cách thiếu cơ sở, và đến khi thực hiện dự án thì rối bời vì không hiểu rõ về Framework mình chọn, không đáp ứng được yêu cầu của dự án.
Lấy ví dụ nếu một trang web WordPress có tuổi đời 10-20 năm và họ muốn thêm tính năng gì đó thì không có gì tốt cho bằng sử dụng jQuery và CSS cơ bản là đủ. Nhưng nếu một công ty mới thành lập và muốn xây dựng web site giới thiệu đơn giản KHÔNG cần real-time thì cũng không nên chọn NextJS, Angular, Vue, ... mà chỉ cần Astro hay Gatsby, ... là đủ. Đập ruồi thì không nhất thiết phải dùng dao mổ trâu.
Ngoài ra việc chọn Framework cũng phụ thuộc vào kiến thức hiện tại của quý vị, ví dụ nếu còn mới mẻ với lập trình thì nên chọn Framework dễ học, dễ sử dụng, dễ hiểu, khi đã thành thạo thì có thể chuyển sang các Framework phức tạp hơn.
Ví dụ: Nếu chỉ mới bắt đầu học lập trình thì nên chọn jQuery, CSS cơ bản, ... để hiểu rõ về cách hoạt động DOM của JavaScript, Properties của CSS trước đã rồi sau đó mới chuyển sang các Framework phức tạp hơn, tuy nhiên nếu vẫn còn chưa quen với mô hình MVC thì nên dùng Vue, Svelte... còn một khi đã thành thạo TypeScript rồi thì có thể chuyển sang Angular, React, ... sẽ thấy ngọt ngào hơn.
Độ bền của Framework
Với kinh nghiệm cá nhân, tại hạ cho rằng rằng một Framework nào đó có khả năng tồn tại lâu dài đều phụ thuộc vào các yếu tố sau:
- Cộng đồng lớn mạnh: Một Framework có cộng đồng lớn mạnh thì sẽ có nhiều người sử dụng, nhiều người đóng góp, nhiều người hỗ trợ, ... Điều này giúp Framework đó có thể tồn tại lâu dài hơn.
- Hỗ trợ từ công ty công nghệ: Một Framework được tạo ra bởi một công ty công nghệ lớn thì sẽ có nhiều nguồn lực hỗ trợ, nhiều nguồn lực nghiên cứu, ... Điều này giúp Framework đó có thể tồn tại lâu dài hơn. Ví dụ như React được tạo ra bởi Facebook, Angular được tạo ra bởi Google, ...
Nói như vậy không có nghĩa là các Framework không có cộng đồng lớn mạnh hoặc không được hỗ trợ từ công ty công nghệ lớn sẽ không tồn tại lâu dài, jQuery là một ví dụ điển hình. jQuery không được tạo ra bởi một công ty công nghệ lớn, nó được John Resig tạo ra một cách độc lập nhưng nó vẫn tồn tại và được sử dụng rộng rãi cho đến ngày nay.
Một số sự so sánh giữa các Framework
Dưới đây là một so sánh giữa các Framework phổ biến hiện nay, xin nói rõ đây không phải là nhận định của tại hạ mà là từ một trong số các bài viết trên mạng:
Feature | React | Angular | Vue | Svelte | Preact | Ember | Solid |
Virtual DOM | Yes | No | Yes | No | Yes | Yes | Yes |
Two-Way Data Binding | No | Yes | Yes | No | No | Yes | Yes |
Component-Based Architecture | Yes | Yes | Yes | Yes | Yes | Yes (optional) | Yes |
Size | Small (43.9 KB) | Large (2.1 MB) | Small (80 KB) | Small (10.5 KB) | Small (3.5 KB) | Large (1.3 MB) | Small (4.5 KB) |
Server-Side Rendering | No (but can be added with Next.js) | No (but can be added with Angular Universal) | Yes (but not as efficient as Next.js or Nuxt.js) | No (but can be added with Sapper or Elder.js) | No (but can be added with Preact CLI or SvelteKit) | No (but can be added with FastBoot or Glimmer.js) | Yes (but not as efficient as Next.js or Nuxt.js) |
Routing | React Router | Angular Router | Vue Router | Svelte Routing | Preact Router | Ember Router | Solid Router |
Popular Use Cases (e.g.) | Facebook, Instagram, Netflix, Airbnb, Dropbox | Google, Microsoft, IBM, Cisco | Alibaba Group, Xiaomi, Baidu, Xiaomi Youpin | Microsoft Teams, Discord | Etsy, Deno, Domino’s | LinkedIn.com, Yahoo.com | Durudex, aoe4world, Web |
So sánh Code
Svelte:
<script>
let name = "John";
name = "Jane";
</script>
<h1>Hello {name}</h1>
Angular:
import { Component } from "@angular/core";
@Component({
selector: "app-name",
template: `<h1>Hello {{ name }}</h1>`,
})
export class NameComponent {
name = "John";
constructor() {
this.name = "Jane";
}
}
Rõ ràng Svelte đơn giản hơn Angular nhiều
Nhìn vào bảng so sánh trên, quý vị có thể thấy rõ sự khác biệt giữa các Framework, những điều đó chẳng có ý nghĩa gì. Tại sao không chọn một Framework nhẹ nhàng như Svelte, Solid, Preact mà IBM, Google, Microsoft lại chọn Angular? Điều đó cho thắy rõ rằng những bảng so sánh như vậy chỉ thể hiện một phần vô cùng nhỏ của Framework, không thể nào đánh giá được Framework nào tốt nhất. Vì vậy đừng nên boăn khoăn quá nhiều vào những danh sách này.
Kết luận
Đừng chọn Framework chỉ vì nó đang thịnh hành hay nói về nó nhiều trên mạng, mà hãy chọn Framework phù hợp với sức của mình và thời gian khai triển... Chắc chắn quý vị sẽ cần đi máy bay cho một chuyến hành trình dài hơi nhưng sẽ không cần thiết nếu quãng đường chỉ vài chục km.

Nguyen Pham
Làm việc tại phòng thí nghiệm MADE, Texas, USA. Là một người đam mê với công nghệ và thích chia sẻ kiến thức với mọi người.