87 lines
3.5 KiB
Markdown
87 lines
3.5 KiB
Markdown
# qiankun(乾坤)
|
||
|
||
[](https://www.npmjs.com/package/qiankun) [](https://codecov.io/gh/umijs/qiankun) [](https://www.npmjs.com/package/qiankun) [](https://travis-ci.com/umijs/qiankun)
|
||
|
||
> In Chinese traditional culture `qian` means heaven and `kun` stands for earth, so `qiankun` is the universe.
|
||
|
||
An implementation of [Micro Frontends](https://micro-frontends.org/), based on [single-spa](https://github.com/CanopyTax/single-spa), but made it production-ready.
|
||
|
||
## 🤔 Motivation
|
||
|
||
As we know what micro-frontends aims for:
|
||
|
||
> Techniques, strategies and recipes for building a **modern web app** with **multiple teams** using **different JavaScript frameworks**. — [Micro Frontends](https://micro-frontends.org/)
|
||
|
||
Modularity is very important for large application. By breaking down a large system into individual sub-applications, we can achieve good divide-and-conquer between products and when necessary combination, especially for enterprise applications that usually involve multi-team collaboration. But if you're trying to implement such a micro frontends architecture system by yourself, you're likely to run into some tricky problems:
|
||
|
||
- In what form do sub applications publish static resources?
|
||
- How does the main application integrate individual sub-applications?
|
||
- How do you ensure that sub-applications are independent of each other (development independent, deployment independent) and runtime isolated?
|
||
- Performance issues? What about public dependencies?
|
||
- And so on...
|
||
|
||
After solving these common problems of micro frontends, we extracted the kernel of our solution after a lot of internal online application testing and polishing, and then named it `qiankun`.
|
||
|
||
**Probably the most complete micro-frontends solution you ever met🧐.**
|
||
|
||
## 📦 Installation
|
||
|
||
```shell
|
||
$ yarn add qiankun # or npm i qiankun -S
|
||
```
|
||
|
||
## 📖 Documentation
|
||
|
||
https://qiankun.umijs.org/
|
||
|
||
## 💿 Getting started
|
||
|
||
This repo contains an `examples` folder with a sample Shell app and multiple mounted Micro FE apps. To run this app, first clone `qiankun`:
|
||
|
||
```shell
|
||
$ git clone https://github.com/umijs/qiankun.git
|
||
$ cd qiankun
|
||
```
|
||
|
||
Now run the yarn scripts to install and run the examples project:
|
||
|
||
```shell
|
||
$ yarn install
|
||
$ yarn examples:install
|
||
$ yarn examples:start
|
||
```
|
||
|
||
Visit `http://localhost:7099`.
|
||
|
||

|
||
|
||
## :sparkles: Features
|
||
|
||
- 📦 **Based On [single-spa](https://github.com/CanopyTax/single-spa)**
|
||
- 📱 **Technology Agnostic**
|
||
- 💪 **HTML Entry Access Mode**
|
||
- 🛡 **Style Isolation**
|
||
- 🧳 **JS Sandbox**
|
||
- ⚡ **Prefetch Assets**
|
||
- 🔌 **[Umi Plugin](https://github.com/umijs/plugins/tree/master/packages/plugin-qiankun) Integration**
|
||
|
||
## 🎯 Roadmap
|
||
|
||
- [x] Parcel apps integration (multiple sub apps displayed at the same time, but only one uses router at most)
|
||
- [x] Communication development kits between master and sub apps
|
||
- [ ] Custom side effects hijacker
|
||
- [ ] Nested Microfrontends
|
||
|
||
## ❓ FAQ
|
||
|
||
https://qiankun.umijs.org/faq/
|
||
|
||
## 👬 Community
|
||
|
||
https://qiankun.umijs.org/#community
|
||
|
||
## 🎁 Acknowledgements
|
||
|
||
- [single-spa](https://github.com/CanopyTax/single-spa) What an awesome meta-framework for micro-frontends!
|
||
- [import-html-entry](https://github.com/kuitos/import-html-entry/) An assets loader which supports html entry.
|