TopGit
Đánh giá repo GitHub

Vant: thư viện UI Vue cho web di động

youzan/vant
VTopGit review image for youzan/vant
Review by Topgit.dev for youzan/vant, with GitHub repository stats and README context.
Nhận định nhanh

Vant là thư viện component Vue của Youzan, được xây dựng riêng cho màn hình web di động chứ không phải một bộ UI tổng quát bị kéo giãn cho vừa điện thoại. Nó chỉ thực sự đáng dùng khi bạn đang xây một layout một cột, ưu tiên thao tác chạm — một dashboard admin Vue 3 hay ứng dụng desktop rộng gần như không được lợi gì từ bộ picker, action sheet và swipe-cell vốn được tinh chỉnh cho thao tác một ngón tay.

Sao
★ 24.4k
Fork
⑂ 9.4k
Người đóng góp
👥 381
Ngôn ngữ
TypeScript
Giấy phép
MIT
Chủ đề
Mobile
Cập nhật
Oct 2026
Trang chủ
GitHub

Vant là gì

Vant là thư viện component Vue từ công ty thương mại điện tử Youzan của Trung Quốc, được tạo ra để triển khai giao diện web di động thay vì dashboard desktop. Vant đóng gói hơn 80 component — button, picker, action sheet, swipe cell, tabbar, stepper — mỗi component viết bằng TypeScript và giữ kích thước đủ nhỏ để trung bình mỗi component chỉ khoảng 1KB sau khi minify và gzip.

Các tính năng nổi bật của Vant

  • ✓Cung cấp hơn 80 component mà không có dependency bên thứ ba nào ở runtime, nên bundle mặc định đã gọn.
  • ✓Mỗi component trung bình chỉ khoảng 1KB sau khi minify và gzip, theo số liệu chính README công bố.
  • ✓Hỗ trợ song song cả Vue 2 và Vue 3, cộng thêm Nuxt 2 và Nuxt 3 qua một module Vant riêng.
  • ✓Có sẵn tree shaking, nên chỉ import vài component sẽ không kéo theo toàn bộ thư viện.
  • ✓Có sẵn dark mode và hệ thống theming tùy chỉnh để override token thiết kế trên toàn bộ thư viện.
  • ✓Hỗ trợ SSR (server-side rendering) ngay từ đầu, hữu ích cho các storefront dùng Nuxt.
  • ✓Có sẵn i18n với hơn 30 ngôn ngữ đi kèm.
  • ✓README báo cáo độ phủ unit test hơn 90%, và toàn bộ thư viện viết bằng TypeScript.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Cài đặt Vant trong dự án Vue

Với dự án Vue 3, chạy `npm i vant` để lấy bản phát hành hiện tại; nếu vẫn đang dùng Vue 2, cài tag `vant@latest-v2` — bản được đóng băng riêng để tránh dính breaking change. Yarn, pnpm và Bun đều dùng được tương tự — chỉ cần đổi `npm i` thành `yarn add`, `pnpm add`, hoặc `bun add`. README cũng gợi ý Rsbuild, một build tool do cùng tác giả Vant phát triển, là cách khởi tạo project được khuyến nghị qua `npm create rsbuild@latest`, dù bước này không bắt buộc nếu bạn đã có sẵn build Vue.

Sử dụng component Vant đầu tiên

Vant theo đúng pattern import theo từng component mà hầu hết thư viện Vue dùng: import phần cần dùng từ `vant`, import CSS riêng, rồi đăng ký vào app instance. Style không tự động đi kèm. Ví dụ quickstart trong README import `Button`, import `vant/lib/index.css` để lấy style, rồi đăng ký bằng `app.use(Button)` trước khi mount — nghĩa là style là opt-in theo từng component chứ không phải một file CSS toàn cục.

Khi nào nên chọn Vant

  • •Web app ưu tiên di động và trang H5 phục vụ trong trình duyệt nhúng của WeChat — use case gốc của Vant tại Youzan.
  • •Luồng thương mại điện tử hoặc checkout cần picker, stepper, và swipe-to-delete giỏ hàng thân thiện với thao tác chạm.
  • •Storefront server-rendered dựng bằng Nuxt, vì Vant có sẵn SSR và một module Nuxt riêng.
  • •Team đang chạy Vue 2 cần một bộ component ổn định, vẫn được maintain, thay vì phải migrate toàn bộ sang Vue 3 trước.

Điều developer thích ở Vant

  • ✓Tree shaking ở cấp component nghĩa là bạn chỉ ship CSS và JS cho phần đã import, không phải cả thư viện.
  • ✓Dark mode và biến theme có sẵn từ đầu, không phải gắn thêm qua một plugin riêng.
  • ✓Hỗ trợ song song Vue 2 và Vue 3 khiến đây là lựa chọn an toàn cho team đang trong quá trình migrate.
  • ✓Type TypeScript đi kèm ngay trong thư viện, nên editor có autocomplete mà không cần gói @types riêng.

Hạn chế và đánh đổi

  • △Không hỗ trợ desktop theo kiểu native — dùng component Vant ngoài màn hình cảm ứng cần thêm gói riêng vant-touch-emulator để giả lập sự kiện chạm bằng chuột.
  • △Hỗ trợ accessibility được README ghi rõ là "vẫn đang cải thiện", chưa phải một tính năng hoàn chỉnh, đã qua audit.
  • △Vant 2 yêu cầu Android 4.0+ và iOS 8.0+, còn Vant 3/4 yêu cầu Chrome 51+ và iOS 10.0+, nên thiết bị thật sự cũ có thể nằm ngoài phạm vi hỗ trợ.
  • △Youzan là công ty Trung Quốc, và README có riêng trang giới thiệu tiếng Trung và tiếng Nhật bên cạnh bản tiếng Anh — một số project trong hệ sinh thái cộng đồng, như vant-theme, chỉ có tài liệu tiếng Trung.
Xem trên GitHub ↗Trang chủ ↗

Các lựa chọn thay thế cho Vant

Vuetify — thư viện component Vue theo Material Design, thiên về desktop/dashboard hơn nhưng cũng có layout responsive. ↗Ionic Framework — toolkit UI di động đa nền tảng, dùng được với Vue, React hoặc Angular chứ không riêng cho Vue. ↗NutUI — thư viện component Vue cho di động từ JD.com, phạm vi tương tự Vant với hệ thống theming riêng.Varlet — thư viện component di động Material Design chỉ dành cho Vue 3, hẹp hơn Vant vì Vant hỗ trợ cả Vue 2 lẫn Vue 3.

Câu hỏi thường gặp

Vant có miễn phí khi dùng cho mục đích thương mại không?

Vant được phát hành theo giấy phép MIT, nên hoàn toàn miễn phí để dùng trong dự án thương mại. Giấy phép MIT cho phép sử dụng, chỉnh sửa và phân phối lại source code của Vant mà không phải trả phí license, miễn là giữ nguyên thông báo bản quyền gốc trong codebase. Điều này bao gồm cả việc build và bán sản phẩm.

Vant có hỗ trợ cả Vue 2 và Vue 3 không?

Vant hỗ trợ cả hai: gói `vant` hiện tại nhắm vào Vue 3, còn cài `vant@latest-v2` sẽ cho bản Vue 2 được đóng băng riêng. Vant 2 và Vant 3/4 cũng nhắm vào baseline trình duyệt hơi khác nhau, nên hãy chọn đúng lệnh cài đặt theo phiên bản Vue của dự án thay vì trộn lẫn.

Làm sao để tùy chỉnh theme trong Vant?

Vant có sẵn tính năng custom theme, được README liệt kê là một trong những tính năng cốt lõi cùng với dark mode. Vant cung cấp các biến theme để bạn override màu sắc và spacing cho toàn bộ component cùng lúc, thay vì phải chỉnh CSS từng component riêng lẻ. Tên biến cụ thể nằm trong tài liệu chính thức của Vant.

Vant có hỗ trợ accessibility tốt không?

Vant có hỗ trợ accessibility nhưng README của chính dự án ghi rõ là "vẫn đang cải thiện", chưa phải một tính năng hoàn chỉnh hay đã qua audit. Vant chưa công bố số liệu tuân thủ WCAG, nên nếu accessibility là yêu cầu bắt buộc nghiêm ngặt, hãy tự kiểm tra lại từng component trước khi triển khai.

Kích thước bundle của Vant lớn cỡ nào?

Theo README của Vant, mỗi component trung bình khoảng 1KB sau khi minify và gzip, và thư viện không có dependency bên thứ ba nào ở runtime. Kết hợp với tree shaking có sẵn, việc chỉ import các component bạn dùng — như một Button duy nhất — giữ bundle thực tế nhỏ hơn nhiều so với import cả thư viện.

Vant có hoạt động được với Nuxt.js không?

Vant hoạt động với Nuxt: README liệt kê hỗ trợ cả Nuxt 2 và Nuxt 3, và team Vant maintain một module Vant Nuxt riêng để tích hợp vào dự án Nuxt. Vant cũng hỗ trợ server-side rendering (SSR) trực tiếp, thứ mà Nuxt cần cho pipeline render của nó.

Vấn đề mà Vant giải quyết

Tự xây một trang web di động bằng Vue từ đầu nghĩa là phải tự viết action sheet, danh sách swipe-to-delete, và picker thân thiện với thao tác chạm, rồi tự tinh chỉnh từng cái cho màn hình nhỏ. Vant đóng gói sẵn khoảng 80 component như vậy để một team Vue không phải làm lại bộ UI di động mà Youzan đã tự xây cho từng trang H5 hay luồng checkout mới.

Ai nên dùng — và ai nên bỏ qua

Developer Vue đang xây web app di động, trang campaign H5, hoặc storefront chạy Nuxt sẽ có ngay bộ component đã được thiết kế cho thao tác chạm — picker, action sheet, swipe cell — mà không cần tự lắp ráp từ các primitive UI tổng quát. Team làm dashboard hoặc admin panel ưu tiên desktop nên tìm giải pháp khác: component của Vant mặc định nhắm vào viewport di động, và việc chỉnh lại cho chuột-bàn phím nghĩa là phải gắn thêm gói touch-emulator riêng thay vì dùng một thư viện thực sự được thiết kế cho việc đó.

Repo liên quan

Nguồn & ghi công

Dựa trên repository GitHub youzan/vant và README của dự án.

Dữ liệu GitHub · đồng bộ lần cuối 15 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Muốn nghe thêm một ý kiến về vant?

Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về vant.

GitHub