Isomorphic JavaScript, cũng được biết đến là Universal JavaScript, mô tả các ứng dụng JavaScript chạy trên cả client và server.

Cơ chế sửa

Isomorphic JavaScript có một số điểm giống như single page application (SPA). Với một SPA thông thường, hầu hết các logic của ứng dụng bao gồm routing, được đóng gói trong các file JavaScript rồi gửi tới và thực hiện ở phía client. Điều này giúp giảm tải cho server, vì nó không phải xử lý quá nhiều request và logic, tuy nhiên nó cũng làm lần tải đầu tiên bị chậm, vì toàn bộ ứng dụng phải được gửi tới client.

Với Isomorphic JavaScript, trong lần đầu tải trang, view của trang sẽ được render trên server, tương tự các trang web truyền thống, sau đó server gửi view đã được render dưới định dạng html tới client. Vì vậy client có thể render view ngay lập tức. Sau đó toàn bộ SPA được tải dưới background, và các hành động tiếp theo được xử lý ở phía client.

Tên gọi sửa

Việc sử dụng thuật ngữ 'Isomorphic JavaScript' là một vấn đề gây nhiều tranh cãi[1]. 'Isomorphic' lần đầu tiên được giới thiệu bởi Charlie Robbins từ Nodejitsu, trong một bài viết trên blog của công ty[2]. Sau đó, Spike Brehm một kỹ sư phần mềm tại Airbnb đã viết một bài viết khác sử dụng thuật ngữ này[3]. Tuy nhiên, có nhiều người đề xuất sử dụng thuật ngữ Universal JavaScript thay thế.

Lợi ích sửa

Isomorphic JavaScript đã khắc phục được những nhược điểm lớn của SPA như:

  • Tốc độ tải trang trong lần đầu tiên.
  • SEO

Công cụ sửa

Một số công cụ hỗ trợ tạo các ứng dụng Isomorphic JavaScript: Next.js cho ReactJs, Nuxt.js cho VueJs, Angular Universal cho Angular.

Tham khảo sửa

  1. ^ “Is "Isomorphic JavaScript" a good term?”. 2ality. Lưu trữ bản gốc ngày 21 tháng 6 năm 2017. Truy cập ngày 15 tháng 6 năm 2017.
  2. ^ Inc., Nodejitsu. “Scaling Isomorphic Javascript Code | Nodejitsu Inc”. blog.nodejitsu.com. Lưu trữ bản gốc ngày 3 tháng 7 năm 2017. Truy cập ngày 15 tháng 6 năm 2017.
  3. ^ AirbnbEng (ngày 11 tháng 11 năm 2013). “Isomorphic JavaScript: The Future of Web Apps”. Airbnb Engineering & Data Science. Lưu trữ bản gốc ngày 17 tháng 6 năm 2017. Truy cập ngày 15 tháng 6 năm 2017.