Giter Site home page Giter Site logo

fengxianqi / qiankun-example Goto Github PK

View Code? Open in Web Editor NEW
670.0 3.0 269.0 660 KB

🚀 qiankun实战demo,父应用vue,子应用用react和vue

Home Page: http://qiankun.fengxianqi.com/

JavaScript 54.41% HTML 12.79% Vue 28.20% CSS 2.72% Shell 1.87%
qiankun qiankun-example qiankun-vue qiankun-vue-demo qiankun-demo

qiankun-example's Introduction

qiankun-example

qiankun 实战 demo,父应用 vue,子应用使用 react, vue原生HTML

微前端qiankun从搭建到部署的实践

开始

安装根目录工程依赖

npm i

一键安装所有主子应用的依赖

npm run install

一键启动所有所有应用

npm start

通过 http://localhost:8080/ 访问主应用。

发布

一键构建并打包所有主子应用

npm run build

qiankun-example's People

Contributors

elderdog avatar fengxianqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

qiankun-example's Issues

发布之后nginx怎么部署

你好,build之后我在ngixn配置了部署,可以打开主应用和子应用,
但是打开子应用之后点击浏览器的刷新按钮子应用就找不到了,页面一片空白

分仓库管理子应用

若项目有CI/CD,只修改了某个子应用的代码,但代码提交会同时触发所有子应用构建,牵一发动全身,是不合理的

请问,独立仓库之后,基座怎么取子应用呢(子应用打包完成后, 怎么放到基座中?)。

loadMicroApp 不生效问题

我想要使用 loadMicroApp 来手动启动 react 子应用,我的做法如下:

  1. 删除 microApps 中注册的 React 微应用信息
const microApps = [
  {
    name: 'sub-vue',
    entry: process.env.VUE_APP_SUB_VUE,
    activeRule: '/sub-vue'
  },
  // {
  //   name: 'sub-react',
  //   entry: process.env.VUE_APP_SUB_REACT,
  //   activeRule: '/sub-react'
  // },
  {
    name: 'sub-html',
    entry: process.env.VUE_APP_SUB_HTML,
    activeRule: '/sub-html'
  }
]
  1. 在 main 目录下创建组件 ReactSub.vue 内容如下:
<template>
  <div ref="reactContainer"></div>
</template>

<script>
import { loadMicroApp } from 'qiankun'
export default {
  mounted () {
    loadMicroApp({
      name: 'sub-react',
      entry: process.env.VUE_APP_SUB_REACT,
      container: this.$refs.reactContainer
    })
  }

}
</script>
  1. 在基座 main/App.vue 中,注册 ReactSub 组件,并通过 v-if 进行合适时机加载
 <ReactSub v-if="showReact"></ReactSub>
  <button @click="changeShowReact">挂载 React</button>
    changeShowReact () {
      this.showReact = !this.showReact
    },

遇到的问题如下

  1. 当我点击 「挂载 React」 按钮时,子应用并没有挂载,而只是去下载了该子应用的模版

image

  1. 如果我一开始把 showReact 变量初始化为 true ,这种情况下则能够成功挂载该子应用。

请教一下,分仓库管理子应用,子应用也是分开管理么?每个都是一个repo,还是子应用仍在同一个repo下

  1. 比如我有10几个子应用,每个子应用都是一个单独的git仓库,因为我们遵循gitflow的流程,如果在某一期的修改中,只修改了其中3个应用,那在上线测试的时候,如何做到10几个子应用同时打出release分支呢?
  2. 如果分仓库管理了每个子应用,那git submodule和git subtree都是很好的子仓库管理方案,但缺点是每次子应用变更后,聚合库还得同步一次变更。这个是不是就不在场景使用了,看了下gitsubmoudle使用都是在一个仓库里使用

问题请教:子应用和父应用遮罩覆盖问题

子应用使用elemenui框架那种dialog或者抽屉组件,遮罩层挂载到了父应用的body,子应用的实际内容被遮罩层遮住,这种要怎么处理,如果只挂载的子组件本身,那父应用,一些公共的地方又没遮住

关于运行环境

麻烦作者在readme中写下node环境,我本地node-v :v18.15.0。启动时会抛出异常

sub-vue\src\main.js common库是自定义的吗?

//sub-vue\src\main.js
import { store as commonStore } from 'common'

在node_modules:/qiankun-example/sub-vue/node_modules/common/src/index"路径中可以找到

请问下common库是自定义的吗?
如果是,有如下问题想请教下:

  1. 如何实现自定义库?
  2. 为什么要放在node_modules目录下,而不是利用新建公共文件的方式引用?

子应用sub-react内容改变 基座刷新会报错

步骤:

  1. 启动基座
  2. 启动sub-react
  3. 修改 react 子应用 App.js
  4. 刷新 http://localhost:8081/sub-react 页面报错 子应用加载不出来

错误信息:
Uncaught Error: application 'sub-react' died in status LOADING_SOURCE_CODE: [qiankun] You need to export lifecycle functions in sub-react entry
1628740271(1)

其他:
重新start react子应用 页面可以正常展示
这边是热更新的问题吗

无法使用

按照部署过程操作后,无法启动
错误信息
available via npm run-script:
install:main
cd main && npm i
install:sub-vue
cd sub-vue && npm i
start:sub-vue
cd sub-vue && npm start
start:main
cd main && npm start
start:sub-html
cd sub-html && npm start
build
npm-run-all build:* && bash ./scripts/bundle.sh
build:sub-vue
cd sub-vue && npm run build
build:sub-html
cd sub-html && npm run build
build:main
cd main && npm run build

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.