用途:在 Bitrix 框架中使用 Vue 3 构建响应式界面。基线 main 23.0+,已验证 main 26.800.0、ui 26.687.0。ui.vue3 等于 Vue 3 加 BitrixVue 插件($Bitrix),整页共享一个 Vue 实例;运行时模板编译,无 SFC .vue、无 SSR。Vue 2(ui.vue、全局 BX.BitrixVue)为旧版,新代码不应使用。
在扩展中使用(推荐):从 ui.vue3 导入 BitrixVue 及所有 Vue API(ref、computed、markRaw、defineComponent 等),rel: ['ui.vue3'] 即可。全局写法:按钮、弹窗、提示、开关等组件见 ui.vue3.components.*;状态与路由用 ui.vue3.pinia、ui.vue3.vuex、ui.vue3.router;懒加载用 BitrixVue.defineAsyncComponent,可扩展组件用 BitrixVue.mutableComponent。
在 PHP 页面无构建时:Extension::load('ui.vue3') 后使用 BX.Vue3.BitrixVue.createApp 挂载。$Bitrix 提供 Loc.getMessage 取短语(用 BX.message)、eventEmitter、Data.get/set、RestClient、PullClient 等。短语建议用 BitrixVue.getFilteredPhrases(this, 'VENDOR_'),注意 Vue 3 中首参为组件实例。
内核组件:Popup、Menu、Dialog 等实例应保持非响应式,用 markRaw(new Popup(...)) 或放在 data() 外;ui 26.650 起使用原生 #private 字段,经响应式代理会抛 TypeError。
调试:在 /local/php_interface/init.php 中 define('VUEJS_DEBUG', true)(仅开发);VUEJS_LOCALIZATION_DEBUG 会显示短语代码而非文本。
从 Vue 2 迁移:BX.BitrixVue 改为 ui.vue3;BitrixVue.component()/directive() 在 Vue 3 不注册,改用局部 components、app.component() 或 mutableComponent();destroyed 改 unmounted,无 filters、无 $on/$off。清单:仅用 ui.vue3,导入均来自 ui.vue3,内联脚本用 BX.Vue3.BitrixVue;内核组件实例用 markRaw;短语用 $Bitrix.Loc 或 Loc;服务端调用用 BX.ajax.runAction(含 CSRF),不用裸 fetch;Pull 订阅在 unmounted 中取消。其他限制与收费信息暂未提供。