
lblod/ember-rdfa-editor本镜像托管ember-rdfa-editor插件的虚拟应用。ember-rdfa-editor是一个Ember.js插件,提供RDFa感知的富文本编辑器,构成say编辑器的核心。该编辑器可通过插件扩展,为特定内容(如日期、模板、引用等)提供提示,这些提示通常会在内容中插入RDFa标注。
适用于需要RDFa结构化数据标注的富文本编辑场景,如文档创作、内容管理系统、学术写作等,尤其适合需要对文本内容添加语义化标注的应用。
通过Ember命令安装插件:
ember install @lblod/ember-rdfa-editor
在模板中使用编辑器(Ember Octane语法):
<Rdfa::RdfaEditor @rdfaEditorInit={{this.rdfaEditorInit}} @editorOptions={{hash showToggleRdfaAnnotations="true" showInsertButton=null showRdfa="true" showRdfaHighlight="true" showRdfaHover="true"}} @toolbarOptions={{hash showTextStyleButtons="true" showListButtons="true" showIndentButtons="true"}} />
rdfaEditorInit回调在编辑器元素插入时调用,提供以下接口:
htmlContent:清理后的HTML内容(尽可能移除内部状态)richNode:文档内部表示的副本rootNode:编辑器DOM的副本(包含编辑器元素)setHtmlContent(html):设置编辑器的HTML内容通过@editorOptions传递基本选项,值为"true"启用,移除选项或传递null禁用:
通过@toolbarOptions设置工具栏按钮:
编辑器的部分实验性功能通过功能标志隐藏,可在测试时启用,不建议生产环境使用。标志在应用的config/environment.js中设置:
javascript// config/environment.js module.exports = function(environment) { var ENV = { featureFlags: { 'editor-html-paste': true, } }; if (environment === 'production') { ENV.featureFlags['editor-html-paste'] = false; } return ENV; };
各标志说明:
ember-rdfa-editor会将默认样式添加到vendor css文件中ember-cli-sass时,需手动导入样式:
通过scss@import "ember-rdfa-editor";
ember install安装时,会自动在app.scss中添加上述导入语句使用ember-cli-sass时,可通过覆盖变量自定义编辑器主题,相关变量文件:
详见Contributing指南。
通过以下步骤扩展编辑器功能:
app/config/editor-profiles.js中,将插件名称添加到一个或多个编辑器配置文件中插件会被编辑器自动识别。示例app/config/editor-profiles.js:
javascriptexport default { default: [ "rdfa-editor-standard-template-plugin", "rdfa-editor-date-plugin" ], all: [ "rdfa-editor-console-logger-plugin", "rdfa-editor-standard-template-plugin", "rdfa-editor-date-plugin" ], none: [] };
插件是提供服务的Ember插件,该服务实现execute方法以处理编辑器中的变更,并提供组件显示提示。
Ember服务必须提供execute属性(异步函数或Ember Concurrency任务),接受以下参数:
hrId [string]:提示注册表中事件的唯一标识符contexts [Array]:事件应用的文本片段的RDFa上下文hintsRegistry [Object]:编辑器的提示注册表editor [Object]:RDFa编辑器实例示例(异步函数):
javascriptexport default Service.extend({ async execute(hrId, contexts, hintsRegistry, editor) { // 更新提示注册表中的提示 } })
示例(Ember Concurrency任务):
javascriptexport default Service.extend({ execute: task(function * (hrId, contexts, hintsRegistry, editor) { // 更新提示注册表中的提示 }) })
execute方法需更新插件在提示注册表中的提示,常用方法:
hrId:事件唯一标识符who:提示类型标识符(如editor-plugins/date-card)cards:提示对象数组region:[start, end] 区域范围hrId:事件唯一标识符who:提示类型标识符提示以卡片形式显示,仅适用于文本的特定部分。添加到提示注册表的提示必须是EmberObject,包含以下属性:
card [string]:显示提示的组件名称location [int, int]:提示应用的文本起始和结束索引info [Object]:传递给卡片组件的自定义对象options.noHighlight [boolean]:设为false时移除提示高亮(用于被动提示)提示注册表会在提示应用的文本被选中时,使用指定组件渲染提示。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务