ctx.libs
ctx.libs là namespace thống nhất của các thư viện có sẵn trong RunJS, bao gồm các thư viện thường dùng như React, Ant Design, dayjs, lodash. Không cần import hoặc tải bất đồng bộ, có thể sử dụng trực tiếp qua ctx.libs.xxx.
Kịch bản áp dụng
Tổng quan thư viện có sẵn
Alias top-level
Để tương thích với code lịch sử, một số thư viện cũng được expose ở top-level: ctx.React, ctx.ReactDOM, ctx.antd, ctx.dayjs. Khuyến nghị sử dụng đồng nhất ctx.libs.xxx, tiện cho việc bảo trì và tra cứu tài liệu.
Lazy load
lodash, formula, math, v.v. sử dụng lazy load: chỉ khi truy cập ctx.libs.lodash lần đầu mới khởi tạo dynamic import, sau đó tái sử dụng cache. React, antd, dayjs, antdIcons được preset bởi ngữ cảnh, có thể truy cập ngay.
Ví dụ
Render với React và Ant Design
Sử dụng Hooks
Sử dụng icon
Xử lý ngày tháng với dayjs
Hàm công cụ lodash
Tính toán công thức formula
Biểu thức toán học math
Lưu ý
- Sử dụng lẫn lộn với ctx.importAsync: Nếu đã tải React bên ngoài qua
ctx.importAsync('react@19'), JSX sẽ sử dụng instance đó; tại thời điểm này không trộn lẫn vớictx.libs.antd, antd cần được tải kèm với phiên bản React đó (nhưctx.importAsync('antd@5.x'),ctx.importAsync('@ant-design/icons@5.x')). - Nhiều instance React: Nếu xuất hiện "Invalid hook call" hoặc hook dispatcher là null, thường do nhiều instance React gây ra. Trước khi đọc
ctx.libs.Reacthoặc gọi Hooks, hãy thực thiawait ctx.importAsync('react@phiên bản')trước để đảm bảo dùng chung instance React với page.
Liên quan
- ctx.importAsync() - Tải module ESM bên ngoài theo nhu cầu (như React, Vue phiên bản chỉ định)
- ctx.render() - Render nội dung vào container

