Sự kết hợp giữa LiveView và Svelte
- LiveView mang đến một cách tiếp cận độc đáo để xây dựng ứng dụng web.
- Máy chủ giữ trạng thái, xử lý hành vi của frontend ở backend và cập nhật DOM theo từng bước.
- Độ phức tạp của SPA đến từ độ phức tạp của hệ thống phân tán, và LiveView mang lại trải nghiệm client phong phú mà không cần microservice frontend.
Những điểm khó của LiveView
- Trạng thái phía client là điều không thể tránh khỏi, và độ trễ giữa máy chủ và người dùng cũng không thể loại bỏ.
- LiveView để máy chủ đảm nhận nhiều thay đổi DOM, nhưng không thể kiểm soát mọi thứ.
- LiveView có ba loại component: LiveViews, LiveComponents và Components.
- Việc refactor giữa LiveView và LiveComponents phiền phức hơn dự kiến.
Định hướng còn mơ hồ của LiveView
- LiveView thường tạo cảm giác rằng nó đang thiếu một điều gì đó.
- LiveView có nhiều điểm chung với các framework frontend hiện đại, nhưng cần nhận ra sự khác biệt và tiếp cận vấn đề theo cách khác.
LiveView + Svelte
- LiveSvelte cho phép render component Svelte trong LiveView.
- Backend kiểm soát props của component frontend, và cả frontend lẫn backend đều có trạng thái.
- Có một kênh giao tiếp riêng tư, hai chiều giữa frontend và backend.
Những đặc tính đột phá của LiveSvelte
- Việc phân chia trách nhiệm giữa backend và frontend rất rõ ràng, và độ phức tạp được tập trung ở phía máy chủ.
- LiveView phát huy tốt nhất vai trò frontend cho backend, cung cấp một tiến trình backend có thể render component frontend và duy trì trạng thái.
Ý kiến của GN⁺
- Sự kết hợp giữa LiveView và Svelte giúp tách biệt hiệu quả việc quản lý trạng thái giữa máy chủ và client, đồng thời cho phép nhà phát triển xây dựng ứng dụng nhanh hơn và trực quan hơn.
- Công nghệ này có thể đặc biệt hữu ích với các ứng dụng web nơi tương tác thời gian thực là quan trọng, và có thể góp phần cải thiện trải nghiệm người dùng.
- Tuy nhiên, vì độ trễ với máy chủ có thể ảnh hưởng đến trải nghiệm người dùng, tối ưu hiệu năng và bố trí máy chủ theo khu vực có thể là những yếu tố cần cân nhắc quan trọng.
- Sự kết hợp giữa LiveView và Svelte mang đến một mô hình mới cho các nhà phát triển đã quen với cách xây dựng SPA truyền thống, với tiềm năng giảm độ dốc học tập và nâng cao hiệu quả phát triển.
- Khả năng đồng bộ trạng thái thời gian thực và giao tiếp hai chiều mà công nghệ này cung cấp có thể là lựa chọn hấp dẫn cho các công cụ cộng tác, dashboard hoặc các ứng dụng xử lý dữ liệu thời gian thực.
1 bình luận
Ý kiến trên Hacker News
Một trong những mẫu được dùng trong game video nhiều người chơi là có phần mã về cơ bản chạy ở cả phía client lẫn server.
Tôi đã có một bài trình bày tại ElixirConf 2022 về cách kết hợp LiveView và Svelte, và những người đóng góp cho live_svelte đã giúp biến điều đó thành hiện thực.
Khi có hàng mới đi vào, LiveView sẽ cập nhật client nên chỉ cần push vào bảng.
Chúng tôi dùng Svelte cùng với LiveView trong BeaconCMS.
Thay vì quản lý trạng thái trên client, bạn quản lý trạng thái ở cả client lẫn server.
Giới hạn của cách tiếp cận này nằm ở tốc độ ánh sáng: server có giới hạn về mức độ gần với người dùng.
Tôi là người tạo ra LiveSvelte, nếu có câu hỏi thì cứ cho tôi biết.
Nói chung tôi luôn muốn xây ứng dụng theo mô hình này: hướng sự kiện, cập nhật thời gian thực hai chiều cùng với server, sự kiện có thứ tự, trạng thái cục bộ và từ xa...
Tôi đang dùng các Stimulus controller có thể tái sử dụng cùng với LiveView trong ứng dụng, và cách này cũng hoạt động rất mượt.
Dự án rất tuyệt! Tôi vừa phát hành một tập Svelte Radio về nó.