# micro-app微前端应用(vue方式实现) **Repository Path**: wwruning/micro-app-vueDemo ## Basic Information - **Project Name**: micro-app微前端应用(vue方式实现) - **Description**: micro-app微前端应用(vue方式实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-28 - **Last Updated**: 2022-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 官网 https://zeroing.jd.com/micro-app/ ### 通信 ##### 基座应用向子应用发送数据 方式1: 通过data属性发送数据 ``` ``` 方式2: 手动发送数据 ###### 手动发送数据需要通过name指定接受数据的子应用,此值和元素中的name一致。 ``` import microApp from '@micro-zoe/micro-app' // 发送数据给子应用 my-app,setData第二个参数只接受对象类型 microApp.setData('my-app', {type: '新的数据'}) ``` #### 子应用获取基座数据 micro-app会向子应用注入名称为microApp的全局对象,子应用通过这个对象和基座应用进行数据交互。 ##### 有两种方式获取来自基座应用的数据: 方式1:直接获取数据 ``` const data = window.microApp.getData() // 返回基座下发的data数据 ``` 方式2:绑定监听函数 ``` function dataListener (data) { console.log('来自基座应用的数据', data) } /** * 绑定监听函数,监听函数只有在数据变化时才会触发 * dataListener: 绑定函数 * autoTrigger: 在初次绑定监听函数时如果有缓存数据,是否需要主动触发一次,默认为false * !!!重要说明: 因为子应用是异步渲染的,而基座发送数据是同步的, * 如果在子应用渲染结束前基座应用发送数据,则在绑定监听函数前数据已经发送,在初始化后不会触发绑定函数, * 但这个数据会放入缓存中,此时可以设置autoTrigger为true主动触发一次监听函数来获取数据。 */ window.microApp.addDataListener(dataListener: Function, autoTrigger?: boolean) // 解绑监听函数 window.microApp.removeDataListener(dataListener: Function) // 清空当前子应用的所有绑定函数(全局数据函数除外) window.microApp.clearDataListener() ``` ### 子应用向基座发送信息 dispatch只接受对象作为参数 ``` window.microApp.dispatch({type: '子应用发送的数据'}) ``` ### 基座应用获取来自子应用的数据 方式1:直接获取数据 ``` import microApp from '@micro-zoe/micro-app' const childData = microApp.getData(appName) // 返回子应用的data数据 ``` 方式2: 监听自定义事件 (datachange) ``` ``` 方式3: 绑定监听函数 绑定监听函数需要通过name指定子应用,此值和元素中的name一致。 ``` import microApp from '@micro-zoe/micro-app' function dataListener (data) { console.log('来自子应用my-app的数据', data) } /** * 绑定监听函数 * appName: 应用名称 * dataListener: 绑定函数 * autoTrigger: 在初次绑定监听函数时如果有缓存数据,是否需要主动触发一次,默认为false */ microApp.addDataListener(appName: string, dataListener: Function, autoTrigger?: boolean) // 解绑监听my-app子应用的函数 microApp.removeDataListener(appName: string, dataListener: Function) // 清空所有监听appName子应用的函数 microApp.clearDataListener(appName: string) ```