说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

专访UEditor创始人战毅:打造最佳的用户编辑体验

HTML文档下载 WORD文档下载 PDF文档下载
UEditor是由百度Web前端研发部开发所见即所得富文本Web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于BSD协议,允许自由使用和修改代码。

UEditor是一套开源的在线HTML编辑器,是由百度Web前端研发部开发所见即所得富文本Web编辑器。其最早起源于为百科用户书写百科词条开发的在线编辑器。

UEditor在设计上采用了经典的分层架构设计理念,尽量做到功能层次之间的轻度耦合。具体来讲,整个系统分为了核心层、命令插件层和UI层这样三个低耦合的层次。其具有体积小巧、性能优良、使用简单、分层架构,方便定制与扩展等特点。


UEditor开发团队

我们采访了UEditor项目的创始人和核心开发者战毅,请他来详细介绍一下UEditor。

CSDN:UEditor项目是怎么诞生的?

战毅:最早是起源于百科,是为百科用户书写百科词条开发的在线编辑器。那时还没有UEditor,就是直接拿ck(CKEditor)作为底层,在上边开发了UI展示组件。但随着需求的变化,发现项目越来越不可控,因为ck过于复杂。2010年,代码已经有10万行了,做新的功能和修改bug都非常的困难,做编辑器项目的时间远远大于其他项目,而且因为用的是ck底层代码,他很多自身的bug我们无法修改,一旦有修改,可能会引起其他一系列的bug。

那时开会编辑组经常会被问到"bug收敛了吗",尽管我们已经非常努力了。因为这样编辑器被冠以最费力不讨好的项目。做走了很多人,基本上能坚持1年的算很长了。我印象最深的是做空间编辑器项目时,有个QA的MM,一做完编辑器项目就辞职了,原因是太累了。编辑器项目那时完全没有自动化用例,全靠手动测试,我要是修改一个底层代码,那QA要把所有的手动用例都过一遍,可以想象那是多么的痛苦。基于这些原因,UEditor诞生了,诞生它的想法很简单,就是我们要有一个我们自己完全可控的编辑器,可以满足pm的各种需求和修改各种bug。当时开源的目的就是想能从外部吸收更多的需求和bug,来更好的满足产品线,当时完全没想到,UEditor能做到今天这样,大家都在使用的局面。

CSDN:目前已有一些优秀的编辑器,比如FCKEditor,为什么还要开发一个?与FCKEditor相比,UEditor有哪些更贴近国人使用的特性?

战毅:主要是因为我们需要一个我们自己完全可控的编辑器。(例如,添加新功能和bug修改)。UEditor现在的功能比ck更加丰富,而且比他要小的多,整体的架构更加清晰。

UEditor的宗旨是打造“最佳的用户编辑体验”,我们在许多细节上完全是效仿Word的实现方式,比如对于多级列表、中文标示的列表、表格的操作、插入代码、粘贴过滤的支持、tab键的支持等等。

CSDN:在UEditor开发过程中最难的地方是什么?你们是如何解决这一问题的?

战毅:最难的地方是应该是对range的封装,这是编辑器实现的基础,所有功能实现的核心。要说解决,那就是自己实现一套,这样才能真正了解和掌握它。对于这块的实现,主要是参考了ck,因为到目前为止,对外的编辑器项目中只有ck和tinymce包括UEditor才是真正用JS实现range,而没有借助编辑器的原生接口。至于为什么不借助原生接口,大家可以看看5月份的程序员杂志,我写了篇《从UEditor谈Web编辑器技术》,详细介绍了这块。

CSDN:UEditor在百度内部的使用情况如何?使用UEditor的其他公司或项目有哪些?

百度内部基本上是全线覆盖了所有对于富文本这块有需求的产品线,现在还在为最后一个产品线百度贴吧,做定制编辑器,做完这个项目,就是100%覆盖了百度的所有产品线了。

在外部,像奇虎、腾讯、盛大、网易、联想等大公司,都在他们的很多项目里使用了UEditor,像51cto、中关村在线、音悦台等主流网站也在使用。还有像很多cms系统也都集成了UEditor。现在,UEditor是国内使用量最多的富文本编辑器项目。

CSDN:UEditor团队有哪些成员?你们之间是如何分工和协作的?

战毅:我们现在开发有3个,2个QA同学。上次发布1.2.6时,第一次发布了我们QA同学给我们发的bug列表,当时吓到了好多人,大家都觉得怎么这么多,其实这只是冰山一脚。大家要是看过我们git上的test目录,那里有好几千个自动化用例,这都是QA同学的心血。

一般我们开发一个版本后(包括新功能的测试用例),提交给QA,QA同学进行2-3轮的测试,在这过程中,我们也会对外发布一个线上的测试版本,让大家来帮我们一起测试,最后发布正式版本。

对于发版本的周期,基本上是没有的,就是产品线一闲下来,我们就把一些用户反馈的功能和问题,包括给产品线开发的功能,改造成通用的一起放到新版本里发布。

CSDN:对于此次“开源中国开源世界高峰论坛”和“开源群英会2013”,您有什么建议?

战毅:可以交流技术,但我现在看到的是大家在一起讨论,无论你的开源项目使用的是什么语言。是不是可以按着方向来分,比如前端、后端、native的分开项目,大家在一起讨论。

CSDN:您希望在大会上听到的分享话题是什么?您想与其他开发者讨论的话题是什么?

战毅:分享的话题,我最关心的是如何能把开源项目做的更大,如何建立社区,让更多的人贡献?

战毅将出席“第八届开源中国开源世界高峰论坛”和“开源群英会2013”。我们还邀请了100多位开源项目开发者和布道者,如果你想与他们面对面交流,就赶紧报名参会吧。

大会官网:http://ocow.csdn.net/

如果你是一名开发者,关注开源,并在开源领域有一定的贡献(开源项目开发者、布道者或推广者等),可免费申请价值499元的大会门票一张,我们会根据你对开源的贡献进行审核,并确定你的参会资格。名额有限,申请从速。

申请链接:http://surveies.csdn.net/survey/comein/591

Google数据中心PUE的秘密 一个传奇:有个人不断赢得世界算法冠军 音乐能力开放平台合作探索之旅 社交网络海外营销技巧及工具实战 大数据谬误 —— 为什么我们需要收集更多的数据 传苹果地图负责人Rich Williamson遭解雇? 一个月:Windows 8授权许可已破四千万 里程碑:iPhone与Android企业用户市场首次超过黑莓 VMware最快下周宣布分拆Cloud Foundry 国际原子能机构服务器遭窃 百多位专家信息泄密 用户可通过Google Drive直接向Gmail添加高达10GB的文件 韩寒携个人App进军移动互联网 亮相应用汇独家发布会 摆脱谷歌 亚马逊向开发者正式发布地图API 为什么应该用模块取代C/C++中的头文件? Mozilla布道师:HTML5在移动端没有未来? 那些年,历史上留下浓重一笔的黑客们 林敏博士:透过设计看三星手机帝国崛起 OpenFeint血泪史:我们是如何被苹果逼死的 或免费升级:微软2013年推Windows Blue系统 取经:《捕鱼达人2》每月捞金160万美元的秘密 AWS推数据仓库服务Redshift 价格仅是Teradata IBM Oracle的十分之一 美国开展数据中心整合计划 简化政府IT运营 阿里巴巴数据交换平台——集大成于一身 [体验]Windows 8 Metro/Modern Style IE 10 Growth Hacker正席卷全球,你了解它吗? Splashtop发布Ubuntu Linux版本Streamer 性能超过VNC 10倍 Windows 8引领智能操作 人机交互进入触控时代 豌豆荚发布新版应用搜索 推出“绿色标签”机制 权威解读:苹果的未来将走向何方? Google炮轰Facebook:你们的社交已经过时了! iOS设备硬件规格完整汇总 true dbgrid控件怎么使一个网格又下拉的列表弹出来 关于计数器的代码 那里有含有K线图的图表控件和像OFFICE的工具栏控件下载? 十万火急!如何在Dialog上显示Menu??(我只能给到27分了) 十万火急!如何在Dialog上显示Menu??(我只能给到27分了)十万火急! 问一下,笔记本上的软驱通用吗? maskedit的问题? delphi中报表的问题 关于常用的几种压缩编码? tomcat启动出错,请问什么原因? 一个小问题。回答就给分? 在JSP页面中,能否嵌入ActiveX控件 增加控件的成员变量对程序有什么影响?会使EXE变大吗? shr 是什么意思? 我想用delphi删除一文件夹下面的全部文件,我可以删除一条记录,但无法自动删除全部,数据,我该如何做??? 77分征收四个Delphi中buttons的bmp图标--顶张、下张、上张、末张! 有谁用C++Builder做过corba SQL Server编程求解!!!!! 请问如何测试C#代码的运行瓶颈以便进行优化 80端口是干什么用的 我快要疯了!有关最简单的mdb数据库连接也出问题 win2000 sever 的问题(高手请进) 请问什么地方有BCB的GIF插件下载?具体地址 谁帮助编写一个VCD(DAT)转MPEG格式的程序! 请问上面的V S.net (4cd)里边包括些什么东东?有Vc和msdn吗? oracle中可以保存多个blob字段吗??? 一个大大的问题。。。 在DOS批命令中,对于交互命令如何自动实现输入Y或N以及按任意键继续? 如何调用DivX的DLL进行MPEG4的编码! 有没有那位使用MSF? 什么是代理服务器? 请问哪里有载以下书籍? 如何将二进制的值写如注册表? 声明 怎样在窗体外画透明的画? 哪位朋友有JAVA2认证复习指南?到那里下载电子版...... 请问怎样将系统提示出错信息改成自己编写的中文提示 菜鸟问题》》》在D5中如何调整各个控件的层次关系,例如将panel中的button移动到form上。 如何设置richtextbox控件中文本的行间距? 请如何进行屏幕取词?最好有源码!! 提一个关于显示ACCESS2000库中的图片的问题,请知道的朋友回答一下 软考的成绩已出,辽宁地区的考生请按以下电话号码查分:) 谁能告诉我copyfile函数的用法啊?谢谢了。 提一个在窗体上显示ACCESS2000库中的图片的问题,请知道的朋友办忙回答一下 Delphi4.0中的Internet页中的Html控件在Delphi6.0中变成了哪一个控件,怎么找不到了? Java中的cast是什么意思呀 大家一定要帮帮我~~~~~~ 有什么错? 用组件或activex控件实现数据动态显示? __fastcall TForm1::TForm1(TComponent* Owner)这个方法有什么用,在做哪方面功能时才用它。 当今世上,到底·········· 煮炒花生是物理变化还是化学变化? 用棱长1cm的正方体拼成如下的图形,它的体积是多少立方厘米,它的表面积是多少平方厘米?要有列式,并说明为什么这么做 环境中影响生物的生活和分布的因素叫做XX 本地菊花种植有蛴螬虫害,现在菊花处于生长旺盛期,蛴螬残食根系.有什么好的方法可以杀死蛴螬?前期没有进行精耕杀虫、也没拌种预防虫害. 妈妈买了8千克白菜,比买的芹菜的2分之5多3千克,妈妈买来芹菜多少千克? 左图是由若干个棱长为1cm的正方体搭成的,搭成的这个图形的体积是()立方厘米,表面积是()平方厘米. 小虫子或者叫害虫要如何处理?我家有两颗樱桃树,生卵虫,不能打药,就会没收成,一到春暖花开,就会有很多虫,最叫我苦恼的就是这些虫·卵,怎么办呢? 花生油为什么要进行化学性消化 由棱长是5cm的正方体搭成左边的图形,共有多少个正方体?它的体积是多少立方厘米?它的表面积是多少平方厘米 把长为60cm的长方体横截成每段长为20cm的长方体,表面积总和增加了10平方厘米,原来长方体的体积为 妈妈买了8千克白菜,比买的芹菜多5分之3妈妈买的芹菜多少千克 由棱长3厘米的正方体搭成右边的图形,它共有多少个正方体?体积是多少立方厘米?表面积是多少平方厘米? 蛴螬读什么? 停车场有大客车400辆,大客车的辆数是小客车的3分之8,小汽车有多少辆? 谁能举出一些为了适应周围环境,为了生存下去而坚持改变自我的生物?我正在写一篇作文,是关于那个风滚草的,像找一些例子借鉴一下.也可以理解成“不断的进化”,比如一些水中生活的动 小学师生200人去郊游,共租客车8辆且正好坐满.大客车限乘30人,小客车限乘20人,问大客车跟小客车各坐多 生物的环境是指生物生存的地点 适应环境对生物的生存有什么意义? 春院小学200名师生去郊游,共租车8辆,正好坐满.大客车限乘30人,小客车限乘20人.大客车和小车各几辆 生物的生存都什么于一定的环境 自然环境中,各种因素影响着生物,生物在生存发展中不断适应环境,同时,也()和()着环境 停车场上有25辆小汽车,大客车的数量比小汽车少40%,大客车有多少辆 把一根方钢切割成3段表面积增加了36平方厘米已知钢材长4分米原来这根方钢的体积是多少立方厘米表面积是多 一根3米长的方钢,把它横它截成3段时.表面积增加80平方厘米,原来方钢的体积[ ] 停车场有大客车45辆,比小轿车的3/5少6辆.小轿车有多少辆 用一块体积是2000立方厘米的钢块,锻造成一根横截面面积是20平方厘米的长方体方钢.这根长方体方钢的长是多少厘米? 一个适合某种生物生存的环境包括哪些因素?其中也包括天敌吗?那天敌应该多少才合适? 一个长方体,宽增加5厘米后就变成了正方体,表面积增加了160平方厘米.原来这个长方体的体积是多少快我急用 用4个棱长1CM的小正方体拼成一个长方体 表面积 体积 一根3米长的方钢,把它横截成3段时,表面积增加80平方厘米,原来方钢的体积是多少?清晰的步骤,为啥这样做 把一个正方体方钢段造成一个长方体,它的表面积和体积都没有变化.( ) 用3个棱长是1cm的正方体拼成1个长方体,这个长方体的体积是?表面积是? 一根3米长的方钢,把它横截成两段,表面积增加了 80平方米,求原来方钢的体积? 一块长方体方钢,如果高减少2厘米后就成为一个正方体,表面也就减少48平方厘米.这块长方体方钢的体积是多少? 我要的是答案 谢谢 假如你是大自然生物你会怎么在大自然生活 一根3米长的方钢,把它横截成3段是,表面积增加80平方厘米,原来方钢的体积是( ) 一个长方体方钢,截成三段刚好是三个正方体,那么,现在的表面积是原来的百分之几? 生物生存的环境包括(?),例如()、()、()、()、()、()),例如()、()? 一根3米长的方钢,把它横截成3段时,表面积增加80平方厘米,原来方钢的体积是多少? 有48辆汽车,小汽车有36辆,大客车有12辆.小客车和大客车放别占总数的百分之几? 一根长2m的长方体方钢,底面是正方形,把这根钢材沿着横截面锯成两段,表面积增加1.6cm2,求原来钢材的体积. 某高速公路收费站对于过往车辆收费标准是:大客车30元,小客车15元,小轿车10元.某日通过该收费站的大客车和小客车数量之比是5:6,小客车与小轿车之比是数量之比是1:3,收取小轿车的通行费 有一个长方体,如果高增加5厘米就变成正方体,表面积就增加160平方厘米,这个长方体的体积是多少立方厘米? 一根长2米的长方体方钢,底面是正方形,把这根钢材沿着横截面锯成两段后,表面积增加1.6平方厘米,求原来钢材的体积. 某高速公路收费站对过往车辆收费标准是 : 大客车20元,中巴士15元,小轿车10元.某日通过这个收费站的大客车和中巴士的数量比为5:12,中巴士与小轿车数量比是4:11.收取小轿车的通信费比大客 一个长方体,高增加5厘米后变成了正方体,表面积增加了160平方厘米,这个长方体的体积是多少立方厘米? 某高速公路收费站对于过往的车辆收费的标准是:大客车10元,小客车6元小轿车3元.某日通过该收费站的大客车和小客车数量之比是5:6,小客车与小轿车数量之比是4:7,共收取过路费940元,请分别 某高速公路收费站,对过往的车辆收费的标准是:大客车15元,小客车10元,小轿车5元,某日通过该站的大客和小客数量的比为5:4,小客与小轿车的比是2:3,当日共收取过路费2900元,求这一天三种车各 白菜和西红柿可以一起吃吗?如果可以的话,怎么做呢/还需要什么配料?菜名是? 一段方钢长30厘米,沿横截面锯成两段后,表面积比原来增加了50平方厘米,那么这段方钢的体积是多少立方厘米? 环境中影响生物生活的各种因素分为什么和什么 一根长2m的方钢,沿截面成两段后,表面积增加了0.6平方分米,求原长方体方钢的体积 1.某高速公路收费站对于过往车辆收费标准是:大客车10元,小客车6元,小轿车3元.某天通过该收费站的大客车和小客车的数量之比是5:6,小客车与小轿车之比是4:7,共收取这三种车辆过路费470 .环境中直接影响生物生活的因素叫 什么?,它可以分为两类 什么和什么?、 . 把一段1.2米长的方钢截成两段,表面积增加了80平方分米,这段方钢的体积是( )立方米. 一段方钢长1.5米,横截面是长方形,把它锯成相等两段后表面积比原来增加18平方厘米,这段方钢的体积( ) 环境中影响生物生活的各种因素叫_____,它又可分为非生物因素和_____.前者主要包括____、____、____、______和______等;后者主要指__________________. 停车场有8辆大客车,大客车的辆数比小汽车少1/7,小汽车有多少辆? 某高速公路收费站对于过往车辆的收费标准是:大客车30元,小客车15元,小轿车10元.某日某日通过该收费站的大客车和小客车数量比是5:6,小客车与小轿车数量比是4:11,收取小轿车通行费比大客 环境中有哪些因素影响生物的生活和分布
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn