.vscode | ||
public | ||
src | ||
.gitignore | ||
child.html | ||
index.html | ||
index.ts | ||
package.json | ||
pnpm-lock.yaml | ||
README.md | ||
tsconfig.app.json | ||
tsconfig.json | ||
tsconfig.node.json | ||
vite.config.ts |
Vue Mod Page
概述
这是一个工具库,用于在Vue项目跨越IFrame来调用另一个Vue项目,并且同时支持了Vue2.7和Vue3的跨版本调用。
功能
- 基于IFrame来调用另一个Vue项目(以下称“子项目”)
- 可以在子项目中渲染原生HTML元素,或是已注册为全局组件的Vue组件
- 支持Vue2.7和Vue3的跨版本调用
- 支持属性传参(props),CSS类(classes),样式(style),事件(onXXX)的传递
- 支持子节点(children)渲染
- 支持具名插槽(slot)
- 支持作用域插槽(slot-scope)
- 支持Vue模板引用(ref)
使用
-
在主项目和子项目中引入该工具库
-
在子项目中引入
Receiver
组件,然后将该组件注册到路由上 -
在子项目中将需要被主项目调用的Vue组件注册为全局组件
// Vue3 app.component('MyComponent', MyComponent) // Vue2 Vue.component('MyComponent', MyComponent)
-
在主项目中引入
Invoker
组件,并传入url
和items
属性url
:子项目Receiver
的URLitems
: 包含子项目渲染元素定义的列表,见InvokerItem
的类型定义
-
根据使用的Vue版本,在两个项目的目录下执行以下命令
# Vue2.7 npm run vue-demi-switch 2.7 vue2 # Vue3 npm run vue-demi-switch 3
-
运行项目查看效果
注意事项
- 主项目和子项目需要同源,或是配置好了CORS策略
- 该库对Vue2.7的支持有限