# 概念介绍

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

  • 子应用,或者叫做微应用
  • 基座应用,或者叫做容器应用
术语 别名 含义
主应用 宿主应用、容器应用 微前端定义中所谓的「一整个用户面」。
它是用户界面的入口,承载一到多个微应用。
主应用本身一般不直接负责业务逻辑,而是起到一个胶水的作用。
微应用 子应用 微前端定义中所谓的「独立交付的前端应用」。
本身是普通的前端应用,负责具体的业务逻辑。
可以独立交付(开发、部署、运行),但是一般会集成到主应用中运行。
如有必要,甚至能集成到不同的主应用中。

在 Console OS 中,我们对应到上面的有两个概念 Portal & Application。

# Portal

portal 的概念是在子应用中的,由于个应用需要在入口的时候适配一些加载逻辑,所以我们对于每种不同框架的应用的入口加载逻辑做了封装,

以 React 的 Portal 作为例子:

import React from 'react';
-import ReactDom from 'ReactDom';
+import { mount }  from '@alicloud/console-os-react-portal';
import App from './app';

-ReactDom.render(<App />, document.getElementById('app'));

+const appID = 'aliyun-console-xxxx';
+export default mount(
+  (props) => <App {...props} />,
+  document.getElementById('app'),
+  appID
+);

先比与之前用 ReatDom.render 直接渲染到 app 这个节点上去, 在 Alfa 子应用中 react-portalmount 方法替换掉了 ReactDom.render. 这个 mount 方法会处理判断是不是在 Alfa 运行时中,如果不是则加载到了对应的 App 节点. 如果是就会导出提供给 Alfa 加载的几个方法。

类似在 Vue 和 Ng,中也是类似的逻辑。

# Application

Application 是相对于宿主应用的,他会扮演一个容器的角色, 封装了把上面提到的子应用加载

// 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;

# 其他

# React

// 子应用 portal
import { mount }  from '@alicloud/console-os-react-portal';
// 宿主容器
import Application from '@alicloud/console-os-react-app'

# Ng

// 子应用 portal
import { bootstrap }  from '@alicloud/console-os-ng-portal';
// 宿主容器
import { ApplicationModule } from "@alicloud/console-os-ng-app";

# Vue

// 子应用 portal
import { mount } from '@alicloud/console-os-vue-portal';
// 宿主容器
import Application from '@alicloud/console-os-vue-app';