docs/ecosystem/index.md
qiankun provides a rich ecosystem of UI bindings and tools to help you build and maintain micro-frontend applications efficiently.
qiankun offers declarative UI components for popular frameworks, making it easier to load and manage micro applications within your main application.
@qiankunjs/react - Official React bindings for qiankun
npm install @qiankunjs/react
Learn more about React bindings →
@qiankunjs/vue - Official Vue bindings for qiankun
npm install @qiankunjs/vue
Learn more about Vue bindings →
@qiankunjs/webpack-plugin - Webpack plugin for micro applications
npm install @qiankunjs/webpack-plugin --save-dev
Learn more about Webpack Plugin →
create-qiankun - CLI tool for scaffolding qiankun projects
npx create-qiankun my-micro-frontend-app
Learn more about Create Qiankun →
import { loadMicroApp } from 'qiankun';
// Manual approach
const microApp = loadMicroApp({
name: 'my-app',
entry: '//localhost:8080',
container: '#subapp-container'
});
// Manual lifecycle management
microApp.mountPromise.then(() => {
setLoading(false);
}).catch(error => {
setError(error);
});
import { MicroApp } from '@qiankunjs/react';
function App() {
return (
<MicroApp
name="my-app"
entry="//localhost:8080"
autoSetLoading
autoCaptureError
/>
);
}
<template>
<MicroApp
name="my-app"
entry="//localhost:8080"
autoSetLoading
autoCaptureError
/>
</template>
<script setup>
import { MicroApp } from '@qiankunjs/vue';
</script>
graph LR
A[Main App] --> B[UI Binding]
B --> C[qiankun Core]
C --> D[Micro App 1]
C --> E[Micro App 2]
C --> F[Micro App 3]
G[Webpack Plugin] --> D
G --> E
G --> F
H[Create Qiankun] --> A
H --> D
H --> E
H --> F
| Feature | Core API | React Binding | Vue Binding |
|---|---|---|---|
| Loading States | Manual | ✅ Automatic | ✅ Automatic |
| Error Handling | Manual | ✅ Error Boundary | ✅ Error Boundary |
| Custom Loading | Manual | ✅ Component | ✅ Slot |
| Custom Errors | Manual | ✅ Component | ✅ Slot |
| TypeScript | ✅ Full | ✅ Full | ✅ Full |
| Framework Integration | Manual | ✅ Hooks | ✅ Composition API |
React:
<MicroApp
name="dashboard"
entry="//localhost:8080"
autoSetLoading
/>
Vue:
<MicroApp
name="dashboard"
entry="//localhost:8080"
auto-set-loading
/>
React:
<MicroApp
name="dashboard"
entry="//localhost:8080"
loader={(loading) => loading ? <Spinner /> : null}
errorBoundary={(error) => <ErrorAlert error={error} />}
/>
Vue:
<MicroApp name="dashboard" entry="//localhost:8080">
<template #loader="{ loading }">
<Spinner v-if="loading" />
</template>
<template #error-boundary="{ error }">
<ErrorAlert :error="error" />
</template>
</MicroApp>
React:
<MicroApp
name="user-profile"
entry="//localhost:8080"
userId={currentUser.id}
theme={theme}
/>
Vue:
<MicroApp
name="user-profile"
entry="//localhost:8080"
:app-props="{ userId: currentUser.id, theme }"
/>
@qiankunjs/react@qiankunjs/vue# Create new project
npx create-qiankun my-app
# Choose template:
# - React main + React micro apps
# - Vue main + Vue micro apps
# - Umi main + multiple micro apps
# - Custom configuration
Add webpack plugin to each micro application:
// webpack.config.js
const { QiankunWebpackPlugin } = require('@qiankunjs/webpack-plugin');
module.exports = {
plugins: [
new QiankunWebpackPlugin()
]
};
# Start main app
cd main-app && npm start
# Start micro app (in separate terminal)
cd micro-app && npm start
// React main app
const MicroAppConfig = {
development: {
entry: '//localhost:8080',
autoSetLoading: true,
autoCaptureError: true,
},
production: {
entry: '//your-domain.com/micro-app',
autoSetLoading: false, // Custom loading
autoCaptureError: true,
}
};
const config = MicroAppConfig[process.env.NODE_ENV];
function App() {
return <MicroApp name="my-app" {...config} />;
}
// React - Multiple micro apps
function Dashboard() {
return (
<div className="dashboard">
<aside>
<MicroApp name="navigation" entry="//localhost:8001" />
</aside>
<main>
<MicroApp name="content" entry="//localhost:8002" />
</main>
<footer>
<MicroApp name="footer" entry="//localhost:8003" />
</footer>
</div>
);
}
Choose the tools that best fit your project needs and start building powerful micro-frontend applications!