Tôi vừa đọc qua một bài viết nói về những vấn đề thường thấy với Single Page App. Là một lập trình viên lâu năm về React và AngularJS, tôi hiểu một số lí do mà anh ấy đưa ra. Để làm ra một SPA tốt là chuyện không hề dễ dàng gì. Với lợi thế trong việc tạo ra trải nghiệm tuyệt vời cho user nhưng đồng thời đòi hỏi rất nhiều công sức.
Sau đây là một số lí do nhiều người không thích SPA:
- Có quá nhiều SPA framework để chọn và mỗi framework lại có một ecosystem riêng khiến cho bạn phải suy nghĩ rất kĩ về lựa chọn của mình
- Đòi hỏi nhiều công sức để làm UX tốt
- Yêu cầu nhiều developer để làm một dự án. Chỉ có backend developer thì SPA sẽ không bao giờ được hoàn chỉnh
- Bạn phải lên kế hoạch rất kĩ lưỡng cho cấu trúc app
- Phần lớn các SPA đều khá kén SEO trừ khi bạn có áp dụng server-side rendering vốn không phải là chuyện nhỏ
Nhưng SPA cũng có rất nhiều lợi ích cho End-User:
- Thời gian loading ngắn hơn. SPA .
- Ajax request thêm data và update cho hệ tương tác người dùng. Trong khi, website truyền thống phải reload mọi thứ cứ sau mỗi lần click.
- App của bạn xử lí nhanh hơn. Khi user làm bất cứ hành động nào, app sẽ ngay lập tức update. Trong một số trường hợp, bạn sẽ phải áp dụng một spinner để giúp user hiểu rằng app đang xử lí và phản ứng lại yêu cầu của user.
- Frontend và backend hoàn toàn cách biệt nhau nên bảo trì app trở nên dễ hơn..
- Giúp các frontend developer phát triển và tích lũy kinh nghiệm
Câu hỏi được đặt ra lúc này là khi nào thì ta nên dùng SPA?
Nếu website của bạn rất đơn giản, ví dụ như chỉ cần hiện thị thông tin và bạn cần SEO để tăng lượt vào xem thì SPA là không cần thiết bởi WordPress website là đủ rồi. Khi tạo ra blog của mình, tôi đắn đo giữa React hoặc WordPress và cuối cùng thì chọn WordPress bởi dù sao thì blog cũng khá đơn giản. Chỉ cần cài một cái theme là đã có ngay rồi.
Về SPA, hãy tự hỏi bản thân: Lần cuối cùng mà bạn xài Gmail classic (phiên bản chậm chạp của gmail) là khi nào? Từng click đều khá đắt giá. Và nó mất tới vài giây chỉ để reload lại toàn bộ website.
Như vậy, nếu website của bạn có nhiều tương tác khác nhau thì SPA là một lựa chọn tuyệt vời. Có rất nhiều ứng dụng từ SPA: chat app, CRM, online file manager, travel planning… Vì thế mà bạn phải dùng đúng loại tool tùy vào tình huống. Đã là 2017 nên các tool lập trình SPA đã được cải thiện. Cá nhân tôi vẫn thích lập trình app bằng React và AngularJS. Sau đây là một số nguyên nhân tôi thích React:
- Mọi thứ trên màn hình của bạn đều là component. Mà Components thì dễ phát triển và bảo trì.
- Bạn có thể tránh được việc CSS bị xung đột với style libraries như StyledComponent hoặc CSSModules
- Hot reloading giúp bạn update app mà không cần reload nó lại.
- GraphQL là một công cụ thần thánh cho data fetching, tôi tin nó sẽ thay thế REST.
- Javascript càng ngày mạnh mẽ hơn trong những năm gần đây. ES6 và ES7 giúp cải thiện hiệu năng làm việc của các developer hơn.
Nếu lần sau, có ai hỏi bạn về SPA thì hãy giải thích cho họ lúc nào thích hợp nên xài SPA cũng như những app nào thì nên dùng tới SPA.
Nguồn: blog.topdev.vn via Nam Tran via Codecamp