# @axa-fr/slimfaas-planet-saver 中文文档

规范地址：https://npmcn.com/package/%40axa-fr/slimfaas-planet-saver/

版本：0\.88\.0
npm 元数据更新时间：2026-11-07T15:49:47.944Z
中文译文更新时间：2026-11-07T21:03:54.832Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40axa-fr/slimfaas-planet-saver
原文对照：https://npmcn.com/package/%40axa-fr/slimfaas-planet-saver/?lang=original
项目主页：https://github.com/SlimPlanet/SlimFaas#readme
源码仓库：https://github.com/SlimPlanet/SlimFaas

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：27.9 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-11-29T16:35:43.610Z
- 最新版本发布：2026-11-07T15:49:47.621Z
- 近 30 天下载量：2563（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：867（近 12 个月 275 个）

## 中文简介

SlimFaas API将基础设施的复原力转化为UX的复原力并帮助拯救地球

## 安装

```sh
npm install @axa-fr/slimfaas-planet-saver
```

也可以使用：`pnpm add @axa-fr/slimfaas-planet-saver`、`yarn add @axa-fr/slimfaas-planet-saver`、`bun add @axa-fr/slimfaas-planet-saver`

## README

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

[![npm version](https://badge.fury.io/js/%40axa-fr%2Fslimfaas-planet-saver.svg)](https://badge.fury.io/js/%40axa-fr%2Fslimfaas-planet-saver)

![SlimFaas](https://npmcn.com/package/docs/SlimFaas.png)

拯救地球的"香草JS"计划. 斯利姆·法斯(英语:[https://github.com/斯利姆普兰特/斯利姆法斯](https://github.com/SlimPlanet/slimfaas))是库伯涅茨上最细而最简单的功能A级服务. 它作为一个代名词可以被部署在命名空间.

SlimFaas API可以向前端提供基础设施状态的信息. **这是一个改变主意的人!**

**为什么?**

因为在生产中,不设2个复制品的API后端,而是可以设置0个复制品,并使用UX,向用户显示后端已经倒下! **@axa-fr/slimfaas-plane-save (英语)** 是来做这么容易.

![SlimFaas Planet Saver](https://npmcn.com/package/docs/SlimFaasPlanetSaver.gif)

## 开始

```javascript
npm install @axa-fr/slimfaas-planet-saver
```

反应使用示例 :

```javascript
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;



```

### 用法 :

```jsx
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>
```

* * *

## 运行演示

```javascript
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.

### 生命周期

1.  **初始化** 打电话 `instance.initialize()` 以创建覆盖元素,注入样式,并绑定事件听众(如鼠标移动).
    
2.  **开始投票** 打电话 `instance.startPolling()` 开始对环境进行定期检查。 如果环境还没有准备好,则会出现叠加.
    
3.  **停止投票/ 清理** 当组件卸载或不再需要监视环境时,请拨 `instance.cleanup()`。这可以删除覆盖、样式和任何定时器或事件听众.

## 常见问题

### @axa-fr/slimfaas-planet-saver 是什么？

SlimFaas API将基础设施的复原力转化为UX的复原力并帮助拯救地球

### 如何安装 @axa-fr/slimfaas-planet-saver？

在项目目录运行 npm install @axa-fr/slimfaas-planet-saver，或使用 pnpm add / yarn add / bun add。

### @axa-fr/slimfaas-planet-saver 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @axa-fr/slimfaas-planet-saver 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @axa-fr/slimfaas-planet-saver 可以商用吗？

@axa-fr/slimfaas-planet-saver 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @axa-fr/slimfaas-planet-saver 的下载量有多少？

根据 npm 官方下载统计，@axa-fr/slimfaas-planet-saver 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,563 次，日均约 85 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @axa-fr/slimfaas-planet-saver 还在维护吗？

最新版本 0\.88\.0 发布于 2026/11/07（今天）；至今共发布 867 个版本，其中过去 12 个月发布了 275 个；首次发布于 2024/11/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

