Directive Sync – Câu chuyện “dị” của Kit JS
Trong thế giới JavaScript, chúng ta đã quen với những khái niệm như bind, model, class hay style. Chúng đều xoay quanh một triết lý chung: data đi xuống, view phản ứng.

Kit Module
3 phút đọc
@kitmodule
17 tháng 10 năm 2025

Ý tưởng hình thành
Khi tôi bắt đầu phát triển Kit JS, tôi gặp một vấn đề khác — một thứ mà hầu hết các framework JS đều bỏ qua.
Trang web của tôi được render từ SSR (server-side rendering). Mọi thứ đã có sẵn trong HTML, SEO đã sẵn sàng. Nhưng khi tôi thử truyền lại state hoặc scope từ client vào những element đã được render đó, toàn bộ component bị re-render.
Và tôi nhận ra, tôi chỉ muốn đồng bộ lại dữ liệu, không phải vẽ lại thế giới.
Từ đó, Directive Sync ra đời.
Sync – một nhịp điệu khác của dữ liệu
Nếu model là cách framework truyền dữ liệu từ state ra view, thì sync là cách view nói ngược lại với state — một vòng khép kín mà không cần phá hủy hay dựng lại DOM.
Nói cách khác, sync không “làm lại”, nó nghe và ghi nhận.
Directive sync không sinh ra để ngược lại model, mà là sự kế thừa tự nhiên của nó trong bối cảnh SSR.
Nó tồn tại để giúp các trang được render sẵn từ server vẫn có thể hoạt động như một SPA nhẹ, nhưng không đánh mất giá trị SEO, tốc độ hay tính tĩnh của trang web.
Tại sao cần đến Sync?
Với các framework hiện nay, nếu bạn muốn có tính năng hai chiều (two-way binding), bạn phải để framework kiểm soát toàn bộ DOM.
Điều đó có nghĩa là khi HTML được render từ server, framework sẽ phải render lại lần nữa trên client để tạo ra binding.
Kết quả là:
- Bot SEO đọc được HTML thô nhưng không thấy trạng thái thật.
- Người dùng thấy một “nháy” khi trang re-render.
- Và bản thân ta phải chạy cả client lẫn server như hai thế giới tách biệt.
Sync giải quyết điều đó bằng cách tiêm ngược giá trị từ DOM đã render vào lại scope.
Không cần render lại, không cần diff DOM, chỉ đơn giản là đọc dữ liệu thật từ những gì server đã gửi — và giữ chúng nhất quán.
Triết lý đằng sau Kit JS và Directive Sync
Kit JS không được tạo ra để thay thế framework khác.
Nó sinh ra từ một nhu cầu rất cụ thể: kết nối lại giữa thế giới tĩnh và thế giới động, giữa SSR và reactive UI.
Đó không phải là một “ý tưởng framework mới”, mà là một tư duy ngược dòng:
Nếu dữ liệu đã ở đó, tại sao ta phải render lại?
Sync chính là sự biểu hiện của triết lý đó — đơn giản, thực tế và tôn trọng những gì đã có.
Nó không đòi làm chủ DOM, không buộc bạn phải “chạy lại” app, chỉ lặng lẽ đồng bộ để mọi thứ tiếp tục đúng như vốn dĩ.
Một mảnh nhỏ trong hành trình lớn
Kit JS, với tôi, không phải là cuộc đua framework.
Nó là một hành trình cá nhân để tìm lại sự tối giản trong cách ta viết web.
Directive Sync chỉ là một mảnh trong đó — một mảnh “dị” vì nó không chạy theo reactive thuần túy, mà hòa trộn giữa render tĩnh và sự sống động của dữ liệu.
Và có lẽ, chính trong sự “dị” đó, ta mới tìm thấy một hướng khác — nơi web vừa nhanh, vừa thật, và vẫn có linh hồn.
Link: kitjs.org
26
lượt xem
Bài Viết Liên Quan

Thế giới công nghệ phát triển nhanh chóng, và một trong những bước tiến thú vị mà tôi có cơ hội tiếp cận là hệ giao thức phân tán. Cơ hội này mở ra từ những nhu cầu tưởng chừng đơn giản như xây dựng một ứng dụng chat trực tiếp giữa các thiết bị mà không cần máy chủ trung gian. Điều này đưa tôi đến với các giao thức phân tán như WebRTC và các phương pháp truyền dữ liệu ngang hàng (Peer-to-Peer, hay P2P).

Golang (Go) là một ngôn ngữ lập trình đơn giản, hiệu quả, và mạnh mẽ, đặc biệt phù hợp cho những ai muốn xây dựng các ứng dụng có hiệu suất cao và dễ dàng mở rộng. Trong bài viết này, tôi sẽ chia sẻ lộ trình học Golang của mình và những trải nghiệm cá nhân trong quá trình học tập, hướng đến những người mới bắt đầu tìm hiểu ngôn ngữ này.

Cuối cùng, tôi vẫn tự hỏi: “Nếu có một dự án lớn, mình sẽ làm gì?”. Tôi chẳng có gì ngoài những nợ nần và niềm đam mê. Nhưng tôi biết, chỉ cần còn đam mê, tôi vẫn sẽ bước tiếp. "Coding and life" - đó là cách mà kẻ dại khờ này tiếp tục.

Sau hơn 1 năm chật vật với kinh tế. Tôi chỉ có 2 khách hàng đầu tiên từ website và ads. Tôi ngồi nói chuyện vu vơ với vài người bạn, tôi nhận ra rằng? Tại sao mình không sử dụng các data của mình đã thu thập để làm affiliate. Vậy là samdy ra đời, tôi viết một website về tìm kiếm sản phẩm giá tốt trên 3 nền tảng lazada, tiki và shopee.

Hành trình của tôi không bắt đầu ở một công ty lớn, cũng chẳng gắn liền với những startup gọi vốn hàng triệu đô. Nó bắt đầu từ một chiếc laptop cũ, từ căn phòng nhỏ ở quê nhà Tam Kỳ, nơi tôi vừa làm việc, vừa tự học code – và mang trong mình một khát khao duy nhất: “ Làm chủ công nghệ. Tạo ra giá trị thực bằng chính đôi tay mình.”

Đôi khi, một giấc mơ không bắt đầu bằng những điều lớn lao. Nó chỉ đơn giản nhen nhóm từ một khoảnh khắc tỉnh thức – khi ta dám dừng lại, dám đi chậm hơn một nhịp giữa guồng quay vội vã của cuộc sống, để lắng nghe chính mình.

Có lẽ trên con đường Affiliate Hay trở thành Một Top Publisher sẽ không ít khó khăn ở từng giai đoạn nhưng Affiliate đã đưa mình vào những thành tựu bản thân muốn đạt được từ những bước chân đầu tiên. Với chỉ 14 nghìn một tháng, ăn cơm nhà và dám mơ ước được những điều lớn lao sau này. Trong ước vọng của trái tim nhỏ bé này chưa bao giờ ngừng mơ ước hoài bão, về điều gì đó có thể hình thành.

Chỉ là mình thích cách lập trình web của mình. Có thể tùy chỉnh theo ý thích và không phụ thuộc vào framework.
