Ito: Xây dựng giao diện terminal bằng Lua thay vì JavaScript

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

Hai lập trình viên đam mê Neovim đã tạo ra Ito, một thư viện Lua giúp xây dựng giao diện người dùng trên terminal (TUI). Thư viện này cho phép tùy biến mọi thứ bằng Lua, lõi viết bằng Rust để tăng tốc độ, kèm theo một trang web tương tác cho phép thử nghiệm trực tiếp trên trình duyệt.

Ito: Xây dựng giao diện terminal bằng Lua thay vì JavaScript

Hai lập trình viên có chung niềm đam mê với Neovim vừa giới thiệu Ito — một thư viện Lua cho phép xây dựng giao diện người dùng trên terminal (TUI). Điểm đáng chú ý là toàn bộ quá trình tùy biến, từ cách định nghĩa nhà cung cấp dữ liệu cho đến giao diện, đều được thực hiện bằng Lua thay vì JavaScript.

Xuất phát từ thói quen "rice" terminal

Cộng đồng người dùng Neovim thường có thói quen gọi là "rice" — tức là tùy biến, trang trí terminal và trình soạn thảo theo phong cách cá nhân. Nhóm phát triển Ito cho biết họ muốn có một công cụ cho phép làm điều tương tự với giao diện terminal, nhưng theo cách phù hợp hơn với hệ sinh thái Lua.

"Pi là một lựa chọn tốt, nhưng cuối cùng nó lại viết bằng JavaScript. Tôi không có gì chống lại JavaScript, chỉ là Lua phù hợp hơn, và tôi có thể dễ dàng xây dựng nó trên nền Rust để chạy nhanh hơn." — chia sẻ từ nhóm phát triển.

Kiến trúc tối giản, mọi thứ đều bằng Lua

Ito được thiết kế với triết lý tối giản ở phần lõi. Mọi lớp trừu tượng tích hợp sẵn — cách định nghĩa provider, cách tùy biến giao diện — đều có thể viết hoàn toàn bằng Lua. Điều này giúp người dùng có toàn quyền kiểm soát mà không cần chuyển sang ngôn ngữ khác.

Điểm thú vị là ban đầu nhóm cân nhắc đi theo hướng Ratatui (một thư viện TUI phổ biến của Rust), nhưng cuối cùng lại chọn xây dựng một thư viện Lua thuần túy để có thể tạo TUI trực tiếp bằng Lua.

Trang web tương tác và hỗ trợ cho "vibe-coder"

Để giúp cộng đồng trải nghiệm nhanh chóng, nhóm phát triển đã viết một canvas tùy chỉnh thay vì dùng bộ chuyển đổi terminal thông thường, rồi xuất thư viện thành WebAssembly (wasm). Kết quả là một trang web workshop tương tác, nơi người dùng có thể viết và thử nghiệm giao diện TUI ngay trên trình duyệt.

Các tính năng đáng chú ý trên trang web:

  • Trình soạn thảo trực tiếp với xem trước cập nhật theo thời gian thực
  • Nhiều ví dụ mẫu như luồng nhập liệu, bộ đếm, danh sách hàng ngày, bảng tùy chọn và cửa hàng nhỏ
  • File ito.md đóng vai trò hướng dẫn dành cho LLM, hỗ trợ những người làm việc theo phong cách "vibe coding"
  • Các modifier quen thuộc như :spacing(), :padding(), :grow(), :bold(), :dim() để bố cục và tạo kiểu

Cách bắt đầu khá đơn giản: dùng require("ito") và trả về một hàm dựng giao diện, sử dụng ito.state(value) cho những giá trị thay đổi, kết hợp các thành phần như VStack, HStack, Text cùng các điều khiển khác.

Ý nghĩa với cộng đồng lập trình viên

Đối với lập trình viên Việt Nam, đặc biệt là những người làm việc nhiều với terminal, Neovim hoặc các công cụ dòng lệnh, Ito mở ra một lựa chọn mới ngoài các thư viện TUI phổ biến vốn chủ yếu dựa trên Rust, Go hoặc Python. Việc toàn bộ logic có thể viết bằng Lua giúp giảm rào cản chuyển đổi ngôn ngữ, đồng thời tận dụng được hiệu năng của lõi Rust bên dưới.

Thư viện được phát hành mã nguồn mở tại github.com/uji-labs/ito, còn công cụ harness đi kèm nằm ở github.com/uji-labs/uji. Với những ai muốn thử sức xây dựng giao diện terminal theo cách riêng, đây có thể là điểm khởi đầu đáng cân nhắc.

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