[Component 101] Bài 1 – Lược sử web và component

Cho đến thời điểm hiện tại, JSX và component vẫn là 2 trụ cột khiến cho các ngôn ngữ khác chưa thể tiến đến hay vượt trội so với React. Với nhiều người, JSX và component vẫn chỉ được sử dụng ở mức View, khiến cho React bị đánh giá là giống với các ngôn ngữ khác như Vue, Angular hay các ngôn ngữ có mô hình MVC truyền thống

Bài viết này sẽ phân tích sâu hơn về các tính năng mà chỉ có thể có với mô hình Component và JSX của React cũng như mở đầu cho chuỗi bài về cách để tối ưu hóa năng lực của Component

Lưu ý: Do người viết khá lâu không update các thư viện khác như Vue hay Angular, người viết xin từ chối so sánh các thư viện với nhau. Thiên ngoại hữu thiên, ngoài trời còn có trời khác. Và người viết cũng tin rằng với một cách dùng đúng đắn, bất kì ngôn ngữ nào cũng có thể đạt đến cảnh giới để giải quyết mọi loại bài toán một cách đơn giản nhất.

Lược sử web và component

Quay trở lại thuở hồng hoang trong lịch sử website, thứ đầu tiên được con người tạo ra như một website, có địa chỉ, có thể truy cập qua internet, là một trang html tĩnh hoàn toàn, một Frontend page.

http://info.cern.ch/hypertext/WWW/TheProject.html

Dần dà, người ta thấy nội dung trong các website không thể là tĩnh. Nó sẽ quá phức tạp để tạo ra các nội dung xuất bản một cách nhanh chóng hơn và chất lượng hơn. Người ta tạo ra những phần mềm sinh ra các mã HTML, đấy chính là các hệ thống backend.

Đồng thời, khi chất lượng thiết bị ngoại vi tốt lên, người ta có nhu cầu một trang web đẹp hơn, có thể tương tác được, và thế là CSS và các client-side language ra đời, điển hình là JavaScript.

Và rồi, một ngày đẹp trời, khi JavaScript càng ngày càng có nhiều các thư viện và nền tảng, và sức mạnh của máy trạm và Personal Computer càng ngày càng tăng, người ta bắt đầu nghĩ: Chuyện gì xảy ra nếu mã HTML cồng kềnh được render ngay dưới client.

Một ý tưởng hoàn toàn đơn giản và điên rồ được lóe lên: một ứng dụng có thể được đóng gói, download và chạy trên browser, có thể hoạt động hoàn toàn ở client-side và chỉ connect lên server mỗi khi cần thông tin. Một Single-page application.

Ý tưởng này lần đầu được hình thành trong những năm 2010, khi những thư viện mạnh mẽ hơn jQuery, lần đầu tiên có khả năng generate ra hoàn chỉnh các web page với lượng code cực ít. Tưởng tượng điều đó sẽ điên rồ thế nào nếu ta generate ra TOÀN BỘ giao diện facebook bằng javascript hay jQuery thuần. Tuy rất mạnh mẽ, nhưng hệ thư viện / nền tảng này vẫn chủ yếu là add-on, tức là từ nền HTML gốc, thư viện tạo ra các thay đổi trên mã HTML để xây dựng lên.

Và rồi một ngày đẹp trời, React JS ra đời. Khác với các thư viện / nền tảng khác, ngay từ những dòng đầu tiên, React đã xây dựng cho mình một đế chế riêng, không phụ thuộc vào HTML gốc, một trụ cột mà React chưa bao giờ thay đổi cho đến hôm nay: Component.

Không giống như MVC, MVP hay MVVM hay các pattern trước đó, Component được xây lên bằng một nguyên lý kỳ dị: Component có thể làm tất cả. Không view, không model, không controller. Component làm tất cả, từ xử lý dữ liệu, hiển thị hay lưu trữ. Việc của chúng ta chỉ là phân việc cho component nào làm cái gì. Một nguyên lý tưởng chừng cơ sở nhưng đi ngược lại tất cả những design pattern cao siêu của các nền tảng khác.

Tuy nhiên, chính nguyên lý rất cơ bản này lại tạo ra những đặc tính thú vị của Component trong React mà chúng ta sẽ có cơ hội trao đổi với nhau trên những phần sau.

Leave a Reply

Your email address will not be published. Required fields are marked *