# @brightspace-ui/lms-context-provider 中文文档

规范地址：https://npmcn.com/package/%40brightspace-ui/lms-context-provider/

版本：1\.35\.0
npm 元数据更新时间：2026-10-19T12:52:01.810Z
中文译文更新时间：2026-11-08T15:35:38.199Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40brightspace-ui/lms-context-provider
原文对照：https://npmcn.com/package/%40brightspace-ui/lms-context-provider/?lang=original
项目主页：https://github.com/BrightspaceUI/lms-context-provider#readme
源码仓库：https://github.com/BrightspaceUI/lms-context-provider

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

- 包体积（解压后）：27 kB，9 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2024-05-14T14:34:54.975Z
- 最新版本发布：2026-10-19T12:52:01.576Z
- 近 30 天下载量：2935（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：34（近 12 个月 12 个）

## 中文简介

为 UI 组件、应用程序和库提供 LMS 上下文和环境设置

## 安装

```sh
npm install @brightspace-ui/lms-context-provider
```

也可以使用：`pnpm add @brightspace-ui/lms-context-provider`、`yarn add @brightspace-ui/lms-context-provider`、`bun add @brightspace-ui/lms-context-provider`

## README

# @ brightspace- ui/ lms- context- professor

为UI组件,应用程序和库提供LMS上下文和环境设置.

## 安装

从国家预防机制安装:

```shell
npm install @brightspace-ui/lms-context-provider
```

## 使用量

### 使用客户端

#### 请求数据

要请求数据, 导入 `tryGet` 从客户直接引用它。 第一个参数应该是一个对应已注册主机插件的上下文类型,而第二个参数是一个可选的一组选项,可以传递给主机插件. 第三个论点是可选的回调,允许消费者订阅他们要求的数据的未来更改.

```js
import { tryGet } from '@brightspace-ui/lms-context-provider/client.js';

const val = await tryGet(
  'my-context-type',
  { someProp: someVal },
  (changedValues) => {
    // This callback should accept a single argument:
    // an object containing any relevant information from the host plugin
    if (changedValues.someChangedProp === 'someVal') {
        doSomeWork(changedValues.someChangedProp);
    }
  }
);
doSomeWork(val);
```

如果没有注册主机插件来处理请求, 或者如果请求的数据不可用, 主机将返回 `undefined`. 主机插件可能还需要依赖同步方法来返回数据,因此客户端代码应该能够对接收一个不解或需要一些时间才能解答的承诺有弹性.

如果没有主机初始化, `tryGet` 将因迷误而拒绝.

#### 执行动作

要启动对主机的行动, 但不需要返回数据, 导入 `tryPerform` 从客户直接引用它。 第一个参数应该是一个对应已注册主机插件的上下文类型,而第二个参数是一个可选的一组选项,可以传递给主机插件. 无法使用此函数订阅更改事件 .

```js
import { tryPerform } from '@brightspace-ui/lms-context-provider/client.js;'

await tryPerform('my-context-type', { someProp: someVal });
```

如果没有注册主机插件来处理请求,或者如果所请求的数据无法提供,这个承诺将立即解决而无所事事. 和现在一样 `tryGet` 函数,主机插件可能需要执行同步动作来实现请求,所以这个承诺也可能永远也不会解决,或者可能需要一些时间来解决.

如果没有主机初始化, `tryPerform` 将因迷误而拒绝.

### 配置主机

#### 初始化

很少需要初始化主机。 在Brightspace 实例中,BSI一般将通过我们的MVC和遗留框架来处理。 要初始化主机, 导入并执行 `initialize` 函数.

```js
import { initialize } from '@brightspace-ui/lms-context-provider/host.js';

initialize();
```

#### 注册插件

要注册主机插件, 导入并执行 `registerPlugin` 函数在主机已经初始化的页面上。 提供的上下文类型应为每页独有. 如果插件需要返回数据给客户端,它应当提供 `tryGetCallback` 作为第二个论点。 如果在数据变化时可以通知客户,那么它应当提供 `subscribeCallback` 作为第三个论点.

```js
import { registerPlugin } from '@brightspace-ui/lms-context/provider/host.js';

function tryGetCallback(options) {
    // This can be asynchronous.
    const returnVal = doSomeWork(options);
    return returnVal;
}

function subscribeCallback(onChange, options) {
    // this can be asynchronous.
    const returnVal = doSomeWork(options);

    // Options are defined by the host, not the plugin. sendImmediate indicates the change handler should be invoked immediately.
    if (options.sendImmediate) {
        // Expects an object as its only argument.
        onChange({ val: returnVal });
    }

    // onChange event should be subscribed to future changes.
    registerOnChangeEvent(onChange);
}

registerPlugin('my-context-type', tryGetCallback, subscribeCallback);
```

#### 框架客户端

在iframe内与客户端合作时,主机页面需要明确允许该iframe. 要做到这一点, 导入并执行 `allowFrame` 从主机页面(主机必须已经初始化). 第一个论点必须是框架要素本身。 第二个论点应该是预期的来源。 未获明确允许或来自不同来源的iframes客户的请求将被拒绝.

```js
import { allowFrame } from '@brightspace-ui/lms-context-provider/host.js';

const myFrame = document.createElement('iframe');
document.body.append(myFrame);

allowFrame(myFrame, window.location.origin);
```

## 发展、测试和贡献

复制后, 运行 `npm install` 以安装依赖.

### 线性

```shell
# eslint
npm run lint
```

### 测试

```shell
# run tests
npm test
```

### 版本和发布

此 repo 配置为使用 `semantic-release`输入前缀 `fix:` 财务报告和审定财务报表 `feat:` 合并到 `main`。 。 。 .

为了学习如何从维护分支中产生主要释放和释放,请参见: [语义- 释放 GitHub 动作](https://github.com/BrightspaceUI/actions/tree/main/semantic-release) 文档.

## 常见问题

### @brightspace-ui/lms-context-provider 是什么？

为 UI 组件、应用程序和库提供 LMS 上下文和环境设置

### 如何安装 @brightspace-ui/lms-context-provider？

在项目目录运行 npm install @brightspace-ui/lms-context-provider，或使用 pnpm add / yarn add / bun add。

### @brightspace-ui/lms-context-provider 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/brightspace-ui\_\_lms-context-provider 是否存在。

### @brightspace-ui/lms-context-provider 支持 ESM 还是 CommonJS？

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

### @brightspace-ui/lms-context-provider 可以商用吗？

@brightspace-ui/lms-context-provider 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @brightspace-ui/lms-context-provider 的下载量有多少？

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

### @brightspace-ui/lms-context-provider 还在维护吗？

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

