@brightspace-ui/lms-context-provider

中文文档
1.35.0发布于 2026/10/19Apache-2.0ES Module零依赖近 30 天下载 2935

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

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 使用客户端
  4. 配置主机
  5. 发展、测试和贡献
  6. 线性
  7. 测试
  8. 版本和发布

@ brightspace- ui/ lms- context- professor

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

安装

从国家预防机制安装:

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

使用量

使用客户端

请求数据

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

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 从客户直接引用它。 第一个参数应该是一个对应已注册主机插件的上下文类型,而第二个参数是一个可选的一组选项,可以传递给主机插件. 无法使用此函数订阅更改事件 .

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

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

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

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

配置主机

初始化

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

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

initialize();

注册插件

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

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客户的请求将被拒绝.

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 以安装依赖.

线性

# eslint
npm run lint

测试

# run tests
npm test

版本和发布

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

为了学习如何从维护分支中产生主要释放和释放,请参见: 语义- 释放 GitHub 动作 文档.

版本与发布记录

@brightspace-ui/lms-context-provider 共发布 34 个版本,首次发布于 2024/05/14;过去 12 个月发布了 12 个版本。

版本发布日期距今
1.35.0latest2026/10/1920 天前
1.34.02026/09/141 个月前
1.33.02026/08/172 个月前
1.32.02026/07/203 个月前
1.31.02026/06/154 个月前
1.30.02026/05/185 个月前

关于 @brightspace-ui/lms-context-provider 的常见问题

@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 和提交记录判断。