微前端——Single-SPA(二)

single简单用法

1、新建一个html

<html>
<body>
    <div id="root"></div>
    <script src="single-spa-config.js"></script>
</body>
</html>

2、新建一个single-spa-config.js

// single-spa-config.js
import * as singleSpa from 'single-spa';

// 加载react 项目的入口js文件 (模块加载)
const loadingFunction = () => import('./react/app.js');

// 当url前缀为 /react的时候.返回 true (底层路由)
const activityFunction = location => location.pathname.startsWith('/react');

// 注册应用 
singleSpa.registerApplication('react', loadingFunction, activityFunction);

//singleSpa 启动
singleSpa.start();

3、改造React入口文件

import React from 'react'
import ReactDOM from 'react-dom'
import singleSpaReact from 'single-spa-react'
import RootComponent from './root.component'

if (process.env.NODE_ENV === 'development') {
  // 开发环境直接渲染
  ReactDOM.render(<RootComponent />, document.getElementById('root'))
}

//创建生命周期实例
const reactLifecycles = singleSpaReact({
  React,
  ReactDOM,
  rootComponent: RootComponent
  domElementGetter: () => document.getElementById('root')
})

// 项目启动的钩子
export const bootstrap = [
  reactLifecycles.bootstrap,
]
// 项目启动后的钩子
export const mount = [
  reactLifecycles.mount,
]
// 项目卸载的钩子
export const unmount = [
  reactLifecycles.unmount,
]

如此就完成了一个最基础的例子
核心理念其实就是修改了react渲染的方式,采用了singleSpaReact去渲染,而后通过父项目中匹配路径去挂载和卸载子模块

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 技术选型 经过各种技术调研我们最终选择的方案是基于 Single-SPA 来实现我们的前端微服务化. Single...
    Hello丶Alili阅读 21,937评论 0 19
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,322评论 4 31
  • 框架 面向对象: 面向对象是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的灵活...
    JK酱阅读 997评论 0 0
  • 长大以后,很多人都说:“你还在坚持初心吗。”我说:“是的”,初心太难坚持了,可能因为生活的不如意;可能因为别人的嘲...
    北方小确幸阅读 215评论 0 0
  • 当我告诉一个学设计的朋友,说我要学画简笔画并给他看了一幅我模仿别人画的简笔画,他说我画得不怎么样,不过签名倒是挺好...
    5093061a3c18阅读 1,246评论 6 11