@axa-fr/slimfaas-plane-save (英语)

拯救地球的"香草JS"计划. 斯利姆·法斯(英语:https://github.com/斯利姆普兰特/斯利姆法斯)是库伯涅茨上最细而最简单的功能A级服务. 它作为一个代名词可以被部署在命名空间.
SlimFaas API可以向前端提供基础设施状态的信息. 这是一个改变主意的人!
为什么?
因为在生产中,不设2个复制品的API后端,而是可以设置0个复制品,并使用UX,向用户显示后端已经倒下! @axa-fr/slimfaas-plane-save (英语) 是来做这么容易.

开始
npm install @axa-fr/slimfaas-planet-saver
反应使用示例 :
import React, { useState, useEffect, useRef } from 'react';
import { SlimFaasPlanetSaver } from '@axa-fr/slimfaas-planet-saver';
const PlanetSaver = ({ children, baseUrl, fetch, noActivityTimeout=60000, behavior={} }) => {
const [isFirstStart, setIsFirstStart] = useState(true);
const instanceRef = useRef(null);
useEffect(() => {
if (!baseUrl) return;
if (instanceRef.current) return;
const instance = new SlimFaasPlanetSaver(baseUrl, {
interval: 2000,
fetch,
behavior,
updateCallback: (data) => {
const inst = instanceRef.current;
// Filter only the items that block the UI (WakeUp+BlockUI)
const blockingItems = data.filter(
(item) => inst?.getBehavior(item.Name) === 'WakeUp+BlockUI'
);
// If all blocking items are ready, set isFirstStart to false
const allBlockingReady = blockingItems.every(
(item) => item.NumberReady >= 1
);
if (allBlockingReady && isFirstStart) {
setIsFirstStart(false);
}
},
errorCallback: (error) => {
console.error('Error detected :', error);
},
overlayStartingMessage: '🌳 Starting the environment.... 🌳',
overlayNoActivityMessage: 'Waiting activity to start environment...',
overlayErrorMessage: 'An error occurred when starting environment. Please contact an administrator.',
overlaySecondaryMessage: 'Startup should be fast, but if no machines are available it can take several minutes.',
overlayLoadingIcon: '🌍',
overlayErrorSecondaryMessage: 'If the error persists, please contact an administrator.',
noActivityTimeout
});
instanceRef.current = instance;
// Initialiser les effets de bord
instance.initialize();
instance.startPolling();
return () => {
try {
instance.cleanup();
} finally {
instanceRef.current = null;
}
};
}, [baseUrl]);
if (isFirstStart) {
return null;
}
return <>{children}</>;
};
export default PlanetSaver;
用法 :
const behavior: {
"api-speech-to-text": "WakeUp",
"heavy-pdf-service": "WakeUp+BlockUI",
"deprecated-service": "None"
}
<PlanetSaver baseUrl="http://slimfaas.mycompany.com" fetch={window.fetch} behavior={behavior}>
<App />
</PlanetSaver>
运行演示
git clone https://github.com/SlimPlanet/slimfaas.git
cd slimfaas/src/SlimFaasPlanetSaver
npm i
npm run dev
这将启动本地 dev 服务器, 让您看到 SlimFaasPlanetSaver 行动中.
配置选项
当你创建一个 new SlimFaasPlanetSaver(baseUrl, options), 您可以在 options 对象 :
| 财产 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 更新回调 | (data: any[]) => void | () => {} | 在成功获取函数状态后调用函数 。 数组数据包括有关每个函数的信息对象,例如: [{ Name: 'myFunc', NumberReady: 1 }, ...]。 。 。 . |
| 调用错误 | (errorMessage: string) => void | () => {} | 如果在状态获取过程中发生错误( 如网络错误) , 则调用函数 。 接收错误信息串. |
| 间隔 | number | 5000 | 投票的频率(以毫秒计). |
| 重叠启动 | string | "🌳 Starting the environment.... 🌳" | 当环境被唤醒时,主信息显示在覆盖上. |
| 覆盖无活动 | string | "Waiting activity to start environment..." | 如果用户活动(mouse movement)持续过长, 则显示消息, 但环境尚未准备好 . |
| 重叠错误 | string | "An error occurred while starting the environment." | 如果出现错误(例如网络出错),则在覆盖上显示的主要消息. |
| 叠加二进制 | string | "Startup should be fast, but if no machines are available it can take several minutes." | 当环境被唤醒时,在覆被上显示次要信息. |
| 重叠错误 | string | "If the error persists, please contact an administrator." | 当错误发生时, 在覆盖上显示的次要信件 . |
| 覆盖LoadingIcon | string | "🌍" | 覆盖上显示的文本或图标 。 默认为自旋动画. |
| 无活动 超时 | number | 60000 | 等待鼠标移动的时间(以毫秒计)多久才能结束没有活动. 如果没有检测到活动,则显示不同的覆盖信息 . |
| 唤醒时间 | number | 60000 | 如果某个功能最近被“唤起”, 我们将在这个超时窗口内跳过唤醒. |
| 获取 | typeof fetch | 全局获取 | 自定义获取函数, 如果您想要提供自己的功能( 例如, 为 SSR , 或者您的环境没有全局获取) . |
| 行为 | { [functionName: string]: 'WakeUp+BlockUI' | 'WakeUp' | 'None' } | 未设置; 如果未指定, 每个函数默认为“ WakeUp+ BlockUI ” | 允许您覆盖每个函数的处理方式: 1. "WakeUp+BlockUI":唤醒功能并用上下文来阻挡UI,直到它准备好。 2. 联合国. "WakeUp":醒来时没有挡住UI. 3个. "None":没有唤醒. |
关于行为的说明
如果一个函数是 没有 在行为映射图中指定,默认为 "WakeUp+BlockUI"。 。 。 .
"WakeUp+BlockUI"表示覆盖将显示到该函数NumberReady >= 1。 。 。 ."WakeUp"表示我们试图唤醒函数,但不保留该函数所显示的复数."None"表示该功能不会被唤醒,也不会被屏蔽UI.
生命周期
-
初始化 打电话
instance.initialize()以创建覆盖元素,注入样式,并绑定事件听众(如鼠标移动). -
开始投票 打电话
instance.startPolling()开始对环境进行定期检查。 如果环境还没有准备好,则会出现叠加. -
停止投票/ 清理 当组件卸载或不再需要监视环境时,请拨
instance.cleanup()。这可以删除覆盖、样式和任何定时器或事件听众.