首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「可视化搭建系统」——从设计到架构,探索前端领域技术和业务价值

因此我们设计了 Markdown 编辑器的按钮:「添加 Sku Cell」,点击按钮之后,会弹出表单对话框,由运营输入 Sku 类型和 id ,即可自动 Markdown 编辑器中光标所在位置插入一行内容...', '第二行 Sku 卡片对应的富文本内容', // ... ] 合并 result 内容,渲染出富文本,显示页面右侧,实现所见即所得效果。...总结一下实现“所见即所得效果”的要点为: 自定义 Markdown 语法解析器 利用 React 服务端渲染能力得到特殊组件的富文本内容 需要指出的是,实际实施当中:运营在编辑器中,保存并提交给后端的数据区别于上述...因为 Draft.js 是一个基于 React 的编辑器,我们可以直接在编辑器中渲染出一个 React 组件 如下图: ?...相信很多人都经历过编辑器的体验之殇:“输入卡顿、诡异的光标位置”等,但这里我认为没有必要分析传统编辑器的体验优化话题,更有意义的是从我们特有的多功能编辑器特点入手,聊一聊用户体验。

1.9K30

在线文档技术揭秘开篇 - 富文本编辑器

文本编辑器 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得文本编辑器。...-- 富文本输入框 --> documennt.execCommand('bold'); //操作 复制代码 L1 L1 L0 的基础上继续使用浏览器的特性、DOM 的 API 来自主实现...优秀的架构 能够定义一个文档模型,并且能够用一种简单的方式去区分两个文档模型是否视觉上相等。...良好的MVC架构,创建一个 DOM 与模型之间的映射,并且拥有完整的分层 文档模型上能够定义表现良好的编辑操作(operation)。...可维护性 - 富文本编辑器代码量随着迭代会越来越大,所以能够用简单可依赖的方式去维护是很重要的 可扩展性 - 优秀的插件机制,优秀的扩展迭代能力。

4.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

开源公告 | CherryMarkdown-更友好的编辑器前端组件

导语 作为一种轻量便捷的文本标记语言,Markdown已在互联网等行业得到广泛的应用。...易于扩展 由原生ES6实现,开发者可以快速进行二次开发和功能扩展;可以方便地使用vue/react等主流框架进行二次封装。 3....图片语法&所见即所得编辑 CherryMarkdown支持通过语法指定图片的大小和位置等属性,且允许预览区进行所见即所得的编辑交互。 2. ...多光标编辑 CherryMarkdown支持和主流代码编辑器体验类似的多光标批量编辑功能。 5. ...持续优化所见即所得编辑模式,增加插入思维导图能力,优化移动端适配; 3. 增加快捷键等快捷操作指令,增加第三方插件包(插入vscode),增加本地应用安装包。

1.3K40

脉脉上的 前端三大浪漫 是个啥?

背景 今天陌陌脉脉看到一个帖子,讲到前端三大浪漫....一、富文本编辑器 富文本编辑器市面上已经有很多优秀的开源版本了,但是问题在于每个产品的富文本编辑器需求不一样,所以可能导致有一些时候需要手撸编辑器 ---- 例如: Draft.js Slate.js...wangEditor 这些富文本编辑器还有衍生出他们的针对不同框架的版本,例如React,还有一些插件。...感兴趣的可以去github搜索给个star,方便以后用得上 作者当时手写过桌面软件的富文本编辑器(Electron,类似微信的聊天编辑器),痛苦得很,要控制光标、焦点,复制粘贴,适配多个操作系统环境的QQ...包括字体、字号、颜色、文本对齐、自动换行以及excel支持的各种数据类型 2.单元格。拖拽选取、下拉填充、自动填充、查找替换、合并单元格等。 3.行列。隐藏、插入、删除、冻结。 4.操作。

47720

精读《可视化搭建思考 - 富文本搭建》

基于富文本的可视化搭建看似很新颖,但其实早就被广泛使用了,任何一个富文本编辑器几乎都有插入表格功能,这就是一个典型插入自定义组件的场景。...写多少代码合适,如何以最小 API 透出最大弥补组件间缺失的 js 能力?目前来看,以状态数据驱动的低代码是相对优雅的。 用 ui 操作 代替 dsl + 组件。...积木式搭建和富文本搭建的区别 富文本文本为中心,因此编辑文字的光标会常驻,编辑的核心逻辑是排版文字,并考虑如何在文字周围添加一些自定义区块。...有了光标后,圈选也非常重要,因为大家编辑文字时有一种很自然的想法是,任何文字圈选后复制,可以粘贴到任何地方,那么所有插入到富文本中的自定义组件也要支持被圈选,被复制。...实际上富文本插入自定义区块也可以转换为积木式搭建方案解决,比如下面的场景: 文本 A 图表 B 文本 C 我们文本 A 与 文本 C 之间插入图表 B,也可以理解为拖拽了三个组件:文本组件 A +

1.1K10

19年你应该关注这50款前端热门工具(中)

16、 Emotion https://emotion.sh/ image.png Emotion是一款用JavaScript编写css的库,支持字符串和对象两种方式声明CSS变量,如果你使用React...tui.editor,方便集成到你的项目里,这款强大的富媒体编辑器有以下特点: 支持 CommonMark 与 GFM(GitHub Flavored Markdown)两种标准 支持丰富的扩展插件,颜色选择器...在所见即所得模式下,可以直接从浏览器、 Excel、PPT等复制文本,并且保留原来的格式 24、FilePond https://github.com/pqina/filepond image.png...无论银行应用程序、电子商务网站还是证券交易所平台,我们每天都在与金钱互动。我们也越来越依赖技术来处理问题。 然而,关于如何以编程处理货币价值尚无共识。...结果,每一种软件都有自己的处理方式,且伴随着陷阱。 Dinero.js遵循Fowler的模式更多一点儿。它允许你JavaScript中创建、计算和格式化货币值。

1.9K40

用Rust和React创建一个富文本编辑器

当你一个单元格中打字时,我们在哪里插入新打的字符?这如何影响content和相关的formatting?如果你一个选择上切换格式,应该发生什么?如果你将一个单元格从中间分割开来,又该怎么办?...这是因为浏览器通常只识别两种类型的编辑器:纯文本编辑器,和元素,以及使用一种叫做contenteditable的属性创建的自由格式编辑器。我们的编辑器两者都不是。...所以我们创建了一个普通的React组件,并根据单元格的content和formatting生成了富文本内容,然后使用React.createElement()插入实际的元素,这些元素只是一个应用了样式的...那么用户的光标呢?只是另一个我们自己插入的小React组件。我们会在useLayoutEffect()钩子中测量它需要的位置,然后根据这个来定位它。 所以......很简单,很容易,对吗?...光标定位是很棘手的,但我们发现最好的方法是使用浏览器的Selection对象,并通过这种方式设置一个(透明的)本地光标

2.5K133

人生苦短,何不用vim装13

使用vim编程基本可以脱离鼠标,服务器编程将会更加舒服,同时具有高逼格,成为别人眼中的“电影里的程序员”。 vim有很多快捷键,可以使用默认配置,也可以.vimrc文件中自定义配置。 ?...从normal模式转到insert有多种方式: i/I:光标之前插入/在行首插入。 a/A:光标之后插入/在行尾插入。 o/O:在下一行/上一行插入。 s/S:删除当前字符/当前行并插入。...使用gd定位到当前变量的声明位置。 使用%快速定位到配对字符,括号的另一半。 最后可以使用回到光标上一次的位置。 编辑文本 d指delete,是所有修改操作的基础。 删除一个字符。...x相当于dl,删除当前光标下的字符。 删除特定单词。daw表示delete a word,删除当前光标下的单词,使用dw/db从当前位置删除到后一个/前一个单词。 删除括号里的文本。...y指yank,复制,将上述操作中的d更换为y后,表示复制内容 使用r加特定字符,代替原来光标位置的字符。a使用rb后,文本变为b。

3.6K11

vi还是vim,教你快速上手linux下的文本编辑器

高效的操作方式:vim是一款纯键盘驱动的编辑器,使用者可以通过按键组合执行各种操作,而无需频繁地使用鼠标。这种纯键盘的操作方式更加高效,可以节省时间和精力。...广泛的应用范围:vim是跨平台的编辑器,可以多个操作系统上使用,Unix、Linux、macOS和Windows等。...vim具有以下重要且无法替代的功能:快速导航和定位:vim提供了强大的命令行和键盘快捷键,可快速文本中导航和定位到指定位置,无需使用鼠标。...文本编辑:i:在当前光标位置之前插入文本。a:在当前光标位置之后插入文本。o:在当前光标所在行的下方插入新行。O:在当前光标所在行的上方插入新行。dd:删除当前光标所在行。yy:复制当前光标所在行。...使用*命令进行当前单词的快速查找:将光标定位在某个单词上,然后按下*键,vim会定位到下一个出现该单词的位置。继续按下*键可以跳转到下一个匹配项。

55892

linux(五)之vi编译器

vi file1 如果file1文件不存在,将建立此文件;该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上。  ...vi +N file1(N:为数字) 如果file1文件不存在,将建立此文件;该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件第N行第1列的位置上。...vi +/string file1 如果file1文件不存在将建立此文件;该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置。  ...3.2、插入文本 3.2.1、添加       输入a后,光标的右边插入文本 输入A,一行的结尾处添加文本  3.2.2、插入     通过命令模式下输入i,光标的左边插入文本 通过命令模式下输入...I,在行首插入文本 3.2.3、插入新行     输入o,在当前光标位置下面打开一行 输入O,在当前光标位置上面打开一行 3.3、撤销更改 撤消前一个命令:最后一个命令之后立即输入u来撤消该命令

3K80

再见 Typora!这款 Markdown 神器绝了!

Markdown 作为程序员写作的心头爱,有很多优点: 通过语法实现排版,不需要点选手动设置样式 快速实现复杂内容,:代码块、超链接、公式等 让创作者有更多时间专注于内容 但,同样的也有些缺点: 有一定的学习门槛...Milkdown 一款高颜值+自由(插件)的所见即所得,集合 Markdown 编辑器、组件、插件于一身的开源项目。...3 架构 Prosemirror 的核心逻辑其实类似于 React,它通过一种函数式的数据映射来体现编辑器的 UI 和内部状态的关系,如图: 编辑器通过 EditorState 来保存当前状态,并由...Prosemirror 通过这样的方式将编辑器中的每个状态以 EditorState 的方式保存了下来,它是一颗树状结构。...而有一点编译原理基础的朋友都知道,任何编程语言都有对应的 AST(抽象语法树)。

37740

再见 Typora!这款 Markdown 神器绝了!

Markdown 作为程序员写作的心头爱,有很多优点: 通过语法实现排版,不需要点选手动设置样式 快速实现复杂内容,:代码块、超链接、公式等 让创作者有更多时间专注于内容 但,同样的也有些缺点: 有一定的学习门槛...Milkdown 一款高颜值+自由(插件)的所见即所得,集合 Markdown 编辑器、组件、插件于一身的开源项目。...三、架构 Prosemirror 的核心逻辑其实类似于 React,它通过一种函数式的数据映射来体现编辑器的 UI 和内部状态的关系,如图: 编辑器通过 EditorState 来保存当前状态,并由...Prosemirror 通过这样的方式将编辑器中的每个状态以 EditorState 的方式保存了下来,它是一颗树状结构。...而有一点编译原理基础的朋友都知道,任何编程语言都有对应的 AST(抽象语法树)。

3K30

任由文字肆意流淌,更自由的开源 Markdown 编辑器

Markdown 作为程序员写作的心头爱,有很多优点: 通过语法实现排版,不需要点选手动设置样式 快速实现复杂内容,:代码块、超链接、公式等 让创作者有更多时间专注于内容 但,同样的也有些缺点: 有一定的学习门槛...Milkdown 一款高颜值+自由(插件)的所见即所得,集合 Markdown 编辑器、组件、插件于一身的开源项目。...三、架构 Prosemirror 的核心逻辑其实类似于 React,它通过一种函数式的数据映射来体现编辑器的 UI 和内部状态的关系,如图: 编辑器通过 EditorState 来保存当前状态,并由...Prosemirror 通过这样的方式将编辑器中的每个状态以 EditorState 的方式保存了下来,它是一颗树状结构。...而有一点编译原理基础的朋友都知道,任何编程语言都有对应的 AST(抽象语法树)。

63320

2023最全vim编辑器教程(详细、完整)-编辑器之神

一、vi和vim介绍 vi和vim是两款常用的文本编辑器。vi是Unix系统中最早的文本编辑器之一,vim是vi的改进版本。 vi具有简单、高效的特点,可以终端中使用。...它具有多种模式,包括命令模式、插入模式和底行模式。命令模式下,用户可以执行各种编辑操作,移动光标、删除字符、复制粘贴等。插入模式下,用户可以输入文本。...vim还可以通过插件扩展其功能,使其更适用于不同的编程语言和开发环境。 vi和vim都是功能强大的文本编辑器,可以满足用户的各种编辑需求。...a 光标所在字符前开始插入 o 光标所在行的下面另起一行开始插入 I 光标所在行的行首开始插入,若行首有空格则在空格后插入 A 光标所在行的行尾开始插入 O 光标所在行的上面另起一行开始插入...S 删除光标所在行并开始插入 按照以上不同的方式进入编辑模式后,正常使用键盘进行增删改即可,重点掌握前两种方式,退出编辑模式键盘按ESC键; 七、vim功能模块 1.代码着色 语法1::syntax

2K50

一款开源的Markdown转富文本编辑器的实现原理剖析

编辑器 编辑器使用的是CodeMirror,具体来说是一个二次封装的组件React-CodeMirror: import CodeMirror from "@uiw/react-codemirror";...然后进行加工修改: `**${selected}**` 复制代码 最后替换选区的内容: editor.replaceSelection(`**${selected}**`) 复制代码 此外也可以修改光标位置来提升体验...,比如加粗操作后光标位置会在文字后面,而不是*后面就是因为markdown-nice替换完选区内容后还修改了光标位置: export const bold = (editor, selection...editor.replaceSelection(`**${selection}**`); const cursor = editor.getCursor(); cursor.ch -= 2;// 光标位置向前两个字符...cursor.ch += 2; markdownEditor.setCursor(cursor); markdownEditor.focus(); }; 复制代码 同样修改了光标位置并且让编辑器重新聚焦

64410

python中的ideavim有什么作用_IdeaVim插件施用技巧

IdeaVim插件使用技巧 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件日常编程中的一些常用小技巧。...进入修改进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。...I – 光标移动到行首并进入插入模式A – 光标移动到行尾并进入插入模式s – 删除光标所在字符并进入插入模式S – 删除光标所在行并进入插入模式c – 删除光标所在位置周围某个范围的文本并进入插入模式...(例如dd删除一行,yy复制一行,cc删除一行文本并开始插入,>> 当前行缩进一格,==自动缩进当前行)$ – 从光标位置到行尾^ – 从光标位置到行首,不包含缩进空白0 – 从光标位置到行首,包含缩进空白...需要定义全局书签可以使用Idea原本的 F11 + 数字 方式13 文本替换使用 :s/正则表达式/替换文本/ 可在本行内替换首次出现的匹配使用 :s/正则表达式/替换文本/g 本行内替换所有出现的匹配使用

1.4K30

Linux从入门到精通(九)——Linux编程

Linux编程 1. vi的工作方式 三种方式:命令方式插入方式、末行方式 命令方式:用户一进入vi就进入命令方式该模式中任何键入的字符都被看成vi的命令,键入后立即执行。...插入方式:当用户需要输入文本时,使用某个命令,进入插入方式,才可开始输入文本。 末行方式命令方式中键入:就进入末行方式末行方式中输入命令,例如W(写)和回车,就可将编辑的内容存入文件。...三种工作方式之间转换: 操作系统提示符下键入vi ,进入命令方式。 命令方式 --> 插入方式,键入编辑命令,插入命令i、 添加命令a、建立新行命令o等 。...f :将屏幕向文件尾方向翻滚一整屏 3.2 文本操作(命令方式下) 文本插入: i:插入当前字符前。...I:插入当前行头 a:插入当前字符后 A:插入当前行尾 o:插入当前行的下一行 O:插入当前行的上一行 文本的删除: x:删除光标处的字符 nx:删除光标位置起的右n个字符 X:删除光标前的字符 nX:

2K30

IDEA + Vim,竟可以这么牛逼!!

(题外话:Sublime Text 2也是用:行号来快速定位到某行,应该是沿用了Vim的习惯) 4.进入修改 进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。...I -光标移动到行首并进入插入模式 A -光标移动到行尾并进入插入模式 s -删除光标所在字符并进入插入模式 S -删除光标所在行并进入插入模式 c -删除光标所在位置周围某个范围的文本并进入插入模式...(例如dd删除一行,yy复制一行,cc删除一行文本并开始插入,>>当前行缩进一格,==自动缩进当前行) $ -从光标位置到行尾 ^ -从光标位置到行首,不包含缩进空白 0 -从光标位置到行首,包含缩进空白...过程中可按o键令光标选区两端切换。 块选择模式中选中多行,然后按I或A后输入文本,再退出插入模式,所输入的文本将自动加入到每一行的开头或结尾。...需要定义全局书签可以使用Idea原本的F11 +数字方式 13文本替换 使用:s/正则表达式/替换文本/可在本行内替换首次出现的匹配 使用:s/正则表达式/替换文本/g本行内替换所有出现的匹配 使用:

2.5K10
领券