TinyJS: Khi bạn chỉ cần một ứng dụng desktop thật nhỏ gọn

Công nghệ12 tháng 10, 2026·5 phút đọc

TinyJS là một runtime JavaScript siêu nhỏ, tận dụng WebView sẵn có của hệ điều hành để tạo ra các ứng dụng desktop chỉ nặng vài MB, thay vì hàng trăm MB như Electron. Dự án của lập trình viên Tarwin Stroh-Spijer mang đến giải pháp nhẹ nhàng cho những ai muốn xây dựng ứng dụng desktop nhanh, tiết kiệm tài nguyên.

TinyJS: Khi bạn chỉ cần một ứng dụng desktop thật nhỏ gọn

Trong khi cả thế giới đang mải mê xây dựng các trung tâm dữ liệu khổng lồ để chạy hàng nghìn tỷ dòng code do AI sinh ra, một lập trình viên lại chọn đi ngược dòng: tạo ra hệ sinh thái để viết và chạy những ứng dụng nhỏ gọn trên máy tính để bàn, như thể chúng ta đang quay về năm 1992.

Tarwin Stroh-Spijer, người tự nhận là "kẻ chế tạo đồ vật", đã tạo ra một runtime JavaScript mang tên TinyJS, cho phép xây dựng các ứng dụng cực nhỏ (nhiều ứng dụng chỉ chiếm khoảng 6MB hoặc ít hơn trên ổ đĩa) cho macOS, Linux và Windows. Đây không phải là framework "no code" với khả năng hạn chế, mà cung cấp toàn bộ sức mạnh lập trình của JavaScript cùng khả năng hiển thị và giao tiếp của hệ điều hành bên dưới.

Bí quyết nằm ở WebView của hệ điều hành

Điểm mấu chốt giúp TinyJS tiết kiệm tài nguyên là việc sử dụng WebView có sẵn của mỗi hệ điều hành, tận dụng engine trình duyệt tích hợp để hiển thị giao diện ứng dụng thay vì tự xây dựng lớp UI từ đầu.

  • Trên macOS, TinyJS dùng WebKit
  • Trên Windows, nó dùng WebView2
  • Trên Linux, nó dùng WebKitGTK

Cách tiếp cận này hoàn toàn khác biệt so với Electron – framework đóng gói cả một nhân trình duyệt Chromium mã nguồn mở vào từng ứng dụng desktop.

Electron hứa hẹn giao diện đồng nhất trên mọi nền tảng, nhưng cái giá phải trả là ngay cả ứng dụng đơn giản nhất cũng có thể nặng tới 150MB.

Ngược lại, ứng dụng TinyJS sẽ có đôi chút khác biệt về giao diện khi chạy trên các nền tảng khác nhau, do sự khác biệt nhỏ trong cách engine hiển thị của mỗi hệ điều hành hoạt động.

Rust không phải lúc nào cũng là câu trả lời

Phần lõi của TinyJS là txiki.js, một runtime JavaScript siêu nhỏ do Saúl Ibarra Corretgé viết, khiến cho Deno và Bun trông như những gã khổng lồ. Gói khởi đầu chỉ khoảng 5.6MB, trình khởi chạy chiếm thêm khoảng 1MB. Phần còn lại về cơ bản là code của nhà phát triển.

Stroh-Spijer cũng đơn giản hóa quá trình phát triển bằng cách sử dụng cơ chế giao tiếp liên tiến trình (interprocess communication) của hệ điều hành để xử lý truyền dữ liệu, loại bỏ nhu cầu đóng gói máy chủ HTTP cho mỗi ứng dụng cùng những rắc rối bảo mật đi kèm.

Toàn bộ việc lập trình trong TinyJS được thực hiện bằng JavaScript, CSS và HTML – không cần biên dịch.

Dự án Tauri cũng có mục tiêu tương tự là tạo ra các ứng dụng nhỏ gọn, có thể cho ra ứng dụng desktop chỉ trong 10MB, nhưng framework này có một số hạn chế. Nhược điểm chính là bạn phải viết ứng dụng bằng Rust, đồng nghĩa với việc phải học ngôn ngữ này.

TinyJS còn giao phó phần lớn nền tảng của ứng dụng cho hệ điều hành – như hộp thoại, menu, khay hệ thống, clipboard, tự động cập nhật – những thứ mà với Tauri sẽ phải nhập từng plugin một.

Không cần Node.js làm phụ thuộc

Các nhà phát triển không cần Node.js như một phụ thuộc ở đây, trừ khi họ muốn chạy framework yêu cầu nó, ví dụ như Vite. TinyJS cũng hỗ trợ các framework JavaScript khác như React, Vue và Svelte, hoặc có thể chạy hoàn toàn không có phụ thuộc nào.

Bạn cũng có thể dùng TinyJS để bọc một trang web bằng cách hướng cửa sổ tới một URL. Hãy tưởng tượng có trang web yêu thích của mình như một ứng dụng trên desktop.

Cả một kệ ứng dụng tí hon

Với TinyJS, Stroh-Spijer đã tạo ra một "app store" có thể chạy ngay từ desktop. Tính đến thời điểm này, nó liệt kê 25 ứng dụng mẫu do ông viết.

Các ứng dụng mẫu, đều miễn phí, có mức độ hữu ích và tính ngẫu hứng khác nhau:

  • Đồng hồ thế giới (file zip 3.8MB)
  • Ứng dụng lịch sử clipboard (3.7MB)
  • Trình soạn thảo markdown (4.9MB)
  • Desktop ghost (3.8MB)
  • Trình duyệt SQLite (4.1MB)
  • Và ấn tượng nhất: bản sao của trình nghe nhạc Winamp huyền thoại, chỉ chiếm 7.4MB trên ổ cứng

Sau khi thuyết phục Windows Defender tin tưởng trình khởi chạy, bạn có thể tải và mở ứng dụng mình chọn trực tiếp từ kệ.

Trong thử nghiệm, ứng dụng copy-and-paste – rõ ràng được viết cho phím tắt Mac – vẫn còn quá nhiều lỗi trên Windows, dù đồng hồ thế giới chạy rất tốt và chỉ tiêu thụ 15.5MB RAM. Trình khởi chạy có kiểm tra mã hash để đảm bảo tính hợp lệ của ứng dụng đã tải xuống, dù bạn vẫn phải tin rằng Stroh-Spijer không có ý đồ xấu.

Vì sao vẫn cần ứng dụng nhỏ gọn?

Máy tính cá nhân ngày nay rất mạnh mẽ, nhưng vẫn có nhiều lý do chính đáng để xây dựng những ứng dụng nhỏ gọn ngay cả theo tiêu chuẩn của thế kỷ trước.

  • Các ứng dụng thương mại và trình duyệt web là những "kẻ ngốn RAM" khủng khiếp, nên thêm công cụ vào desktop với ít chi phí tài nguyên là điều tích cực
  • Khác với các ứng dụng cồng kềnh, ứng dụng tí hon khởi động nhanh
  • Về lý thuyết, chúng tiêu thụ ít điện năng hơn trên laptop

Và cũng giống như meme trên TikTok về người phụ nữ nhất quyết mang chú chó lên máy bay vì nó chỉ là "một chú chó tí hon", người dùng có thể muốn thêm những ứng dụng này vào desktop của mình, đơn giản vì chúng nhỏ.

Đối với các nhà phát triển Việt Nam đang tìm kiếm giải pháp nhẹ nhàng cho ứng dụng desktop – đặc biệt trong bối cảnh nhiều máy tính văn phòng vẫn còn cấu hình khiêm tốn – TinyJS có thể là một lựa chọn đáng cân nhắc. Việc không cần học Rust như Tauri, cùng khả năng tận dụng kiến thức web sẵn có, giúp rút ngắn đáng kể thời gian phát triển cho các dự án nhỏ.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗