我开发 wangEditor-mobile 的故事
1. 写在前面
其实,我一开始并没有想做什么手机端操作的富文本编辑器。
wangEditor 是我2014年11月份开始做的一个富文本编辑器,代码托管在github,开源、分享以及和大家交流问题。随着我这一年的时间的维护、升级、分享一些技术博客,也慢慢为wangEditor积攒了一小撮用户。

其中,就有一个用户提出:『做一个手机端的吧,现在他们的项目需要手机端的编辑器』。其实当时提出这种需求的人并不多,而且大部分人都觉得手机端编辑富文本内容,太费劲了,没有人会这么做。
我得到这个提醒之后,谁的意见我也没听,我就是自己静静的思考了一些时间,觉得很有必要做!主要原因有:
- 移动端已经是趋势了,各个产品的流量都在往移动端转。所有的事儿,大家都在寻求如何能用手机轻松解决。
- 如果像有些人说的没有人会在移动端编辑富文本内容,那么office、印象笔记、有道云笔记干嘛要出app呢?
- 现在网络上适用于手机端的富文本编辑器,(不管好用不好用)暂时还没有,这是机会。
决定的事情就要做下去,是浑水我也趟一回!
2. 烧脑的设计过程
接下来要考虑如何做,最烧脑的就是菜单栏如何设计。
方案一,像PC端一样,菜单栏放在内容区域的上方、或者下方,如下图:

这种要是放在手机上,屏幕一滚动菜单栏找不着了,怎么用?肯定是要放弃的。现在还有wangEditor用户拿PC版的用的在手机上,但是你可能做项目这样弄弄可以,但是我做的是产品,没用户体验的事儿,我绝对不干。
在此允许我吐槽一下那些生成支持移动端的富文本编辑器产品,例如xxx。你拿PC端的编辑器放在手机上,用起来费吃奶的劲儿,也叫『支持』?用户体验何在?
方案二,膜拜iOS,菜单栏紧贴着虚拟键盘。如下图:

其实网易云笔记也是用的这种方式。我当时非常喜欢,也非常认定这种方式,这种方式的用户体验是最好的,没有之一!但是很遗憾,他们都是原生开发的app或者有原生app的支持,而我只做网页端的,只有 javascript 和 css ,根本做不到这种效果。
在经过一段时间苦寻结果但是最终无果的时候,我就像泄了气的皮球一样……
那段时间我一直在寻找另一个合适的答案,却一直没有找到。有时候逼着自己想出一些奇形怪状的方式,然后自己1分钟之后就又放弃了。
……
其实,最好用的东西,往往也是最简洁的。这里的『好用』『简洁』都有一个共同特点——零学习成本!
方案三,模拟浏览器菜单的方式。如下图:

我现在也忘了自己是如何想出来这一种方案。和上面强逼着自己想出来的不一样,这个方案真的是不经意就想出来的。有些人可能会纳闷:真笨,这么简单的东西,还用那么久才能想出来?——我想说:事后诸葛亮没有发言权。无论它有多简单,目前也没有人这么做。
然后,我采纳了这个方案,花了一些时间开发、写文档、优化、做兼容,最后终于是出来了。因为我觉得这就是除了方案2之外的最好的方案了——用户体验最好!

待你浏览完demo之后,请继续看看下面的一点内容。
产品观
wangEditor-mobile 这款产品也代表了我对目前移动互联网『快餐文化』的一种理解。它虽然是『富文本』编辑器,但是功能非常少,操作非常简洁。
如果用户想写一份格式规整的合同或者投标书,他肯定不是用手机或者pad写的。我曾经干过这样的工作,用office word写完了,还得修复若干版本才能发布。那么用户用手机写的东西,肯定是比较生活化、随性的东西,例如记录一下心情、备注等等。而这些,wangEditor-mobile的这些功能完全可以满足你。
抓住用户的核心需求。凡事都符合 2/8 原则,我要做好 20% 的功能来满足 80% 的用户,剩下的 20% 的用户我不考虑。
最后
目前这款产品已经有人开始关注并尝试使用,但是毕竟移动端的需求量目前并不大,或者说我的推广能力限制了只有那么多人能看到它。
另外,移动端web比较出名的是Android系统中各个浏览器的兼容性,我现在也对此比较棘手,不会正在逐步的完善解决。
感兴趣就加入我们的QQ群:164999061 wangEditor-mobile
-------------------------------------------------------------------------------------------------------------
欢迎关注我的教程:
《使用grunt搭建全自动web前端开发环境》《从设计到模式》《json2.js源码解读视频》
《深入理解javascript原型和闭包系列》《css知多少》《微软petshop4.0源码解读视频》
------------------------------------------------------------------------------------------------------------
wangEditor-mobile,适用于手机的富文本编辑器
-------------------------------------------------------------------------------------------------------------
我开发 wangEditor-mobile 的故事的更多相关文章
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- 【我的产品观】开发wangEditor一年总结
1. 引言 标题说是一周年,其实是不是正好是一周年,我也忘记了,光从github的提交记录看也不准确.印象中觉得,如果要论想法,到现在一年多了,如果要论实际写代码,可能差不多正好一年. 从8月底在济南 ...
- IOS开发-jqeurey mobile
有一阵子没写东西了,最近打算重新拾起开发,做点手机上的东东,选中了phonegap.jquery mobile,phonegap的部署网上非常多,有空了再班门弄斧,这里先记下jquery mobile ...
- python 全栈开发,Day126(创业故事,软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON)
作业讲解 下载代码: HBuilder APP和flask后端登录 链接:https://pan.baidu.com/s/1eBwd1sVXTNLdHwKRM2-ytg 密码:4pcw 如何打开APP ...
- 3.PO如何给开发团队讲好故事
敏捷开发系列文章目录 讲出符合开发团队味口的故事. 上一章说了敏捷开发团队的构成与迭代过程,本章重点说一下迭代第一天的计划会议.熟话说“好的开始就成功了一半”,一个迭代的计划会议做得好不好确实直接注定 ...
- 产品经理-需求分析-用户故事-敏捷开发 详解 一张图帮你了解Scrum敏捷流程
产品经理-需求分析-用户故事-敏捷开发 详解 用户故事是从用户的角度来描述用户渴望得到的功能.一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能.2. 活动:需要完成什么样的功能.3. 商业价 ...
- 行为驱动开发iOS <收藏>
前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github ...
- 一起学习KenDo Mobile之一 建立一个简单的移动APP
开发KenDo Mobile的开发工具只要求支持文本编辑即可,当然我自己用VS2013,大材小用. 移动应用程序开发不同于桌面应用程序开发,前者需要在移动设备上部署,后者使用台式电脑测试和调试应用程序 ...
随机推荐
- C++学习之重载、覆盖与隐藏
MaiziTest12.cpp : 定义控制台应用程序的入口点. 1.重载特征 1)相同的范围(在同一个类中): 2)函数名相同: 3)参数不同: 4)virtual关键字可有可无. 2.覆盖 指的是 ...
- 用命令行编译java并生成可执行的jar包
用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...
- 《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...
- RMAN备份注意事项
1.建议最好打开控制文件的自动备份. 2.如果没有打开控制文件的自动备份,一定注意备份的顺序,无论之前有无备份控制文件,备份全库以及归档之后,在最后一定要再次备份控制文件. 3.使用%U,或者%d%T ...
- Nutch源码阅读进程4---parseSegment
前面依次看了nutch的准备工作inject和generate部分,抓取的fetch部分的代码,趁热打铁,我们下面来一睹parse即页面解析部分的代码,这块代码主要是集中在ParseSegment类里 ...
- 使用国内镜像加速下载Android SDK
本文转自:http://blog.kuoruan.com/24.html.感谢原作者. 什么是Android SDK SDK:(software development kit)软件开发工具包.被软件 ...
- Google C++ 风格指南 命名约定 转
命名约定 最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 ... ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这 ...
- 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namesp ...
- Python语言特性之3:@staticmethod和@classmethod
问题:Python中@staticmethod和@classmethod两种装饰器装饰的函数有什么不同? 原地址:http://stackoverflow.com/questions/136097/w ...
- [Offer收割]编程练习赛3 - 题目3 : 智力竞赛
智力竞赛 Problem's Link ---------------------------------------------------------------------------- Mea ...