Svelte gần đây đã hợp nhất một tính năng quan trọng cho phép các giá trị dẫn xuất có thể ghi được, bổ sung chức năng mới cho hệ thống phản ứng của nó. Thay đổi này là một phần của quá trình chuyển đổi rộng hơn sang hệ thống runes của Svelte 5, điều đã làm dấy lên nhiều cuộc thảo luận trong cộng đồng nhà phát triển về sự phát triển của framework và tác động của nó đến trải nghiệm của nhà phát triển.
Giá Trị Dẫn Xuất Có Thể Ghi
Tính năng mới được hợp nhất làm cho các giá trị dẫn xuất trong Svelte 5 có thể ghi được, đáp ứng nhu cầu thực tế trong phát triển ứng dụng. Trước đây, các giá trị dẫn xuất chỉ được phép đọc, điều này hợp lý về mặt khái niệm (vì chúng được tính toán từ các giá trị khác), nhưng hạn chế một số trường hợp sử dụng. Với sự thay đổi này, các nhà phát triển giờ đây có thể ghi đè lên các giá trị dẫn xuất, cho phép các mẫu linh hoạt hơn như cập nhật UI lạc quan, nơi các giá trị cục bộ tạm thời có thể được hiển thị trước khi có xác nhận từ backend.
Tôi yêu thích runes, tôi yêu thích svelte 5, tôi yêu thích sveltekit. Cùng nhau, chúng cung cấp một lối vào liền mạch cho việc phát triển, cho phép bạn nhanh chóng nắm bắt các khái niệm tương tự như JS/HTML.
Tranh Cãi Về Runes
Việc giới thiệu runes trong Svelte 5 thể hiện một sự thay đổi đáng kể từ tính phản ứng ma thuật của các phiên bản trước đó sang một mô hình rõ ràng hơn sử dụng các khai báo đặc biệt có tiền tố $ như $state
, $derived
, và $effect
. Mặc dù thay đổi này gây tranh cãi, nhiều nhà phát triển đã sử dụng runes trong các dự án lớn hơn báo cáo rằng đường cong học tập ban đầu nhường chỗ cho khả năng bảo trì tốt hơn và mã nguồn rõ ràng hơn. Bản chất rõ ràng của runes giúp dễ dàng hiểu luồng dữ liệu trong các component phức tạp, nơi mà mô hình phản ứng trước đây có thể trở nên khó hiểu với nhiều prop ràng buộc và trạng thái dẫn xuất.
Các Runes chính trong Svelte 5
$state
- Khai báo trạng thái phản ứng$derived
- Tạo các giá trị được dẫn xuất từ các giá trị phản ứng khác (hiện có thể ghi được)$effect
- Chạy các tác vụ phụ khi các phụ thuộc thay đổi
Phản hồi từ cộng đồng
- Tích cực: Rõ ràng hơn trong các dự án lớn, tính phản ứng dễ dự đoán hơn
- Tiêu cực: Mất đi tính đơn giản, đường cong học tập dốc hơn, thách thức trong quá trình chuyển đổi
- Trung lập: Cải thiện khả năng bảo trì nhưng đánh đổi bằng sự thanh lịch ban đầu
Đánh Đổi Trải Nghiệm Nhà Phát Triển
Cộng đồng dường như chia rẽ về việc liệu sự phát triển của Svelte đã cải thiện hay làm giảm trải nghiệm nhà phát triển. Một số nhà phát triển tiếc nuối về việc mất đi sự đơn giản và thanh lịch ban đầu của Svelte, điều đã làm cho nó đặc biệt hấp dẫn đối với các dự án nhỏ hơn. Những người khác lại cho rằng runes giải quyết các vấn đề quan trọng xuất hiện trong các ứng dụng lớn hơn, nơi mà sự ma thuật của các phiên bản trước có thể dẫn đến hành vi không mong muốn và thách thức trong việc gỡ lỗi.
Đối với các đội ngũ làm việc trên các ứng dụng sản phẩm, trải nghiệm di chuyển sang Svelte 5 đã có nhiều ý kiến khác nhau. Một số báo cáo rằng công cụ di chuyển tự động hoạt động đáng ngạc nhiên tốt, yêu cầu rất ít điều chỉnh thủ công ngay cả đối với các codebase lớn hơn. Những người khác lưu ý rằng hệ sinh thái đang trong giai đoạn chuyển đổi, với nhiều thư viện vẫn sử dụng mẫu stores cũ thay vì hệ thống runes mới.
Cân Nhắc Về Hệ Sinh Thái
Hệ sinh thái Svelte đối mặt với những thách thức trong giai đoạn chuyển đổi này. So với hệ sinh thái trưởng thành của React, Svelte có ít thư viện UI và công cụ hơn, và nhiều gói hiện có được duy trì bởi các đội nhỏ hiện đang đối mặt với công việc di chuyển. Điều này tạo ra một bất lợi tạm thời cho các đội đang cân nhắc Svelte cho các dự án mới, mặc dù những cải tiến cốt lõi của framework có thể vượt trội hơn những lo ngại này trong dài hạn.
Đối với các nhà phát triển đang đánh giá các framework frontend, thời điểm chuyển đổi này làm nổi bật những cân nhắc quan trọng. Svelte 5 với runes dường như cung cấp khả năng mở rộng tốt hơn cho các ứng dụng phức tạp với cái giá phải trả là mất đi một số sự thanh lịch ban đầu, trong khi các framework cạnh tranh như React duy trì lợi thế về độ rộng của hệ sinh thái và hỗ trợ công cụ.
Khi Svelte tiếp tục phát triển, tính năng mới nhất cho phép các giá trị dẫn xuất có thể ghi được thể hiện cam kết của đội ngũ trong việc cân bằng giữa sự thuần khiết về khái niệm với nhu cầu thực tế của nhà phát triển. Liệu cách tiếp cận này sẽ giúp Svelte đạt được sự áp dụng rộng rãi hơn hay không vẫn còn phải chờ xem, nhưng rõ ràng là framework này đang trưởng thành theo những cách giải quyết các thách thức phát triển ứng dụng trong thế giới thực.
Tham khảo: feat: make deriveds writable #15570