接入微前端

基于 icejs 的插件机制,我们封装了 build-plugin-icestark 插件,这个插件可以大大降低接入微前端方案的成本。

框架应用

通过物料模板快速创建一个微前端的子应用:

  1. $ npm init ice icestark-framework @icedesign/stark-layout-scaffold
  2. $ cd icestark-framework
  3. $ npm install
  4. $ npm start

该模板默认在 build.json 里引入了插件 build-plugin-icestark

  1. {
  2. "plugins": {
  3. "build-plugin-icestark"
  4. }
  5. }

同时我们需要在应用入口 src/app.ts 中配置框架应用的一些运行时信息:

  1. import { createApp } from 'ice'
  2. +import NotFound from '@/components/NotFound';
  3. +import BasicLayout from '@/layouts/BasicLayout';
  4. const appConfig = {
  5. app: {
  6. rootId: 'ice-container',
  7. },
  8. router: {
  9. + type: 'browser',
  10. },
  11. icestark: {
  12. + type: 'framework',
  13. + Layout: BasicLayout,
  14. + getApps: async () => {
  15. + const apps = [{
  16. + path: '/seller',
  17. + # '商家平台',
  18. + url: [
  19. + '//ice.alicdn.com/icestark/child-seller-react/index.js',
  20. + '//ice.alicdn.com/icestark/child-seller-react/index.css',
  21. + ],
  22. + }];
  23. + return apps;
  24. + },
  25. + appRouter: {
  26. + NotFoundComponent: NotFound,
  27. + },
  28. },
  29. };
  30. createApp(appConfig)

appConfig.icestark 完整的配置项说明:

  • type: string, framework|child
  • Layout: Component, 系统对应的布局组件
  • getApps: function,获取所有子应用数据,单个子应用的完整配置字段请参考 icestark 文档
  • appRouter:
    • NotFoundComponent: 404 组件
    • LoadingComponent: 应用切换时的 Loading 组件

子应用

通过物料模板快速创建一个微前端的子应用:

  1. # 创建子应用
  2. $ npm init ice icestark-child @icedesign/stark-child-scaffold
  3. $ cd icestark-child
  4. $ npm install
  5. $ npm start

同框架应用一样,子应用也会默认引入插件 build-plugin-icestark,同时在应用入口 src/app.ts 中配置了子应用相关的信息:

  1. import { createApp } from 'ice'
  2. const appConfig = {
  3. app: {
  4. rootId: 'ice-container',
  5. },
  6. router: {
  7. + type: 'browser',
  8. },
  9. icestark: {
  10. + type: 'child',
  11. },
  12. };
  13. createApp(appConfig)

只需要这么简单,你的 SPA 应用就可以变成微前端的子应用了。

关于微前端的更多内容,请查看文档 icestark