我为什么要花大力气从头研发智表ZCELL(一个仿EXCEL的前端插件)
为什么呢,一个前端用的,类似EXCEL的操作的JS 插件,从头研发真的有必要吗?可能你会觉得没有必要吧,其实我自己也问过自己好多遍。因为业界有更加强大的spreadjs,也有比较轻型的JEXCEL,自己再弄一个,不是重复造轮子妈?这不是我们这行天天在讲的,要一定避免的事吗?可最终我还是觉得还是有必要的。
其实有这个想法也很久了,主要自己工作中需要用到这块。目前的企业用户,在电脑端的操作,或多或少都离不开EXCEL的操作,他们在做一些信息化的项目时,经常会希望保留一些在EXCEL里的操作习惯。我们经常给用户的答复是,不行,做不到。其实回头想一想,用户追求更熟悉、更方便的用户体验,希望能像EXCEL一样,复制粘贴,设置公式,用键盘快捷操作,他们有错吗?为什么我们不能满足他们呢?是因为代价大、开发成本高吗?还是我们就不想做这个事,亦或是觉得没有必要做。虽然用户也能接受别的方案,但我不禁要问一下勉强接受你的用户,他们爽吗?
我觉得他们肯定不爽,换成你,你也会不爽的。于是我在网上到处找成熟的方案,期间遇到了spreadjs ,jexcel, handsontable 等前端的插件,都做的不错,也曾试图将他们引入到项目中,但最后还是放弃了,这里我说一下自己的观点,一家之言,仅供参考,大家勿喷。
|
产品 |
优势 |
劣势 |
|
Spreadjs |
1、这方面的老大,功能强大 2、国内也有专门的队伍运营 3、文档样例齐全 |
1、功能有些重,有时只要1个很小的功能 2、价格有点贵… |
|
jexcel |
1、 好像是免费的 2、 比较适合列表式操作 |
1、 不收费,好像缺少专人维护 2、 功能少,能满足需求少。 |
|
handsontable |
1、 分免费版和收费版 2、 免费版具备基础功能 3、 比较适合列表式操作。 |
1、 国内缺少专门队伍运营 2、 想要的功能,都在收费版里,且价格不算便宜。 3、缺少中文版的文档资料,入门难。 |
正是基于自己的使用需求和自己选型的痛苦经历,纠结了一段时间,终于下定决心,研发智表ZCELL,做一款让大家都用的起且让最终用户觉得爽的插件。
时间回到2018年元旦左右,开始做基本的技术规划和选型,鉴于刚刚起步,选择了当下流行的jquery做基础,用了两个月的时间,出了V1.0,当然,第一版功能相当简陋,只有最基础的选定单元格和选定单元格计算、复制粘贴功能,甚至都算不上一个插件。
发版后,收到了部分网友的反馈,于是继续完善,根据实际需要增加了合并单元格等基本功能,发布了V1.1版本。根据网友要求,继续增加快捷键操作、设置计算公式、设置单元格类型、双击编辑等核心功能逐步完成,发布了V1.3版本。时至今日,ZCELL后续又发布了V1.3.1版,V1.3.2版,功能正在不断的完善,目前已经具备投产的必要功能,不敢说和以上3款产品相比,但基本的功能已经具备了,产品更新基本保持1个月左右1个版本,小版本可能更短。
产品的收费,是为了支撑产品的不断研发,也是为了验证产品的价值,没有人愿意付费的产品,我认为是没有价值的。ZCELL根据不同版本功能,设置不同的价格,目前功能版本只需要几百元,对我们来说可能只是一次餐费,却能带给用户不一样的体验,如果你有兴趣,欢迎尝试(可以自行百度)。
我希望大家能够得到大家的支持,才能让智表走的更远,让用户用的更爽。
我为什么要花大力气从头研发智表ZCELL(一个仿EXCEL的前端插件)的更多相关文章
- 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩: 第五 ...
- 知道创宇研发技能表v3.1
by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关于知道创宇 知行合一 | 守正出奇 知道创宇是一家黑客 ...
- 知道创宇研发技能表v3.0
知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关 ...
- 知道创宇研发技能表v2.2
知道创宇研发技能表v2.2 2014/3/9 发布 by @知道创宇(www.knownsec.com) @余弦 & 行之 知道创宇是国内Geek十足且普遍被认为特别有前途的互联网安全公司, ...
- 【转】知道创宇研发技能表v2.1
转自:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.1.html# 知道创宇研发技能表v2.1 创建时间:2012/12/1 2013/4/26 ...
- 知道创宇研发技能表v2.1
创建时间:2012/12/1 2013/4/26 公开发布 2013/7/15 新增:牛人1,2,3 2013/7/20 优化:成长,增加:小事心态.任务拆分.方法论 2013/8/12 更新:Web ...
- 推荐一款超强大的基于Angularjs的自动完成(Autocomplete)标签及标签组插件–ngTagsInput
前言 今天利用中午午休时间,给大家分享推荐一款基于Angularjs的自动完成(Autocomplete)标签及标签组插件--ngTagsInput,功能超强大的.不信,你试试就知道^_^... Au ...
- SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表) swap_join_inputs是针对哈希连接的hint,它的含义 ...
- Expo大作战(四)--快速用expo构建一个app,expo中的关键术语
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
随机推荐
- Linux 用户及权限详解
Linux 用户及权限详解 用户 , 组 ,权限 安全上下文(secure context): 权限: r,w,x 文件: r : 可读,可以使用类似cat 等命令查看文件内容. w : 可写,可以编 ...
- python3 变量理解 解释器理解 常量理解 用户交互理解 逻辑运算
先来条NLP再说...... 九,每人都已经具备使自己快乐的资源 每一个人都有过成功快乐的体验,也即是说有使自己快乐的能力. 人类只用了大脑能力极少部分,提升大脑的运用,很多新的突破便会出现. 运用大 ...
- ==运算符和equals()方法的区别
Java语言程序中判断两个变量是否相等有两种方式:一是运用==运算符,二是运用equals方法. 1. ==运算符 对于==运算符来说,如果两个变量是基本类型的,并且是数值类型,则只要它们的值相等,就 ...
- python基础-函数(9)
一.函数的介绍 如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数 函数的语法格式: def 函数名(): 函数的功能代码 ...
- .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
- springboot~application.properties和application.yml的使用
在springboot框架里进行项目开始时,我们在resource文件夹里可以存放配置文件,而格式可以有两种,properties和yml,前者是扁平的k/v格式,而后者是yml的树型结构,我们建议使 ...
- 精读《V8 引擎 Lazy Parsing》
1. 引言 本周精读的文章是 V8 引擎 Lazy Parsing,看看 V8 引擎为了优化性能,做了怎样的尝试吧! 这篇文章介绍的优化技术叫 preparser,是通过跳过不必要函数编译的方式优化性 ...
- Asp.Net Core微服务初体验
ASP.Net Core的基本配置 .在VS中调试的时候有很多修改Web应用运行端口的方法.但是在开发.调试微服务应用的时候可能需要同时在不同端口上开启多个服务器的实例,因此下面主要看看如何通过命令行 ...
- PyCharm出现TabError: inconsistent use of tabs and spaces in indentation最简单实用的解决办法
本文使用PyCharm的格式化代码功能解决TabError: inconsistent use of tabs and spaces in indentation. 当把代码从别处复制进来PyChar ...
- Writing a Simple Publisher and Subscriber
用c++实现一个publisher/subscriber publisher #include "ros/ros.h" #include "std_msgs/String ...