@stilljs/apploader
Version:
Still.js Lib for integrating microservices to other Libraries/Frameworks (e.g. React)
124 lines (85 loc) • 4.96 kB
Markdown
# StillJS Apploader Lib
Loads your Still.js App/Microfrontend to React, etc.
## Microfrontend with Still.js Framework
This is Still.js package which provides the capabilities to integrate Still.js Application as a Microfrontend
to other applications which are developed in other Framewoks or Libraries (e.g. React).
<br>
#### Join the discord channel
<a href="https://discord.gg/fUVJRTmQ9f">
<svg xmlns="http://www.w3.org/2000/svg" width="25" style="float: left; padding-right: 5px;" viewBox="0 0 640 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M524.5 69.8a1.5 1.5 0 0 0 -.8-.7A485.1 485.1 0 0 0 404.1 32a1.8 1.8 0 0 0 -1.9 .9 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.1-30.6 1.9 1.9 0 0 0 -1.9-.9A483.7 483.7 0 0 0 116.1 69.1a1.7 1.7 0 0 0 -.8 .7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 0 0 .8 1.4A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.1-.7A348.2 348.2 0 0 0 208.1 430.4a1.9 1.9 0 0 0 -1-2.6 321.2 321.2 0 0 1 -45.9-21.9 1.9 1.9 0 0 1 -.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8 0 0 1 1.9-.3c96.2 43.9 200.4 43.9 295.5 0a1.8 1.8 0 0 1 1.9 .2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9 0 0 1 -.2 3.1 301.4 301.4 0 0 1 -45.9 21.8 1.9 1.9 0 0 0 -1 2.6 391.1 391.1 0 0 0 30 48.8 1.9 1.9 0 0 0 2.1 .7A486 486 0 0 0 610.7 405.7a1.9 1.9 0 0 0 .8-1.4C623.7 277.6 590.9 167.5 524.5 69.8zM222.5 337.6c-29 0-52.8-26.6-52.8-59.2S193.1 219.1 222.5 219.1c29.7 0 53.3 26.8 52.8 59.2C275.3 311 251.9 337.6 222.5 337.6zm195.4 0c-29 0-52.8-26.6-52.8-59.2S388.4 219.1 417.9 219.1c29.7 0 53.3 26.8 52.8 59.2C470.7 311 447.5 337.6 417.9 337.6z"/></svg> Still.js on discord
</a>
<br>
<br>
### Overview
When embeding a Still.js application anto another application as a Mirofrontedn, two ways are provided as follow:
#### CDN Approache
This scenarios requires only the existence of the `app/` folder for holding the app itself, and the `config/route.map.js` file for the routing purposes, components will be created as needed.
```js
const stillApp = new StillAppLoader();
stillApp.local({ env: { STILL_HOME: 'public/path/to/still-app/' } }).load();
```
<br><br>
#### Local Approache
Embeds an app which the whole Still.js project structure os available as part of the whole project. components will be created as needed.
```js
const stillApp = new StillAppLoader();
stillApp.local({ env: { STILL_HOME: 'public/path/to/still-app/' } }).load();
```
<b>PS: Either approaches requires the STILL_HOME environment variable to be stated.</b>
#### Usage example
Say you have a React project generate with Vite, install StillAppLoader which will be part of your projects dependencies, and you should be good to go considering the following aspects:
##### Your React Project structure
```js
react-project-root-folder/ //My project folder
|___ node_modules/ // Among other it'll hold the StillAppLoader
| |__ ... // All installed modules
| |
|___ public/ // Among other it'll hold the StillAppLoader
| |__ mymicrofrontend/ // Will hold the Still app
| | |__ app/ // Will contain the app
| | |__ config/ // Will containe config files (e.g. route.map.js, app-setup.js)
| |
|___ src/ // React app files filder
| |__ App.css //Component generated automatically when creating project
| |__ App.tsx //Component generated automatically when creating project
| |__ vite-env.d.ts //Component generated automatically when creating project
| |__ ... // additional files concerning to React project generate with Vite
```
<br>
<br>
### Loading the Still app in a React component
By creating a new instance os StillAppLoader, we can then specify the STILL_HOME environment variable, and assign it with the path on where it's located which have to be inside the public/ folder.
```js
import { useEffect } from 'react';
import './App.css';
import { RegularReactComponent } from "./components/RegularReactComponent";
import { StillAppLoader } from '@stilljs/apploader';
function App() {
useEffect(() => {
// Creating App loader instance
const stillApp = new StillAppLoader();
stillApp.cdn({ env: { STILL_HOME: 'public/mymicrofrontend/' } }).load();
// Unload the App when destroying the React component
return () => stillApp.unload();
},[]);
return (
<>
<RegularReactComponent></RegularReactComponent>
React validating local Still component embeding
</>
)
}
export default App
```
### Embeding Still.js component inside a React App/component
To embed a Still.js componet in react we do it the same way it's done in regular Still.js App.
```js
return (
<>
<RegularReactComponent></RegularReactComponent>
React validating local Still component embeding
<st-element component="HomeComponent"></st-element>
</>
)
```
# You're all set, Congrats!