登录社区云,与社区用户共同成长
邀请您加入社区
复制粘贴是编辑器里最被低估的功能——它同时是内容的出口和入口,牵扯三个各自独立的问题:格式(剪贴板里存什么,外部应用读得懂吗)、身份(粘贴出来的块用什么 ID)、平台(怎么跟 @ohos.pasteboard 和它的权限模型打交道)。ADR-0004 的答案是先把前两个问题在框架层解决干净,再把第三个问题压缩成一个"薄壳"适配器。
编辑器里永远有两份文本真相:引擎 Block 模型里的那份,和屏幕 RichEditor 缓冲里的那份。让它们在打字、拆分、合并、撤销的每一步都保持一致,是鸿蒙编辑器工程最凶险的一英里——凶险到很多问题只存在于真机上:Undo 连按好几下没反应、然后一次性删光所有文字;按个 Enter,整页文本凭空消失。
编辑器渲染的黄金法则是"只更新受影响的块"——但把这条法则落到 ArkUI 上,你会撞上一堵写满警告的墙:ForEach 的 key 怎么写、@Prop 什么时候不可靠、@Builder 为什么不能跨文件。
每个块插件都有用户可编辑的属性——图片的宽高布局、卡片的尺寸变体、Callout 的语义类型。在属性引擎之前,接入一个插件要在 UI 层、路由层、控制器层各写一份几乎相同的代码,插件数量线性增长,重复代码同步增长。
框架的扩展性有两种死法:一种是让插件改内核(改着改着内核就不是内核了),另一种是给官方功能留后门(官方走快捷通道,SDK 沦为装饰)。ArkBlocks 给自己立了一条狠规矩——官方块类型逐个迁出内核、强制走插件通道,迁移本身就是对 SDK 的验收测试:官方插件过不了 SDK 这条路,修的是 SDK,不是开后门。
编辑器的文档不是只活在内存里——它从云端同步来、从剪贴板粘贴来、从用户导出的 JSON 恢复来。运行时校验因此不是锦上添花,而是数据边界上的海关。但 ArkBlocks 的 Schema 体系有意思的地方在于:同一份注册表,既是类型契约(什么块合法、什么属性能存),又是 UI 的数据源(插入面板、样式菜单、斜杠菜单全部由它聚合生成)。
撤销/重做是编辑器给用户的"安全网"——用户之所以敢大胆删改,是因为相信一切可以反悔。而这个安全网的可靠性,取决于一个底层选择:历史栈里存什么。ArkBlocks 的答案是不存文档、只存操作:每个历史条目记录"这步怎么来的"和"怎么回去的"两组操作。本篇拆解 history/ 模块约 250 行源码:快照方案与逆操作方案的内存数学题、undo() 与 redo() 惊人的结构对称性、防重入守卫如何
上一篇确立了"Document 持有 Block 树"的唯一事实来源,但留下一个悬念:既然谁都要读文档,那谁被允许写?ArkBlocks 的答案极端而彻底——只有一个类被允许调用 Document 的变更方法,且每次写入必须以事务为单位。本篇把 transaction/ 目录五个文件共约 2600 行代码拆开讲透:20 种类型化操作如何把"编辑"翻译成离散代数、五阶段校验管道为什么缺一不可、逆操作
编辑器框架动工前必须回答的第一个问题是——"文档存在哪里?"。这个问题答含糊了,后面每个子系统都会发明自己的答案,最终你会在"用户敲了一个字符,几处状态要同步"的泥潭里挣扎。ArkBlocks 用 RFC-0001 把答案焊死:Document 持有 Block 树,其余一切(选区、历史、渲染、剪贴板)都只是派生视图。本篇拆解这份 855 行的架构契约如何落成 997 行的 Document.ts
做一个笔记应用、知识库或 AI 写作工具,绕不开的第一个硬骨头是结构化内容编辑。本篇不从代码开始,而是先回答三个更根本的问题:鸿蒙上做编辑器,现有三条路各自会死在哪里?Block 编辑器范式到底比"富文本"多给了你什么?以及——一个决心演进多年的编辑器框架,工程上该怎么防腐烂。文中所有架构决策、代码与数据均来自 ArkBlocks 项目(纯 ArkTS 实现的 HarmonyOS NEXT 原生
本文介绍了在鸿蒙OS环境下开发Markdown桌面编辑器inkdown的适配过程。主要内容包括:1)环境准备,使用鸿蒙DevEco Studio和Electron-25.x框架;2)代码适配,将原项目降级至Electron 25.3.2并解决WebAssembly兼容问题;3)通过修改shiki配置实现代码高亮功能。文章提供了详细的工具下载地址、项目结构说明和关键代码修改方案,最终成功在鸿蒙设备上
该产品覆盖Windows、mac、Linux、鸿蒙、移动端及Web端,支持统一账户跨终端办公。福昕软件公司专注于PDF/OFD版式文档技术,提供文档生成、转换、编辑、签章、安全管理等全生命周期解决方案,产品覆盖桌面、移动和云端,服务于政府、企业及个人用户。覆盖桌面端(Windows、mac、Linux、鸿蒙)、移动端(iOS、Android)及Web端,支持统一账号体系跨设备使用。包括AI辅助编辑
《龍魂·韬定律(芯片级)v1.1》摘要 本文提出基于华为鲲鹏/昇腾芯片的三层算力调度方案,解决"资源浪费与需求爆发"的核心矛盾。方案将算力分为: 1)L1常显层(15W基础守护,7×24小时运行基础任务) 2)L2蓄力层(45W弹性扩展,按需30秒唤醒处理中等负载) 3)L3暗涌层(150W爆发模式,10ms极速响应P0级任务,5分钟强制断电) 通过动态调度算法实现: 安全任务优先通过L1层过滤
摘要: 《龍魂·韬定律(芯片级)v1.0》提出了一种分层算力调度架构,对标华为鲲鹏/昇腾芯片特性,实现“隐藏算力-弹性释放-瞬时爆发”的动态能力。核心分为三层:L1常显层(基础算力)、L2蓄力层(弹性伸缩)和L3暗涌层(隐藏算力,紧急时10ms激活)。通过智能触发机制(任务队列、安全事件等)动态调配资源,结合硬件级加密与功耗管理,实现高效能、高安全性的芯片级算力优化。协议为P0级不可修订,确保底层
摘要: 本文探讨了鸿蒙PC版Markdown编辑器的原生测试验证方法,强调在ohosTest环境中验证文件读写核心功能的重要性。文章详细介绍了测试模块独立配置、沙箱环境管理、字节级文件验证、故障注入测试等关键技术点,并提供了具体代码示例。测试方案包括UTF-8 BOM/CRLF处理、混合换行符归一化、文件恢复机制验证以及大纲服务测试等核心功能验证,所有测试均基于真实设备运行时环境执行,确保功能在实
摘要 本文详细介绍了鸿蒙PC版Markdown编辑器OhMarkdown的构建交付流程。该应用采用ArkTS原生代码与Vite Web内核双架构,需严格按顺序构建:先通过Vite生成离线HTML,再用Hvigor打包成HAP。文章重点阐述了Debug/Release双构建链配置、API 24兼容性设置、单文件资源优化、未签名HAP生成及SHA-256校验机制,并提供了构建产物安全检查、包体增长管理
本文介绍鸿蒙PC Markdown编辑器OhMarkdown如何实现GFM语法渲染与安全预览。通过markdown-it配置支持表格、删除线、自动链接等核心GFM功能,配合任务列表插件实现复选框渲染。采用双重安全机制:禁用原生HTML解析,并对所有渲染结果进行DOMPurify净化处理。预览更新采用脏标记策略优化性能,大文档自动禁用预览模式。方案在功能完整性与安全性间取得平衡,完整代码已开源。
鸿蒙PC Markdown编辑器安全防护方案 本文详细介绍了鸿蒙PC端Markdown编辑器的分层安全防护体系。针对不可信Markdown输入可能带来的安全风险,系统构建了五层防御机制:通过CSP默认拒绝策略建立基础防护;配置markdown-it禁用原始HTML;使用DOMPurify进行输出净化;对链接进行特殊处理;最后通过ArkWeb权限收缩和Bridge白名单限制原生能力。文章特别强调安全
本文详细介绍了鸿蒙PC编辑器基于Core File Kit的文件系统安全处理方案。通过URI权限管理、严格UTF-8编码校验、分块读取、完整写入校验、外部修改检测和沙箱备份等机制,确保文件操作的安全性和可靠性。文章具体说明了文件选择器权限获取、20MB大小限制、BOM处理、多标签冲突避免、原子写入验证、外部变更检测以及错误恢复等关键实现细节。所有操作都围绕保持用户数据完整性展开,即使出现错误也保留
本文探讨了在鸿蒙PC的ArkWeb环境中离线运行CodeMirror 6编辑器的技术方案。文章重点分析了如何通过状态管理、依赖内联和架构设计,实现一个可靠、安全的Markdown编辑内核。主要内容包括: CodeMirror 6作为编辑核心,ArkUI处理原生交互的混合架构 保持单一文本事实源,避免多模型漂移问题 通过Vite将依赖内联到HAP包,确保离线可用性 大文档模式下的性能优化策略 预览与
本文介绍了鸿蒙PC Markdown编辑器OhMarkdown中实现多标签编辑会话隔离的关键技术。通过为每个会话保存完整的EditorState引用而非仅存储文本内容,有效隔离了撤销历史、光标位置等编辑状态。文章详细阐述了会话快照的数据结构设计,包括基线文档、脏标记、修订版本等业务状态的隔离保存,并分析了为何需要清理延迟任务和采用不可变数据结构。该方案解决了多标签编辑器中跨文档状态串扰的核心问题,
本文介绍了鸿蒙PC Markdown编辑器Bridge协议的设计与实现,重点解决原生ArkUI外壳与ArkWeb内核之间的状态同步问题。协议采用双向通信机制:Web到原生使用JavaScript Proxy传递事件,原生到Web通过runJavaScript发送命令。文章详细拆解了接口设计原则,包括白名单机制、初始化屏障、状态与内容分离传输、防抖节流策略、命令快照一致性保障、参数安全编码等关键技术
本文探讨了鸿蒙PC版Markdown编辑器对文本格式的无损处理方案。文章指出,即使文本内容相同,文件底层字节可能因BOM、CRLF等格式差异而不同,这对开发者工具而言是数据兼容问题。解决方案包括:分离保存正文和格式元数据;精确检测BOM和行尾类型;CodeMirror编辑器配置lineSeparator保持原格式;实现格式信息的全流程无损传递。文章还纠正了BOM处理的常见误区,并强调CRLF不应简
本文介绍了鸿蒙PC版Markdown编辑器OhMarkdown从Alpha进入Beta阶段的质量验证工作,重点包括: 质量验证分为内部可重复基线和外部真实证据两类,本轮完成了包含44项Playwright测试和10项ohosTest的内部基线验证。 新增精确构造10MB大文档测试,确保保护模式在字符级别精确触发;设计1000文件搜索测试用例,避免结果提前终止导致的假阳性。 通过统一门禁脚本串联We
鸿蒙PC Markdown编辑器存储安全实践 本文以鸿蒙PC Markdown编辑器OhMarkdown为例,深入探讨了HarmonyOS Core File Kit中AtomicFile的正确使用方法及数据安全存储策略。主要内容包括: 存储策略分类:区分应用沙箱内恢复JSON(使用AtomicFile)和用户选择的外部URI文件(采用备份机制) 原子写入原理:通过临时文件+替换机制确保数据完整性
本文介绍了鸿蒙PC Markdown编辑器ArkWeb运行时在不重载CodeMirror的情况下实现中英文切换的技术方案。通过定义强类型消息表接口、使用CodeMirror的Compartment机制和固定Bridge入口,实现了语言切换时保留编辑状态(文档、选择区、撤销历史等)的同时更新界面文本。方案将需要本地化的内容分为可访问名称、稳定文案、数据驱动UI和动态反馈四类,采用不同更新策略。英文词
本文分析了鸿蒙PC Markdown编辑器在跨运行时通信中的JSON解码问题。当ArkUI调用ArkWeb JavaScript时,返回值可能被隐式编码为JSON字符串格式,导致多标签内容和HTML导出出现转义字符污染。文章提出通过JSON.parse解码字符串返回值的方法,并强调需要区分不同类型返回值(字符串、数字、布尔值)的处理方式。同时指出Web API参数同样需要结构化编码以避免注入风险。
本文介绍了鸿蒙PC编辑器OhMarkdown的ArkUI本地化实现方法。通过定义资源边界,将稳定交互词汇资源化(base/zh_CN目录)而保持动态内容原样展示;采用语义化资源命名而非布局位置命名;覆盖全流程包括高风险操作;组件统一引用资源而非硬编码文案。Ability生命周期管理确保语言配置一致性:启动时从ResourceManager同步locale到AppStorage,支持配置更新和回到前
这篇文章介绍了鸿蒙PC版Markdown编辑器的界面分层重构方案。原代码5000多行的WorkspaceShell组件混杂了文档会话、文件操作、UI展示等多种职责,导致维护困难。重构后形成五层结构: WorkspaceShell作为顶层容器,管理窗口级状态 panels/目录处理完整功能面板(搜索/文件树等) components/目录处理独立UI区域(标签栏/状态栏等) bridge/层处理Ar
本文聚焦鸿蒙 PC 自由窗口、桌面信息密度、ArkUI 与 ArkWeb 状态边界,以及键鼠、触控板和触控共同存在时的交互约束。。
本文介绍了鸿蒙PC Markdown编辑器的通信架构设计,通过ArkTS-JavaScript Bridge实现ArkUI原生外壳与ArkWeb编辑内核之间的高效交互。设计核心是建立最小化通信协议,按数据所有权划分通信方向,避免频繁全文传输。ArkTS侧仅开放5个入站方法,ArkWeb侧严格限制权限,实现编辑器状态同步、文档变更节流和安全性控制。文章详细阐述了双向通信机制、节流策略、就绪握手流程及
本文阐述了鸿蒙PC Markdown编辑器Alpha阶段评审的核心原则与方法。主要内容包括:1)阶段评审应以预设退出条件为唯一标准,杜绝主观判断;2)详细列出了G2计划的四项硬性退出条件及当前完成情况;3)强调证据必须绑定具体版本,提供当前工程基线信息;4)通过证据矩阵展示各功能模块的验证状态;5)指出当前未达标项(远程CI确认和10人7天试用);6)明确给出"Alpha退出评审不能通过"的结论。
文章摘要 本文详细介绍了鸿蒙PC版Markdown编辑器OhMarkdown的响应式窗口适配方案。通过分析编辑器的核心任务优先级,提出了在1280vp、960-1279vp、720-959vp和<720vp不同断点下的布局策略。重点解决了窄窗口下侧栏的显示问题,采用Stack布局实现覆盖式侧栏而非直接隐藏,确保编辑区不被压缩。同时优化了标签栏、状态栏和外部冲突条的窄屏表现,保持核心功能可用性。文章
文章摘要 本文探讨鸿蒙PC Markdown编辑器OhMarkdown如何确保预览与导出内容的一致性。专业预览涉及KaTeX公式、Mermaid图表等高亮代码的异步渲染,传统直接导出Markdown源码会导致格式丢失。OhMarkdown通过以下机制实现可靠输出: 同步判断:等待所有异步渲染(公式、图表、代码高亮及本地图片加载)完成才允许导出 DOM克隆:基于最终预览DOM生成独立HTML,移除内
《鸿蒙PC Markdown编辑器右键菜单兼容实践》摘要: 本文介绍了OhMarkdown编辑器在鸿蒙PC端实现原生与Web右键菜单兼容的技术方案。项目采用ArkUI原生组件与ArkWeb混合架构,面临两种右键菜单技术栈差异:Web层通过contextmenu事件触发受限HTML菜单,原生区域则通过HarmonyOS MouseEvent调用ArkUI弹层。针对MateBook Pro模拟器中右键
本文介绍了鸿蒙PC版OhMarkdown编辑器实现Markdown内容输出为PNG图片和系统分享功能的技术细节。文章重点阐述了通过ArkWeb全页绘制捕获完整预览内容的技术方案,包括必须在Web初始化前启用whole-page drawing、临时调整页面布局以获取完整高度、显式处理16000px的平台限制等技术要点。同时详细说明了PixelMap捕获与PNG编码分离的架构设计,强调资源释放的重要
本文讨论了鸿蒙PC端Markdown编辑器OhMarkdown的右键菜单系统设计与实现要点。该系统通过统一命令路由、焦点管理和状态同步,解决了多入口操作的一致性问题。关键技术点包括: 采用命令注册表统一管理所有操作入口(快捷键、右键、命令面板等),确保条件和行为一致 正确处理选区与右键位置的逻辑分离,避免操作目标混淆 实现严格的窗口边界约束和焦点闭环管理,保障键盘操作体验 建立全局Escape处理
文章摘要 本文详细介绍了鸿蒙PC版Markdown编辑器OhMarkdown的版本历史功能实现方案。该系统采用沙箱隔离设计,将版本历史作为独立于工作区文件的辅助功能,确保用户原始文档始终是唯一事实来源。关键技术包括: 使用SHA-256哈希建立文档唯一标识,解决路径字符和冲突问题 完整记录格式信息(BOM、换行符等)以实现精准恢复 实现原子写入机制保证快照完整性,包含临时文件、同步写入和多重校验
本文介绍了鸿蒙PC上Markdown编辑器的导出功能验收方案。主要内容包括: 强调了独立系统验收的重要性,指出应用内部测试无法验证跨应用文件消费的可靠性,必须通过系统浏览器和图片查看器进行验收。 详细说明了系统选择器作为写入授权的起点,应用程序不应假设绝对路径,而应通过DocumentViewPicker获取用户授权。 介绍了文件名净化策略,确保跨文件系统兼容性,同时避免文档内容与文件名相互影响。
文章摘要 鸿蒙PC Markdown编辑器在设备测试阶段暴露了系统剪贴板权限问题,揭示了浏览器测试与真实设备环境的差异。通过分析剪贴板操作的五层架构(CodeMirror、ArkWeb、系统权限、输入法、焦点路由),发现需在entry模块声明READ_PASTEBOARD权限并限定为前台使用场景。修复方案保持最小权限原则,区分文本与图片粘贴路径,确保中文UTF编码测试覆盖,并通过焦点路由管理键盘所
文章摘要 本文以鸿蒙PC版Markdown编辑器OhMarkdown为例,深入探讨了编辑器无障碍与国际化的工程实现。作者指出无障碍不仅是按钮命名,而是涉及从ArkUI到CodeMirror的完整交互链路;国际化也不仅是翻译,还需处理双向文本、系统字体缩放等复杂场景。文章详细介绍了系统字体适配方案(包括比例计算、工具栏扩展布局)、焦点管理规则以及RTL文本处理等关键技术点,强调通过可验证的工程规则而
摘要 本文探讨了鸿蒙PC版Markdown编辑器OhMarkdown中防误操作设计的关键机制,重点分析了未保存内容标签关闭时的状态管理。主要设计要点包括: 区分关闭意图与关闭提交,确保脏标签必须经过用户确认 提供取消/放弃/保存三个明确选项,避免简单布尔确认框导致的数据丢失风险 实现后台标签激活再保存的机制,保证保存内容准确性 采用pendingCloseSessionId标记等待关闭的会话,确保
本文介绍了为鸿蒙PC Markdown编辑器"芯笺Markdown"进行的品牌设计工程。文章详细阐述了从命名策略到图标设计的全过程,重点解决了以下核心问题: 命名采用"芯笺 Markdown"组合,兼顾中文可读性与品类识别性; 图标采用文稿轮廓、字母M和向下箭头的三层结构设计,确保各尺寸下的可辨识度; 遵循HarmonyOS分层图标规范,将设计元素合理分配至前景与背景层; 建立品牌一致性,同步更新
本文围绕鸿蒙PC平台Markdown编辑器的工程实践,探讨了规范兼容性与性能预算的实现方法。主要内容包括: 规范兼容性需明确定义三层标准:语法层严格遵循CommonMark 0.31.2的652条测试用例;产品层明确支持GFM扩展子集;安全层保持HTML净化。 测试语料管理采用上游冻结策略,通过SHA-256校验确保测试样本完整性,防止编辑器自动清理改变语义。 GFM删除线功能需特殊处理,支持单/
摘要 本文分析了鸿蒙PC Markdown编辑器的文件拖放处理机制,重点探讨了文档与图片拖放的不同语义实现。系统通过四层处理流程确保操作安全可靠:从DragEvent提取URI、按扩展名分类、批量接受/拒绝判断、分别进入文档或图片服务。文章详细说明了混合文件类型整体拒绝的设计考量、多文档打开的事务处理逻辑,以及图片资源的三种处理模式(复制/移动/引用)。同时强调了异步操作与同步反馈的协调机制,确保
摘要 本文介绍了鸿蒙PC Markdown编辑器OhMarkdown在防误操作设计中处理未保存标签关闭的完整状态机方案。文章重点分析了三种关闭路径: 取消关闭:保持当前编辑状态不变 放弃保存:直接关闭标签,内容将丢失 保存后关闭:需确保内容真正持久化成功后才关闭标签 系统采用了两阶段关闭机制:先确认意图(requestClose),再执行实际关闭(closeDocumentSession)。对于后
鸿蒙 PC Markdown 编辑器外部修改检测方案 本文介绍了鸿蒙 PC 版 Markdown 编辑器 OhMarkdown 实现外部修改检测的技术方案。系统采用三态模型(磁盘当前版本、编辑器缓冲区、持久化基线)来可靠判断文件冲突,通过文件指纹(大小+修改时间)初步筛选变化,再通过正文和格式比较确认差异。文章详细阐述了轮询机制设计、指纹变化处理流程、干净缓冲区自动重载策略,以及脏缓冲区冲突决策方
摘要 本文探讨了鸿蒙 PC Markdown 编辑器中图片拖放的三种文件语义:复制、移动和仅引用。文章指出,桌面用户拖放图片时,同一视觉动作可能对应不同的文件操作意图。OhMarkdown 在鸿蒙 PC 版本中实现了这三种语义的完整支持,通过显式模式设置而非自动猜测来保证操作的可预测性。 关键技术点包括: 通过 UDMF 原生拖放接口获取系统级文件语义,区分 Web 和原生拖放区域 对拖放文件进行
摘要 本文详细介绍了鸿蒙PC Markdown编辑器中图片粘贴功能的实现流程与技术要点。该功能从系统剪贴板到生成标准相对链接的完整工作流包含多个关键步骤:剪贴板格式识别、大小限制、MIME校验、文件名清洗、资源目录授权、重名处理、安全落盘和链接插入等。 系统采用Web层与原生层协同的安全架构,Web负责识别和提出请求,原生层进行严格验证和资源管理。通过类型白名单限制、请求验证、文件名清洗、资源目录
摘要: 鸿蒙 PC Markdown 编辑器实现了精准的搜索结果跳转功能,解决了文件修改后偏移失效、多编码差异等问题。系统在搜索结果中存储 UTF-16 偏移量、匹配文本等关键信息,跳转时重新读取文件内容进行验证。若原匹配仍存在,则直接定位;若位置变化,则查找最近匹配;若匹配消失则提示重新搜索。最终通过 CodeMirror 实现准确选区定位,并确保滚动到可视区域。该方案分离了展示坐标与执行坐标,