Go to file
2025-02-14 11:38:28 +08:00
.vscode 初始创建! 2025-02-14 11:38:28 +08:00
public 初始创建! 2025-02-14 11:38:28 +08:00
src 初始创建! 2025-02-14 11:38:28 +08:00
.gitignore 初始创建! 2025-02-14 11:38:28 +08:00
child.html 初始创建! 2025-02-14 11:38:28 +08:00
index.html 初始创建! 2025-02-14 11:38:28 +08:00
index.ts 初始创建! 2025-02-14 11:38:28 +08:00
package.json 初始创建! 2025-02-14 11:38:28 +08:00
pnpm-lock.yaml 初始创建! 2025-02-14 11:38:28 +08:00
README.md 初始创建! 2025-02-14 11:38:28 +08:00
tsconfig.app.json 初始创建! 2025-02-14 11:38:28 +08:00
tsconfig.json 初始创建! 2025-02-14 11:38:28 +08:00
tsconfig.node.json 初始创建! 2025-02-14 11:38:28 +08:00
vite.config.ts 初始创建! 2025-02-14 11:38:28 +08:00

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)

使用

  1. 在主项目和子项目中引入该工具库

  2. 在子项目中引入Receiver组件,然后将该组件注册到路由上

  3. 在子项目中将需要被主项目调用的Vue组件注册为全局组件

    // Vue3
    app.component('MyComponent', MyComponent)
    // Vue2
    Vue.component('MyComponent', MyComponent)
    
  4. 在主项目中引入Invoker组件,并传入urlitems属性

    • url:子项目Receiver的URL
    • items: 包含子项目渲染元素定义的列表,见InvokerItem的类型定义
  5. 根据使用的Vue版本在两个项目的目录下执行以下命令

    # Vue2.7
    npm run vue-demi-switch 2.7 vue2
    # Vue3
    npm run vue-demi-switch 3
    
  6. 运行项目查看效果

注意事项

  1. 主项目和子项目需要同源或是配置好了CORS策略
  2. 该库对Vue2.7的支持有限