关于 umbraco-global-context
umbraco-global-context 是用于构建共享类型安全上下文的技能,上下文在 Umbraco 后台会话期间持续存在,并指导开发者生成令牌、实现和清单。
主要功能
- 01在扩展间共享状态和函数
- 02在后台会话期间持续存在
- 03提供类型化上下文令牌与实现
- 04指导生成上下文和清单
适用场景
- 01协调扩展之间的通信
- 02在后台共享集中式服务
- 03为共享状态创建会话级上下文
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-global-context安装后在 Claude Code 中输入/umbraco-global-context确认已加载。
详细介绍
Umbraco 全局上下文
这是什么?
全局上下文创建了一个共享的、类型安全的数据和函数层,可在整个后台中访问。与作用域上下文(如工作区上下文)不同,全局上下文会在整个后台会话期间持续存在。可使用它们在扩展之间共享状态、管理集中式服务,或协调通信。注意:尽可能优先使用更具体的上下文类型,Umbraco 很少使用全局上下文。
文档
实现前请务必获取最新文档:
- 主要文档:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types/global-context
- 上下文 API:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation/context-api
- 基础:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- 扩展注册表:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
相关基础技能
-
上下文 API:了解上下文的使用模式
- 参考技能:
umbraco-context-api
- 参考技能:
-
状态管理:管理上下文中的响应式状态
- 参考技能:
umbraco-state-management
- 参考技能:
工作流
- 获取文档 - 对上述 URL 使用 WebFetch
- 提出问题 - 要共享哪些状态?需要哪些服务?是否可以改用工作区上下文?
- 生成文件 - 根据最新文档创建上下文令牌、实现和清单
- 说明 - 展示创建的内容以及如何使用该上下文
最简示例
上下文令牌(my-global-context.token.ts)
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import type { MyGlobalContext } from './my-global-context.js';
export const MY_GLOBAL_CONTEXT = new UmbContextToken<MyGlobalContext>(
'My.GlobalContext'
);
上下文实现(my-global-context.ts)
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';
export class MyGlobalContext extends UmbContextBase {
#currentValue = '';
constructor(host: UmbControllerHost) {
super(host, MY_GLOBAL_CONTEXT);
}
getValue(): string {
return this.#currentValue;
}
setValue(value: string): void {
this.#currentValue = value;
}
}
清单(umbraco-package.json)
{
"name": "My Global Context Package",
"extensions": [
{
"type": "globalContext",
"alias": "My.GlobalContext",
"name": "My Global Context",
"js": "/App_Plugins/MyPackage/my-global-context.js"
}
]
}
使用上下文
import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';
class MyElement extends UmbElementMixin(LitElement) {
#myContext?: MyGlobalContext;
constructor() {
super();
this.consumeContext(MY_GLOBAL_CONTEXT, (instance) => {
this.#myContext = instance;
});
}
}
就是这样!务必获取最新文档,保持示例精简,并生成完整可运行的代码。
评论
支持 Markdown