Những điều React đã khiến chúng ta quên mất (hoặc vốn chưa từng biết)
(joshcollinsworth.com)- Bài viết đánh giá mang tính phê phán về React, thư viện JavaScript được sử dụng rộng rãi để xây dựng giao diện người dùng, đồng thời đề xuất các lựa chọn thay thế.
- React bị chỉ trích là đã lỗi thời, bị cho là thiếu hiệu năng và khả năng thích ứng.
- Tác giả cho rằng hệ sinh thái của React đã trở nên lớn một cách không cần thiết, và React hooks giờ đây cũng đã lỗi thời.
- Bài viết cho rằng ở frontend không nhất thiết phải tập trung vào rendering và scaling.
- Server-side rendering không còn là điều quá đặc biệt nữa, và data binding hai chiều không phải là một ý tưởng tồi.
- Styling đơn giản hơn React, và các framework khác cũng không khó học.
- Các lựa chọn thay thế cho React không chỉ là những thứ "mới và hào nhoáng" mà đã trưởng thành và mang lại hiệu năng tốt hơn.
- Bài viết khuyến nghị thử các framework khác như Svelte, Vue, Solid, Fresh, Astro, Preact, Qwik.
- Framework yêu thích cá nhân của tác giả là Svelte, được cho là dễ học hơn React và có hiệu năng tốt hơn.
- Svelte là một compiler, loại bỏ mã không dùng tới ngay tại thời điểm build để tạo ra bundle nhỏ hơn.
- Meta-framework của Svelte là SvelteKit rất đa dạng và mạnh mẽ, hỗ trợ static, server rendering và triển khai tại edge.
- Vue mang lại hiệu năng tốt hơn React và cách tiếp cận thiên về UI hơn, sử dụng ngôn ngữ template gần với HTML thuần hơn so với JSX.
- Solid là một phiên bản hiệu năng cao hơn của React, loại bỏ độ phức tạp, vấn đề hiệu năng và boilerplate. Nó cũng có meta-framework riêng là SolidStart.
- Fresh là framework frontend server-rendered được xây dựng trên Deno, sử dụng kiến trúc islands. Nó cung cấp lượng JavaScript tối thiểu và tải nội dung động rất nhanh.
- Astro là trình tạo static site hiệu năng cao, đồng thời có các tính năng động phía server. Mặc định nó không dùng JavaScript ở client và tương thích với nhiều framework frontend khác nhau.
- Preact là phiên bản gọn nhẹ và nhanh hơn của React, đồng thời có thêm một số tính năng xuất sắc mà React không có.
- Qwik đưa ra một cách tiếp cận mới, cung cấp kiểu mã tương tự React server-rendered và là lựa chọn tốt cho các dự án có nhiều tương tác.
- Các thư viện web component như Lit, Stencil, Polymer được khuyến nghị cho những dự án muốn tái sử dụng cùng một component ở nhiều môi trường hoặc chuẩn bị cho việc thay đổi framework.
- Tác giả cho rằng ngành công nghệ có thể thực hiện thêm một bước nhảy nữa trong việc áp dụng công nghệ, rời khỏi React để đến với những lựa chọn mới.
21 bình luận
Bài viết này trông thật nực cười, như thể một hậu bối vô lễ đang nói: “Tiền bối à~ giờ anh cũng chẳng còn gì ghê gớm nữa, nghỉ hưu đi chứ?”
Có vẻ như mọi người đang hơi quá khích về bài viết này. Vui lòng xem mục bình luận trong Hướng dẫn sử dụng trang web.
Xin hãy trao đổi một cách lịch sự và điềm đạm. Xin đừng công kích tác giả. Nếu có phản biện, vui lòng chỉ nêu nội dung phản biện đó.
Cá nhân tôi thấy việc dùng một ngôn ngữ như JS làm ngôn ngữ phát triển phía server thì không hay lắm.
Dạo này cũng có nhiều thứ dựa trên TS, nhưng rốt cuộc đầu ra vẫn là JS... Python cũng vậy, JavaScript cũng vậy, xét ở khía cạnh ngôn ngữ thì tôi thật sự không thích, nhưng có lẽ vì tính tiện dụng nên chúng vẫn được dùng rất nhiều.
Có cảm giác như một kiểu dân chủ hóa ngôn ngữ vậy.
Vì Vercel đã đổ bao công sức để làm ra nó nên có vẻ mọi người đang xem đó là điều quá hiển nhiên và chẳng có gì đặc biệt, nên tôi thấy không thích lắm.
Mỗi khi nhớ lại thời còn đi học phải viết servlet địa ngục bằng một editor thậm chí còn không bắt được lỗi cú pháp, tôi lại thấy biết ơn mọi thứ, từ React đến Svelte.....
Dùng thử cái này cái kia thì sẽ thấy cả ưu lẫn nhược điểm của React, nhưng kiểu nói React là tốt, JSX là thế mạnh, rồi phủ nhận cả những ý kiến tiêu cực về hooks thì có cảm giác như một thứ tôn giáo mù quáng vậy.
Tôi đã viết rằng điểm mạnh không phải là JSX mà là “tính biểu đạt”.. còn về hooks, khi thực sự đọc lại nguyên văn thì tôi xác nhận rằng bài đó không phải phê phán bản thân pattern hooks, mà chỉ viết ở mức rằng đó không còn là điểm mạnh riêng của React nữa. Mức đó thì có thể đồng ý được. Bản dịch lại thành như vậy nên tôi đã hiểu nhầm.
Vậy nên bạn có thể viết cụ thể hơn về “điểm mạnh vượt trội” mà bạn đã nắm được là gì không?
Chẳng lẽ bạn nghĩ các thư viện hay framework chỉ có ưu điểm mà không có nhược điểm sao? Khi dùng React, chẳng lẽ bạn chưa từng cảm thấy nó có điểm yếu nào à? Thấy bạn nhất quyết muốn người ta viết về nhược điểm, có vẻ như bạn chưa từng nhận ra lần nào nhỉ? Bạn cũng biết “ưu và nhược điểm” nghĩa là ngoài nhược điểm thì cũng có ưu điểm chứ, đúng không? Nó có nhiều ưu điểm, nhưng cũng lắm nhược điểm. Trong số đó, đây là điều tôi đọc được hôm qua, nhưng không nhớ link nữa: trong server component thì chỉ có thể dùng context của server component thôi. Vì thế nên không thể dùng CSS-in-JS. Tôi chưa tự thử nên cũng không thể khẳng định đó có thật là nhược điểm hay không haha. Còn hooks à? Tôi thật sự nghĩ đó là một ý tưởng mang tính đột phá. Nhưng bây giờ thì haha, đã có Signal thông minh hơn và dễ dùng hơn React rồi, trong bài cũng có nhắc đến.
Vâng, tôi đã nghe rất hay.
Trong lúc này mà vẫn còn thiếu Angular, huhu
Tôi hoàn toàn không đồng ý; riêng JSX thì người ta cố ý dùng vì nó có ưu thế về khả năng biểu đạt hơn HTML.
Cũng khó hiểu vì sao quan điểm phổ biến rằng data binding hai chiều vốn là một ý tưởng tệ lại bỗng dưng bị đảo ngược..
Còn "hệ sinh thái lớn một cách không cần thiết" thì lại là ý gì? Với cả hooks đã lỗi thời rồi nữa...
Cá nhân tôi còn nghi ngờ không biết đây có thật sự là bài viết do một lập trình viên thực thụ viết ra hay không.
Có vẻ có khá nhiều nội dung hợp lý. Dù tôi vẫn đang dùng React...
Có vẻ hơi gượng ép khi chỉ đơn thuần khẳng định rằng hiệu năng thấp mà không giải thích cụ thể về mặt kỹ thuật có những trade-off nào. Ví dụ, các trình triển khai islands ngoài React thì không thể làm những thứ như tải theo mức độ ưu tiên.
Trừ khi có thứ khác xuất hiện trong framework chính phủ điện tử... thì React ở Hàn Quốc gần như buộc phải rất mạnh thôi.
Ừm. Bài viết này đang đưa ra quá nhiều thư viện như những lựa chọn thay thế cho React.
Khi cân nhắc mọi thứ một cách tổng thể, có lẽ nên nhấn mạnh những điểm vượt trội hơn React thì tốt hơn.
Vue, Nuxt thật sự rất tốt, nhưng thật tiếc là ở trong nước vị thế của chúng khá hẹp. Còn Svelte thì... đang ở tình trạng chẳng thể nói là có vị thế được (hu hu)...
Chuẩn không cần chỉnh đến 10.000 lần
Ý kiến Hacker News
filter,map,reducetrong React được một số người xem là tiện hơn so với các giải pháp workaround.useMemovàuseCallback.