Skip to content

Commit

Permalink
👷
Browse files Browse the repository at this point in the history
  • Loading branch information
kuitos committed May 6, 2023
1 parent f1eb35b commit 033c014
Showing 1 changed file with 93 additions and 26 deletions.
119 changes: 93 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,45 +14,112 @@

# qiankun(乾坤)

> An Enterprise Mirco-Frontends Framework
> In Chinese, `qian(乾)` means heaven and `kun(坤)` earth. `qiankun` is the universe.
- 📦 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
Qiankun enables you and your teams to build next-generation and enterprise-ready web applications leveraging [Micro Frontends](https://micro-frontends.org/). It is inspired by and based on [single-spa](https://github.com/CanopyTax/single-spa).

In Chinese traditional culture `qian` means heaven and `kun` stands for earth, so `qiankun` is the universe.
## 🤔 Motivation

A quick recap about the concept of `Micro Frontends`:

> Techniques, strategies and recipes for building a **modern web app** with **multiple teams** using **different JavaScript frameworks**. — [Micro Frontends](https://micro-frontends.org/)
Qiankun was birthed internally in our group during the time web app development by distributed teams had turned to complete chaos. We faced every problem micro frontend was conceived to solve, so naturally, it became part of our solution.

The path was never easy, we stepped on every challenge there could possibly be. Just to name a few:

- In what form do micro-apps publish static resources?
- How does the framework integrate individual micro-apps?
- How to ensure that sub-applications are isolated from one another (development independence and deployment independence) and runtime sandboxed?
- Performance issues? What about public dependencies?
- The list goes on long ...

After solving these common problems of micro frontends and lots of polishing and testing, we extracted the minimal viable framework of our solution, and named it `qiankun`, as it can contain and serve anything. Not long after, it became the cornerstone of hundreds of our web applications in production, and we decided to open-source it to save you the suffering.

**TLDR: Qiankun is probably the most complete micro-frontend solution you ever met🧐.**

## :sparkles: Features

Qiankun inherits many benefits from [single-spa](https://github.com/CanopyTax/single-spa):

- 📦 **Micro-apps Independent Deployment**
- 🛴 **Lazy Load**
- 📱 **Technology Agnostic**

And on top of these, it offers:

- 💃 **Elegant API**
- 💪 **HTML Entry Access Mode**
- 🛡 **Style Isolation**
- 🧳 **JS Sandbox**
-**Prefetch Assets**
- 🔌 **[Umi Plugin](https://github.com/umijs/plugins/tree/master/packages/plugin-qiankun) Integration**

## Packages

| Package | Version (click for changelogs) |
|----------------------------------------| :--------------------------------------------------------------------------------------------------------- |
| [qiankun](packages/qiankun) | [![plugin-vue version](https://img.shields.io/npm/v/qiankun.svg?label=%20)](packages/qiankun/CHANGELOG.md) |
| [@qiankunjs/loader](packages/loader) | |
| [@qiankunjs/sandbox](packages/sandbox) | |
| Package | Version (click for changelogs) |
|----------------------------------------|:------------------------------------------------------------------------------------------------------------------------|
| [qiankun](packages/qiankun) | [![qiankun version](https://img.shields.io/npm/v/qiankun/next.svg?label=%20)](packages/qiankun/CHANGELOG.md) |
| [@qiankunjs/loader](packages/loader) | [![qiankun version](https://img.shields.io/npm/v/@qiankunjs/loader/alpha.svg?label=%20)](packages/qiankun/CHANGELOG.md) |
| [@qiankunjs/sandbox](packages/sandbox) | [![qiankun version](https://img.shields.io/npm/v/@qiankunjs/sandbox/alpha.svg?label=%20)](packages/qiankun/CHANGELOG.md) |

## 🤔 Motivation
## 📦 Installation

As we know what micro-frontends aims for:
```shell
$ yarn add qiankun # or npm i qiankun -S
```

> Techniques, strategies and recipes for building a **modern web app** with **multiple teams** using **different JavaScript frameworks**. — [Micro Frontends](https://micro-frontends.org/)
## 📖 Documentation

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:
You can find the Qiankun documentation [on the website](https://qiankun.umijs.org/)

- 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...
Check out the [Getting Started](https://qiankun.umijs.org/guide/getting-started) page for a quick overview.

The documentation is divided into several sections:

- [Tutorial](https://qiankun.umijs.org/cookbook)
- [API Reference](https://qiankun.umijs.org/api)
- [FAQ](https://qiankun.umijs.org/faq)
- [Community](https://qiankun.umijs.org/#-community)

## 💿 Examples

Inside the `examples` folder, there is a sample Shell app and multiple mounted Micro FE apps. To get it running, first clone `qiankun`:

```shell
$ git clone https://github.com/umijs/qiankun.git
$ cd qiankun
```

Now install and run the example:

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`.
```shell
$ yarn install
$ yarn examples:install
$ yarn examples:start
```

**Probably the most complete micro-frontends solution you ever met🧐.**
Visit `http://localhost:7099`.

![](./examples/example.gif)

## 🎯 Roadmap

See [Qiankun 3.0 Roadmap](https://github.com/umijs/qiankun/discussions/1378)

## 👥 Contributors

Thanks to all the contributors!

<a href="https://github.com/umijs/qiankun/graphs/contributors">
<img src="https://opencollective.com/qiankun/contributors.svg?width=960&button=false" alt="contributors" />
</a>

## 🎁 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.
- [import-html-entry](https://github.com/kuitos/import-html-entry/) An assets loader that supports html entry.

## 📄 License

Qiankun is [MIT licensed](./LICENSE).

0 comments on commit 033c014

Please sign in to comment.