ctx.requireAsync()
Tải bất đồng bộ script UMD/AMD hoặc gắn vào global theo URL, cũng có thể tải CSS. Phù hợp với các kịch bản RunJS cần sử dụng các thư viện UMD/AMD như ECharts, Chart.js, FullCalendar (bản UMD), plugin jQuery; khi truyền địa chỉ .css sẽ tải và inject style. Nếu thư viện cũng cung cấp phiên bản ESM, ưu tiên sử dụng ctx.importAsync().
Kịch bản áp dụng
Tất cả các kịch bản trong RunJS cần tải script UMD/AMD/global hoặc CSS theo nhu cầu đều có thể sử dụng, như JSBlock, JSField, JSItem, JSColumn, luồng sự kiện, JSAction, v.v. Sử dụng điển hình: chart ECharts, Chart.js, FullCalendar (UMD), dayjs (UMD), plugin jQuery, v.v.
Định nghĩa kiểu
Tham số
Giá trị trả về
- Object thư viện sau khi tải (giá trị module đầu tiên của callback UMD/AMD). Nhiều thư viện UMD sẽ gắn vào
window(nhưwindow.echarts), giá trị trả về có thể làundefined, khi sử dụng thực tế tham khảo tài liệu thư viện để truy cập biến global. - Khi truyền
.csstrả về kết quả củaloadCSS.
Giải thích về định dạng URL
- Đường dẫn rút gọn: như
echarts@5/dist/echarts.min.js, dưới ESM CDN mặc định (esm.sh) sẽ yêu cầuhttps://esm.sh/echarts@5/dist/echarts.min.js?raw,?rawdùng để lấy file UMD gốc thay vì wrapper ESM. - URL đầy đủ: Có thể viết trực tiếp địa chỉ CDN bất kỳ, như
https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js. - CSS: Truyền URL kết thúc bằng
.csssẽ tải và inject vào page.
Khác biệt với ctx.importAsync()
- ctx.requireAsync(): Tải script UMD/AMD/global, phù hợp với các thư viện UMD như ECharts, Chart.js, FullCalendar (UMD), plugin jQuery; sau khi tải thư viện thường gắn vào
window, giá trị trả về có thể là object thư viện hoặcundefined. - ctx.importAsync(): Tải module ESM, trả về namespace module. Nếu thư viện cũng cung cấp ESM, ưu tiên dùng
ctx.importAsync()để có ngữ nghĩa module và Tree-shaking tốt hơn.
Ví dụ
Cách dùng cơ bản
Chart ECharts
Bar chart Chart.js
dayjs (UMD)
Lưu ý
- Hình thức giá trị trả về: Thư viện UMD có cách export khác nhau, giá trị trả về có thể là object thư viện hoặc
undefined; nếu làundefined, có thể tham khảo tài liệu thư viện để truy cập từwindow. - Phụ thuộc mạng: Cần truy cập CDN, môi trường nội bộ có thể trỏ đến service tự host qua ESM_CDN_BASE_URL.
- Lựa chọn v ới importAsync: Khi thư viện cung cấp cả ESM và UMD, ưu tiên dùng
ctx.importAsync().
Liên quan
- ctx.importAsync() - Tải module ESM, phù hợp với Vue, dayjs (ESM), v.v.
- ctx.render() - Render chart, v.v. vào container
- ctx.libs - React, antd, dayjs, v.v. có sẵn, không cần tải bất đồng bộ

