Tại sao Kit JS tồn tại?
Lại là mình, và hôm nay mình muốn nói về Kit JS — tại sao nó ra đời, tồn tại và phục vụ mục đích gì. Vì bài trước mình đã nói về câu chuyện, nhưng chưa thật sự target vào mục đích người dùng.

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

So sánh
Nếu so sánh Kit JS với Alpine, Angular, React, Vue hay thậm chí HTMX, thì Kit JS không ra đời để cạnh tranh với những framework hay thư viện đó — và nói thẳng ra, nó không bằng.
Bởi mục đích của Kit JS không phải để trở thành một full-stack framework như các công cụ sẵn có, mà là để phục vụ mục đích hydration (tăng cường) JavaScript ở phía client, với triết lý nhanh - gọn - nhẹ, được mình “clone” từ Golang (ngôn ngữ lập trình mình đang theo đuổi).
Một phần nào đó, nó cũng giống với Web Components, vì trước đây mình từng phát triển một bộ tương tự dựa trên triết lý đó, viết hoàn toàn bằng JavaScript.
Nhưng điểm khác biệt giữa Kit JS và các framework hoặc thư viện kia là:
nó có nét giống AngularJS (Angular 1) ở chỗ có một bộ compile riêng, được viết thuần JavaScript và không sử dụng hai hàm eval hay new Function.
Dù nhiều framework khác cũng tránh hai hàm đó khi build, nhưng Kit JS chạy trực tiếp, không cần build, không cần cấu hình tùy chỉnh.
Nếu nói về hiệu năng, phần evaluate của mình có thể chậm hơn một chút, vì không dùng eval và new Function.
Nhưng đổi lại là tính an toàn, dễ hiểu và không phụ thuộc vào trình build.
Kit JS là gì?
Kit JS là một framework / library JavaScript nhỏ gọn được tạo ra với mục đích tăng cường (hydrate) những phần tử HTML đã được render sẵn từ server.
Nó không thay thế framework, không tạo lại DOM, không cần build, và chỉ đơn giản là thổi sự linh động vào những phần tử tĩnh, giúp chúng có thể tương tác và phản ứng với dữ liệu ở phía client.
Trong hệ sinh thái của mình, server (viết bằng Go) đã đảm nhận việc render và routing giống như một framework full-stack. Vì vậy, Kit JS chỉ tập trung vào phần “client enhancement”, giúp HTML trở nên năng động mà không cần cấu hình phức tạp.
Tại sao không dùng eval hay new Function?
Câu trả lời thật ra rất đơn giản:
đó là tầm nhìn và góc nhìn cá nhân về bước tiếp theo trên hành trình tạo ra (hoặc tìm kiếm) một công cụ phù hợp với chính mình.
Hành trình và triết lý
Mình là một lập trình viên web hoặc những gì liên quan đến website.
Và mình luôn có những câu hỏi hơi kỳ lạ, như:
“Tại sao website không thể chạy ở mọi nơi?”
Mình từng thử nhiều thứ:
- Wails, WebView để chạy web như app;
- PWA / TWA để biến web thành mobile app;
- Tìm hiểu cách React Native hay Flutter dựng giao diện.
Nhưng cuối cùng, điều mình thật sự cần lại đơn giản hơn nhiều —
giống như bạn viết một Chrome Extension thuần vanilla JS.
Nếu bạn từng làm thế, bạn sẽ hiểu cảm giác đơn giản và thuần khiết đó.
Giống như việc đưa một website tĩnh lên mạng: chỉ cần một file index.html, upload lên hosting là xong.
Với mình, điều đó còn đơn giản hơn.
Bạn chỉ cần copy một file JS lên server — giống như lúc Steve Jobs tạo ra thao tác “kéo vào thùng rác để xóa”.
Nếu demo, mình chỉ cần copy file qua SSH bằng VS Code, và bam, website sống dậy ngay.
Tại sao lại làm điều này?
Nếu bạn từng đi tìm công cụ để build blog cá nhân – bạn sẽ hiểu:
website cần SEO.
Giờ thì hầu hết framework JS đều hỗ trợ SEO rất tốt,
nhưng ở thời điểm khái niệm JAMstack còn xa lạ, mình đã ở giữa giai đoạn chuyển từ Angular sang Golang.
Mình luôn theo đuổi một mục đích:
“Public website một cách đơn giản và nhanh gọn nhất.”
Nhưng sau đó, mình muốn quản lý tất cả website của mình dễ dàng hơn.
Và đó là lúc mình hiểu sâu hơn câu nói này:
“Mục đích khác nhau thì công cụ khác nhau.”
Mình không nói React hay Vue lỗi thời —
chỉ là chúng sinh ra để giải quyết những bài toán khác.
Giống như việc hơn 50% website hiện nay vẫn dùng jQuery,
và nhiều lập trình viên PHP vẫn kiếm được việc dễ dàng hơn.
Không có ngôn ngữ nào hoàn hảo.
Chỉ có ngôn ngữ — hay công cụ — phù hợp với mục đích của bạn.
Mục đích thật sự
Nếu bạn từng biết HTMX, có lẽ bạn sẽ thấy kỳ lạ:
“Tại sao lại tạo ra thứ như thế này khi đã có Vue hay React?”
Nhưng thật ra, mọi công cụ, framework hay thư viện đều được tạo ra để phục vụ chính người tạo ra nó.
Và Kit JS cũng vậy —
nó phục vụ chính mình trước hết.
Đối tượng phù hợp
Một lần nữa, mình muốn nhắc lại khái niệm hydration (tăng cường).
Đó là dành cho những website SSR như PHP (WordPress, Laravel), Liquid, Django, Flask, Golang Template...
Tất cả đều đã render DOM thật, và Kit JS chỉ giúp DOM mượt hơn, uyển chuyển hơn, dễ tương tác hơn.
- Nếu bạn cần build một Chrome Extension nhanh chóng như build website tĩnh – Kit JS phù hợp, vì không cần bundle, package hay NodeJS.
- Nếu bạn giống mình, quản lý nhiều website/sản phẩm nhỏ, bạn sẽ hiểu cảm giác không thể “build từng cái, deploy từng cái”.
Bạn chỉ muốn copy 1 file lên server và chạy.
Kit JS chỉ là một package được mình extract ra ngoài,
để chia sẻ câu chuyện #buildinpublic.
Mọi thứ trong hệ thống đều được mình quản lý bằng Go.
Và cuối cùng, Kit JS cũng dành cho những ai muốn nghiên cứu, chia sẻ và học hỏi.
Mình open-source để người khác có thể đọc, hiểu, custom, hoặc clone,
vì mình tin rằng:
“Bạn không cần giải thích, chỉ cần cho tôi đọc code của bạn.”
Dù bạn viết bằng ngôn ngữ nào,
chỉ cần mình đọc được code của bạn, mình có thể viết lại nó bằng Golang — ngôn ngữ mình yêu thích.
Giống như cách mình từng đọc một open-source PHP và viết lại nó bằng Go,
không vì hiểu PHP, mà vì muốn học thuật toán bên trong.
Đó là điều mình theo đuổi.
Và cuối cùng — mình là một developer mộng mơ
Vì sao là “mộng mơ”?
Có lẽ vì trải nghiệm và hoàn cảnh của mỗi người khác nhau.
Mình đã từng code rồi xóa,
đã từng chạy deadline không lương,
đã từng làm chỉ để học.
Mình không giỏi hơn ai cả,
chỉ là đang đi trên một con đường hơi khác một chút.
Và mình chia sẻ câu chuyện này,
để gửi đến những builder ngoài kia —
những người cũng đang âm thầm tạo ra điều gì đó:
“Hãy cứ đam mê, cứ dại khờ.”
Link: kitjs.org
20
lượt xem
Bài Viết Liên Quan

Năm năm trước, tôi trở về Tam Kỳ với hai bàn tay trắng, một chiếc laptop cũ kỹ và một trái tim đầy những ước mơ chưa gọi thành tên. Tôi không có tiền, không có công cụ, cũng chẳng biết con đường phía trước sẽ dẫn mình đi đâu. Tôi chỉ có một niềm tin mơ hồ rằng, đâu đó trong thế giới này, sẽ có một hướng đi dành cho kẻ muốn tự do trong công nghệ.

Có vẽ dạo gần đây có nhiều câu chuyện về quảng cáo Youtube và sự can thiệp của Server Side Render từ sever của youtube đang dần trở nên phổ biến. Bài viết này sẽ chia sẽ những điều tôi biết vê Server Side Rendering...

“Nếu đi về phía mặt trời, bạn sẽ đón nắng. Còn nếu đi ngược phía mặt trời, ánh sáng vẫn sẽ dõi theo.”

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.

Tôi từng nghĩ hành trình indie bắt đầu bằng một sản phẩm. Nhưng hóa ra, nó bắt đầu bằng những bước chân trên hành trình tìm lại chính 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.

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).

Tôi – Huỳnh Nhân Quốc .Tôi không đến với công nghệ qua những giảng đường đại học.Không bằng cấp. Không giáo trình. Không người chỉ dẫn. Chỉ là một góc nhỏ với một chiếc laptop cũ và một đứa trẻ mộng mơ ngồi gõ những dòng HTML đầu tiên trong ánh đèn của phòng nhỏ.
