# 快速开始

# 写在前面

在微前端的中,分为两个部分:

  • 子应用,或者叫做微应用
  • 基座应用,或者叫做容器应用

子应用:是按照功能维度拆分的应用,往往是个功能或者一组功能的集合。

基座应用:他是所有子应用的一个容器,用来加载,渲染不同的子应用。

# 项目微前端改造往往涉及到:

1.把功能子应用化,即功能拆分,独立成一个前端 App

2.在老应用中(或者完全新建基座应用)引入微前端的容器 SDK,在这个基座应用中组织,加载每个子应用。

下面以 React 为例,介绍如何快速开始试用 Alfa 做应用拆分。

# 子应用

# React 应用

> npm i @alicloud/console-os-react-portal@latest --save
> npm i @alicloud/console-toolkit-plugin-os@latest --save-dev

对于 React 应用,只需要修改一下入口文件如下:

import { mount }  from '@alicloud/console-os-react-portal';
import App from './app';
const appID = 'aliyun-console-slb'
export default mount(
  (props) => <App/>,
  document.getElementById('app'),
  appID
);

构建 webpack 接入修改

const Chain = require('webpack-chain');
const merge = require('webpack-merge');
const { chainOsWebpack } = require('@alicloud/console-toolkit-plugin-os')

const chain = new Chain();
chainOsWebpack({ id: 'app-id' })(chain);
module.exports = merge(/*you webpack conf*/, chain.toConfig());

# 判断 Console OS 的环境

有时候我们需要判断是不是在 Alfa 运行环境从而选择一些功能的展示或者隐藏。

import { Context }  from '@alicloud/console-os-react-portal';
<Context>
  {(context) => {
    if (context.inOsSandBox) {
      // Do your things
    }
  }}
</Context>
// 或者用
window.__IS_CONSOLE_OS_CONTEXT__

# 宿主应用

# React

对于子应用来说,最终构建会生成一个类似于的一个 manifest 文件。 https://dev.g.alicdn.com/aliyun-next/endpoint/0.1.0/endpoint.manifest.json

import {Route} from 'react-router'
import Home from 'xxxx/Home'
const router = () => {
  <Route path={'xxxx'} component={Home} />
   {/* 原本的 */}
  <Route path={'xxxx'} />
}
 
// Home.jsx
import Application from '@alicloud/console-os-react-app'
const appConfigUrl = 'https://dev.g.alicdn.com/aliyun-next/endpoint/0.1.0/endpoint.manifest.json';
const Home =  () => (
    <Application
    manifest={appConfigUrl}
        id="aliyun-console-slb"
    />
);
export default Home;

需要启动整个 Alfa 的运行时:

// 然后应用的入口调用
import { start } from '@alicloud/console-os-react-app';
start();