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
@kitmodule
6 phút đọc
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ờ.”
2
lượt xem
Người viết bài
Được đăng trên
Nền tảng kit module của chúng tôi giúp bạn xây dựng sản phẩm nhanh chóng và linh hoạt. Từng module được thiết kế để tích hợp dễ dàng, mở rộng mượt mà, và tùy biến theo nhu cầu thực tế – từ những nhu cầu thực tế nhỏ đến hệ thống quy mô lớn.
Bài Viết Liên Quan

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.

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.

Hôm nay, mình muốn kể cho mọi người nghe về Kit JS, một framework JavaScript nhỏ bé mà mình tự tay viết nên. Nó vẫn đang trong giai đoạn thử nghiệm – còn nhiều điều phải tối ưu, mở rộng – nhưng mình muốn chia sẻ nó với tinh thần #buildinpublic và #opencoding. Nó chưa hoàn hảo để ứng dụng vào sản phẩm thật, nhưng nó đủ để học hỏi, để mơ mộng và để nhớ lại tại sao ta yêu lập trình đến thế.

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

Mười năm mơ kết mây thành hoa trắng. Mây vỡ, hoa tan – tàn giấc mơ hoa. Nhưng giấc mơ hoa này, ta xin mơ một lần... Vì đời này, ta chỉ có một giấc mơ. Và một cuộc đời.

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.

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

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.

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

Khi bản thân tự định hướng cho mình một lối đi. Một con đường và một ánh sáng thì cứ đi theo ánh sáng đó.