npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wodax-umi-plugin-qiankun

v1.0.2

Published

Umi plugin for [qiankun](https://github.com/umijs/qiankun).

Downloads

5

Readme

umi-plugin-qiankun

Umi plugin for qiankun.

试验性质的项目,不要用于生产环境。

NPM version Build Status NPM downloads

Questions & Suggestions

Please open an issue here.

Why

验证 SingleSPA 在 umi 下的可行性,作为微前端其中一种方式的探索,可能是最佳实践,也可能不是。灵感来源于内部的 OneX 项目和前端微服务化进阶 1 - 基于 umi 的子模块方案

RFC

如何验证这个项目

效果如下,导航是主应用,App1 和 App2 是主应用,

注:依赖 umi 的这个 PR,等 umi 更新个版本(或者先本地 link 过来跑)。

安装依赖,

$ yarn

编译 srclib 目录,

$ yarn build

test/fixtures 下的 master、app1 和 app2 下同时运行,

$ umi dev

Feature

  • ✔︎ 基于 qiankun
  • ✔︎ 支持主应用和子应用都用 umi
  • ✔︎ 按需加载子应用资源
  • ✔︎ Config Entry
  • ✔︎ CSS 隔离
  • ✔︎ 父子应用通讯
  • ✔︎ 运行时配置 bootstrap()mount()unmount()

TODO

暂没很多时间深入,有需求的同学最好自己上。

  • [ ] HTML Entry
  • [ ] JS 沙箱
  • [ ] 公共依赖加载策略
  • [ ] 预加载
  • [ ] 支持 browserHistory
  • [ ] 子应用嵌套
  • [ ] 子应用单独调试
  • [ ] 基于 Hooks 的父子应用通讯(需强制 external React 保证一个 React 实例)

Installation

$ yarn add umi-plugin-single-spa

Usage

主应用

umi-plugin-single-spa/master 插件,

export default {
  plugins: [
    ['umi-plugin-qiankun/master', {
      // 注册子应用信息
      apps: [
        {
          // 唯一 id,传给 qiankun
          name: 'app1',
          // 支持 config entry
          entry: {
            scripts: [],
            styles: [],
          },
        },
        {
          name: 'app2',
          // 支持 html entry(暂不支持)
          entry: {
            html: '/path/to/app/index.html',
          },
        },
      ],
      // JS 沙箱(暂不支持)
      jsSandBox: false,
    }],
  ],
}

子应用

umi-plugin-qiankun/slave 插件,

export default {
  plugins: [
    ['umi-plugin-qiankun/slave', {
      mountElementId: 'app-root',
    }],
  ],
}

父子应用通讯

  • 约定父应用中在 src/rootExports.js 里 export 内容
  • 子应用中通过 import { useRootExports } from 'umi'; const rootExports = useRootExports(); 取到

运行时配置

在子应用的 src/app.js 里输出 singleSpa

export const singleSpa = {
  bootstrap() {
    console.log('app1 bootstrap');
  },
  mount() {
    console.log('app1 mount');
  },
  unmount() {
    console.log('app1 unmount');
  },
}

相关

LICENSE

MIT