摘要:
公司的新项目用到了 Umi,之前用过 Umi 1.x 版本,而现在已经来到了 3.x 时代 相对低版本来说,Umi 3.x 的整体的设计没有什么大变化,但在细节上还是有着不小的改变 比如 model,除了兼容以前的 connect 写法之外,还可以使用 hooks,这篇文章主要是对 hooks 写法 阅读全文
摘要:
一、需求描述 在 Word 中编辑文档的时候,可以在视图中打开导航窗格来查看目录树 类似的,现在需要基于页面上的文章,渲染出一个这样的目录结构 在网页上这些标题都是通过 <h1> 这样的标签渲染的,而且段落与标题之间是兄弟节点的关系 所以第一步只需要获取到文章的根节点,然后遍历 <h1> 这样的兄弟 阅读全文
摘要:
最近参加了一次蚂蚁金服的面试,其中有两道笔试题,分别是手写事件总线和手写模板引擎 手写模板引擎比较复杂,除了需要识别 {{data.name}} 这种基本情况之外, 还要兼顾 {{data.info[1]}}、{{data.others["about"]}} 于是先记录下手写事件总线,后面再完善手写 阅读全文
摘要:
问题描述: 页面中有这样的结构: <main> <section> <p>long time no see</p> <p>long time no see</p> </section> <table> <tr> <th>Name</th> <th>Info</th> </tr> <tr> <td>W 阅读全文
摘要:
这篇文章将以插入图片为例,介绍如何在 CKEditor5 中插入块级元素,以及在块级元素上添加工具栏 最终的效果如下: 一、定义 Schema 和 Conversion 和之前的加粗插件、超链接插件不同,图片在编辑器中是以块级元素呈现的 所以在定义 Schema 的时候需要设置 isObject 以 阅读全文
摘要:
前面的几篇文章已经介绍了 CKEditor5 插件的构成,并开发了一个加粗插件 这篇文章会用一个超链接插件的例子,来介绍怎么在 CKEditor5 中开发带有弹窗表单的插件 一、设计转换器 Conversion 开发 CKEditor5 的插件有两个必须步骤: 1. 设计好 View、Model 以 阅读全文
摘要:
上一篇文章将加粗插件的架子给搭好了,现在就来完善具体的逻辑,主要的难点在于 model 和转换器 conversion 一、创建一个 Schema 在 CKEditor 5 中,编辑器实现了自己的一套运行时的编辑内容,即 model,可以打开调试器 CKEditorInspector 查看 然后编辑 阅读全文
摘要:
基于编辑器做二次开发,可能大部分的工作量都在于自定义插件 而 CKEditor 5 实现了一套自己的 MVC 架构,导致开发自定义插件尤为复杂 一、插件的基本架构 CKEditor 5 的自定义插件都需要从 Plugin 类继承,在此基础上根据实际情况开发三个模块: 1. editing: 插件的 阅读全文
摘要:
最近需要将项目中的编辑器从 CKeditor 4 升级到 CKeditor 5 原以为只是换个内核,然后稍微调整一下自定义插件的代码,没想到进了一个大坑 在经过一个月的摸爬滚打之后,终于完成升级内核的工作,同时也算摸清了 CK5 的基本玩法 为方便后面的同学来接手,打算新起一个项目,记录一下 CK5 阅读全文
摘要:
某个阳光明媚的下午,我正悠闲的品着刚买的滇红,测试小姐姐突然急匆匆的找到我: “快看一下群里,文章编辑器出问题了!” 我手中的滇红瞬间不香了,抓了抓所剩无几的头发,开始了漫长的 Debug 环节 经过排查,发现问题的根源居然是一段正则表达式... 一、问题重现 // 在浏览器控制台中运行下面的代码 阅读全文