Yaksha
Senior Member
Mình thì không thấy nó buồn cười bởi vì thực tế là nhiều dự án với legacy jQuery đang được thay thế bằng Svelte. Đương nhiên 2 libs này có cách tiếp cận khác nhau nên so sánh hơi khập khiểng, tuy nhiên bảo performance giống nhau là sai hoàn toàn.So sánh Svelte (declarative) với jQuery (imperative) rồi bảo jQuery chậm nó hơi buồn cười.
Lấy ví dụ một giá trị state trong JS khi thay đổi, kéo theo một loạt elements bị xóa khỏi cây DOM, kèm theo một loạt elements mới đc thêm vào. Lúc này mặc dù các elements mới có cùng tag, cùng class name và thậm chí cùng id nhưng với jQuery thì các references cũ đã mất tác dụng, cách duy nhất là phải duyệt cây DOM để tìm lại, tùy vào mức độ phức tạp bên trong mỗi element để gắn lại các listener tương ứng. Với Svelte thì điều này ko cần thiết, mọi thứ xóa đi và thêm vào vẫn làm việc một cách mượt mà.
Trường hợp ko chỉ thay đổi một vài phần tử mà là cả ngàn cái, bạn có thể tưởng tượng sự khác nhau về performance.
Điều này đúng, nhưng chưa đủ. Mọi framework đều làm, nhưng quan trọng là nó tối ưu đến cấp độ nào.Việc Svelte map giữa state và element là hiển nhiên, hầu như mọi framework đều thế.
Ví dụ như React, bạn có một state trong App component (dark mode chẳng hạn), thường nó là root layout của mọi components bên trong. Khi state này thay đổi, nó sẽ kéo theo toàn bộ components (con cháu chắt...) bên trong đều phải render theo. Nó sẽ sinh ra những side effect ko đáng có.
Với Svelte có cùng cấu trúc components tương tự, cho dù state trong App thay đổi, chỉ một số thành phần liên quan trực tiếp với nó mới bị update, toàn bộ cây components vẫn giữ nguyên, ko hề có sự xáo trộn.
Ai cũng làm nhưng người làm tốt hơn chắc chắn sẽ có sự khác biệt.

