SuperAPI AI 工具集

aem-ui-module-development

编程与开发

查看项目

更新于 10-15 22:12

技能介绍

用途:在采用 Vite 的现代 AEM 项目中,为组件构建、组织和注册前端 JavaScript 模块,避免通过 HTL 注入零散的 script 标签,改用单一入口配合 DOM 属性驱动加载。

主要能力:以 app.ts 作为唯一入口,用 MutationObserver 监听 DOM 中带 data-ui-module 属性的元素;registry.ts 将属性字符串映射到 Vite 动态 import;模块遵循 UIModule 契约,导出 initModule 并可选返回 destroy 清理函数。优势包括 Vite 分块优化、AEM 编辑对话框 AJAX 注入后组件即时初始化、无副作用、组件移除时自动销毁、用 WeakMap 管理状态避免内存泄漏。

使用方式:一、在组件根元素 HTL 上加 data-ui-module="components/my-component",不要用 sly 注入 JS;二、编写 TypeScript 模块,不在顶层执行 DOM 查询,用 AbortController 管理事件监听;三、在 registry.ts 中把该字符串映射到动态 import。目录结构为 ui.frontend/src 下的 app.ts、registry.ts、types/UIModule.ts 与 components 子目录。

适用场景:AEM + Vite 项目的前端组件开发,尤其是需要在作者编辑环境中动态增删组件并即时生效的场景。

限制与规则:禁止顶层副作用;选择器必须限定在传入元素上(用 el.querySelector);所有 addEventListener 需传 signal;创建全局监听、定时器或第三方库实例时必须返回 destroy;标准组件 JS 不得用 HTL 脚本注入,Web Components(Lit)自注册是唯一例外;状态用 WeakMap 而非全局数组或对象。资料未提供安装命令、版本要求与具体依赖配置。