Nén JavaScript (JS Minifier)
Dán JavaScript để thu nhỏ bằng Terser: mã chết bị loại bỏ, tên biến được rút gọn và khoảng trắng biến mất. Lỗi cú pháp được chỉ ra đúng dòng và cột.
Chạy trên trình duyệtKhông cần đăng kýKhông tải lên gì
Cách dùng Nén JavaScript (JS Minifier)
- Dán JavaScript hoặc mở tệp
.js. - Chọn tùy chọn: Rút gọn tên biến làm ngắn biến cục bộ, Nén viết lại mã thành dạng tương đương nhỏ hơn, ES module cho phép
import/exportở cấp cao nhất. - Chọn phiên bản ECMAScript đích mà trình duyệt của người dùng hỗ trợ. ES2020 an toàn với mọi trình duyệt luôn cập nhật.
- Xem kích thước, mức tiết kiệm và ước tính gzip bên dưới kết quả.
- Sao chép mã đã nén hoặc tải xuống dưới tên
output.min.js.
Công cụ nén JavaScript làm gì?
Nén (minify) làm JavaScript nhỏ hơn mà không thay đổi chức năng. Công cụ này dùng Terser, trình nén đứng sau webpack, Vite và Rollup, và áp dụng ba loại thay đổi:
- Xóa khoảng trắng và chú thích: engine JavaScript không cần thụt lề, xuống dòng hay chú thích.
- Rút gọn tên (mangling): tên biến cục bộ và tham số hàm như
subtotaltrở thành một chữ cái. Tên toàn cục và thuộc tính object được giữ nguyên để API công khai của bạn vẫn hoạt động. - Nén (compression): biểu thức hằng được tính sẵn, mã không thể chạy tới bị loại bỏ, câu lệnh
iftrở thành toán tử ba ngôi và hàm ngắn được inline.
Minify và gzip: có cần cả hai?
Có. Gzip và Brotli nén các mẫu byte lặp lại khi truyền qua mạng, còn minify loại bỏ những byte mà trình duyệt lẽ ra phải tải về, phân tích và biên dịch. Một script điển hình giảm 40–60% nhờ minify và thêm 60–70% nữa nhờ gzip. Kích thước gzip hiển thị ở đây là ước tính sát với những gì máy chủ của bạn thực sự gửi đi.
Giữ chú thích giấy phép
Nhiều giấy phép mã nguồn mở (MIT, BSD, Apache) yêu cầu thông báo bản quyền phải đi kèm mã. Theo quy ước, chú thích bắt đầu bằng /*! hoặc chứa @license hay @preserve được giữ lại khi bật Giữ chú thích giấy phép.
Khi nào không nên nén thủ công
Nếu dự án của bạn đã dùng bundler, hãy để nó nén bản build production và tạo source map để debug. Công cụ nén online lý tưởng cho script dùng một lần, đoạn mã cho CMS hoặc tag manager, bookmarklet và để xem một đoạn mã có thể nhỏ tới mức nào.
Câu hỏi thường gặp
Mã của tôi có bị tải lên máy chủ không?
Nén có thể làm hỏng mã của tôi không?
Function.prototype.toString() hoặc dựa vào tên biến cục bộ qua eval có thể bị ảnh hưởng; khi đó hãy tắt Rút gọn tên biến.