Bỏ qua, đến nội dung

Cấu hình ​

CodeMirror 6 Editor ​

Plugin sử dụng CodeMirror 6 làm code editor với các extension:

ExtensionChức năng
@codemirror/lang-javascriptSyntax highlighting và autocomplete cho JavaScript
@codemirror/viewView layer với line numbers, active line highlight
@codemirror/stateState management cho editor
@codemirror/lintFramework hiển thị lỗi inline

Editor có thể resize theo nhu cầu — kéo cạnh dưới để thay đổi chiều cao.

Acorn Linter ​

Plugin dùng acorn parser để kiểm tra lỗi cú pháp JavaScript realtime:

  • Parse code mỗi khi nội dung thay đổi.
  • Lỗi syntax hiển thị trực tiếp trong editor (underline đỏ + tooltip).
  • acorn-walk được dùng để duyệt AST khi cần.

Linter chỉ kiểm tra cú pháp — không kiểm tra logic runtime hay type checking.

RequireJS và requireAsync ​

Hàm requireAsync(moduleName) cho phép import thư viện bên ngoài từ CDN:

javascript
const echarts = await requireAsync('echarts');
const moment = await requireAsync('moment');
const lodash = await requireAsync('lodash');

Cơ chế hoạt động:

  1. Gọi requireAsync('echarts') → kiểm tra cache.
  2. Nếu chưa có, tải module từ CDN qua RequireJS.
  3. Cache module cho lần gọi tiếp theo (không tải lại).

Lưu ý

Module tải qua CDN phụ thuộc vào kết nối internet. Nếu CDN không truy cập được, requireAsync sẽ throw error.

Block context (ctx) chi tiết ​

ctx.element ​

DOM element thực tế của block. Bạn toàn quyền thao tác:

javascript
ctx.element.innerHTML = '<h1>Hello</h1>';
ctx.element.style.backgroundColor = '#f0f0f0';

ctx.api ​

Instance của APIClient — gọi API server:

javascript
const res = await ctx.api.request({
  url: 'collectionName:list',
  params: { filter: { status: 'active' } },
});

ctx.i18n ​

Hệ thống đa ngôn ngữ — lấy chuỗi dịch:

javascript
const label = ctx.i18n.t('field.status');

ctx.currentUser / ctx.currentRecord ​

Thông tin user đang đăng nhập và bản ghi hiện tại (nếu block nằm trong context có record).

Auto-execute ​

Code tự động thực thi trong hai trường hợp:

  1. Block mount: Khi trang chứa block được mở.
  2. Save: Khi developer lưu code mới trong editor.

Nếu code throw error, plugin bắt lỗi và hiển thị thông báo thay vì crash toàn bộ trang.

Settings panel ​

Trong Schema Settings (jsBlockSettings), admin có thể:

  • Xem/chỉnh JSON schema của block
  • Cấu hình editor options (chiều cao, theme)
  • Xóa block