mf-dynamic-remote-component
Version:
Library for loading in dynamic remote components when utilizing webpack Module Federation
104 lines (87 loc) • 2.36 kB
Markdown
<h1 align="center">mf-dynamic-remote-component</h1>
<p align="center" style="font-size: 1.2rem">Loading in dynamic remote <a href="https://webpack.js.org/concepts/module-federation/" target="_blank">federated</a> components made easy</p>
<br>
<br>
- Keep remote modules in a cache on the window object
- Promise based
- 0 dependencies
- Support for both lazy/suspense, loadable or others
```bash
npm install mf-dynamic-remote-component
```
```js
// config object example
{
"path": "/client/App2RemoteEntry.js", // Path to remote container entry. Ideally CDN location in live environments.
"scope": "App2", // Container scope name
"module": "./MyRemoteComponent" // Shared module
}
```
```js
import React, {lazy, Suspense} from 'react';
import {RemoteComponent} from 'mf-dynamic-remote-component';
export default function RemoteHostComponent(config) {
const Component = React.lazy(() => RemoteComponent(config));
return (
<Suspense
fallback={
<div class="col">
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
}
>
<Component config={config} customProps={customProps} />
</Suspense>
);
}
```
```js
import React from 'react';
import {RemoteComponent} from 'mf-dynamic-remote-component';
import loadable from '@loadable/component';
export default function RemoteHostComponent(config) {
const Component = loadable(() => RemoteComponent(config));
return (
<>
<Component
config={config}
customProps={customProps}
otherProps={otherProps}
/>
</>
);
}
```
```js
import React from 'react';
import {RemoteComponent} from 'mf-dynamic-remote-component';
import loadable from '@loadable/component';
export default function RemoteHostComponent(config) {
const Component = loadable(() => RemoteComponent(config), {
fallback: (
<div class="col">
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
),
});
return (
<>
<Component
config={config}
customProps={customProps}
otherProps={otherProps}
/>
</>
);
}
```