# 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.