Autumn Note
Editor WYSIWYG zero-dependency — không jQuery, không framework bắt buộc.
Gần như mọi hệ thống nội bộ đều có một chỗ cần nhập nội dung có định dạng: CMS, knowledge base, form hỗ trợ, soạn email. Các lựa chọn quen thuộc đều kèm một chi phí: Summernote cần jQuery, TinyMCE và Froala thu phí cho tính năng nâng cao, và tất cả đều nặng cho một component xuất hiện ở khắp sản phẩm. Autumn Note viết bằng vanilla JavaScript thuần ES2022, build ra cả ES Module (tree-shakeable) và UMD dùng trực tiếp qua thẻ script, kèm TypeScript definitions. Từ v2.1.0, package import được trong môi trường server-side rendering — trước đó việc đọc `navigator` ngay khi nạp module làm `import` báo lỗi trên Node, khiến hai wrapper React và Vue không dùng được với Next.js và Nuxt.
- Markdown shortcuts — gõ
#,>hoặc-rồi dấu cách là tự thành heading, blockquote, danh sách - Bubble toolbar nổi ngay trên đoạn văn bản đang chọn, giảm khoảng cách mắt phải di chuyển
- @mention autocomplete qua callback
onSearch— tag người dùng hoặc liên kết đến một thực thể trong hệ thống - Find & Replace có chế độ regex (Ctrl+F / Ctrl+H) — thường thiếu ở các editor nhẹ
- Sanitizer DOM-based chạy khi paste, khi
setHTML()và trước khi export — chặn<script>, thuộc tínhon*, URLjavascript: - Từ v2.1.0 sanitizer chặn thêm hai lớp mutation-XSS: thẻ animation trong SVG (
<animate>và họ hàng, vốn ghi đè thuộc tính *sau* khi lọc xong) và các điểm chuyển namespace của MathML; lọc URL mở rộng sangposter,backgroundvàsrcset—srcsetkiểm từng ứng viên một - Toolbar là một điểm dừng Tab duy nhất thay vì 39, nhờ
role="toolbar"và roving tabindex; nút bật/tắt phátaria-pressedđể trình đọc màn hình biết trạng thái - Auto-save vào localStorage kèm banner khôi phục, crop và resize ảnh inline — tay cầm resize chạy trên pointer event nên dùng được cả bằng cảm ứng và bút
- 8 locale sẵn có gồm tiếng Việt; từ v2.0.0 import riêng từng locale qua
autumnnote/i18n/vikèm type declaration - Bản dựng tối giản
autumnnote/core(v2.5.0) — chỉ nạp những module thật sự dùng, thay vì kéo theo cả 23 module kể cả khi chỉ cần in đậm và in nghiêng - Bộ chuyển đổi Markdown và bộ lọc HTML xuất ra ngoài (v2.5.0):
markdownToHTML,htmlToMarkdown,sanitiseHTMLdùng được mà không cần DOM — chạy được trên máy chủ hoặc trong bước dựng onImageUploadnhận lại URL sau khi tải lên (v2.5.0) — editor hiện ảnh tạm ngay rồi tự thay bằng URL thật, thay vì để mỗi tích hợp tự chèncspNoncecho hai tệp tải từ CDN tuỳ chọn (v2.7.0), nên editor dùng được dưới chính sách bảo mật nội dung nghiêm ngặt
Thay thế cho: Summernote · Quill · TinyMCE · Froala · CKEditor
npm install autumnnoteimport AutumnNote from "autumnnote";
const editor = AutumnNote.create("#editor", { height: 300 });
editor.setHTML("<p>Xin chào</p>");autumnnote-react v2.7.1Vue 3 · autumnnote-vue v2.7.1