3.基于qiankun的微应用示例(Vue及传统应用混合)一 vue子应用

  1. 构建vue 应用
    npm install -g vue-cli 
    vue init webpack

在构建vue应用的有问题可以参考
点这里构建vue应用

  1. 进入index.html修改子引用的id 不能与主应用重复
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>childapp</title>
  </head>
  <body>
    <div id="app1"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

3.修改webpack.dev.config.js允许启动的服务跨域
设置

  devServer: {
    headers: {
        'Access-Control-Allow-Origin':'*'
    },
    其他配置... ...
  }

注意此处是在devServer中新增

 headers: {
        'Access-Control-Allow-Origin':'*'
    }
  1. 进入src/main.js
    注意: 这里的修改主要是添加钩子函数,已经vue程序的渲染rander 房子钩子中执行
import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

/* eslint-disable no-new */
function render () {
  new Vue({
    el: '#app1',
    router,
    components: { App },
    template: '<App/>'
  })
}

// 挂载钩子
window.vue0 = {}
window.vue0.bootstrap = async function (props) {
  console.log('vue bootstrap');
}
// 生命周期 - 挂载后
window.vue0.mount = async function (props) {
  console.log('vue mount 子应用', props);
  Object.keys(props.fn).forEach(method =>{
    Vue.prototype[`$${method}`] = props.fn[method]
  })
  render()
  // 渲染
}
// 生命周期 - 解除挂载
window.vue0.unmount =  async function (){
  console.log('vue unmount');
}
  1. 为了看起来更加的直观修改src/App.vue
<template>
  <div class="dfg">
    VUE 应用
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
.dfg{
  color: red;
}
</style>

至此vue子应用改造完成!!!
允许一下现在可以看到效果了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容