Isomorphic JavaScript

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ế 
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
Việc sử dụng thuật ngữ 'Isomorphic JavaScript' là một vấn đề gây nhiều tranh cãi. '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. 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. Tuy nhiên, có nhiều người đề xuất sử dụng thuật ngữ Universal JavaScript thay thế.

Lợi ích
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ụ
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

JavaScript