为什么呢,一个前端用的,类似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的前端插件)的更多相关文章

  1. 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩: 第五 ...

  2. 知道创宇研发技能表v3.1

    by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关于知道创宇 知行合一 | 守正出奇 知道创宇是一家黑客 ...

  3. 知道创宇研发技能表v3.0

    知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关 ...

  4. 知道创宇研发技能表v2.2

    知道创宇研发技能表v2.2 2014/3/9 发布 by @知道创宇(www.knownsec.com) @余弦 & 行之 知道创宇是国内Geek十足且普遍被认为特别有前途的互联网安全公司, ...

  5. 【转】知道创宇研发技能表v2.1

    转自:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.1.html# 知道创宇研发技能表v2.1 创建时间:2012/12/1 2013/4/26 ...

  6. 知道创宇研发技能表v2.1

    创建时间:2012/12/1 2013/4/26 公开发布 2013/7/15 新增:牛人1,2,3 2013/7/20 优化:成长,增加:小事心态.任务拆分.方法论 2013/8/12 更新:Web ...

  7. 推荐一款超强大的基于Angularjs的自动完成(Autocomplete)标签及标签组插件–ngTagsInput

    前言 今天利用中午午休时间,给大家分享推荐一款基于Angularjs的自动完成(Autocomplete)标签及标签组插件--ngTagsInput,功能超强大的.不信,你试试就知道^_^... Au ...

  8. SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)

    SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表) swap_join_inputs是针对哈希连接的hint,它的含义 ...

  9. Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. window下的nginx的安装和使用

    nginx功能之一可以启动一个本地服务器,通过配置server_name和root目录等来访问目标文件 一. 下载 http://nginx.org/en/download.html 下载后安装在你钟 ...

  2. #Java学习之路——基础阶段(第十一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  3. Harbor---docker镜像仓库搭建

    在用docker,kubernetes时registry是重要的一环,下面就来搭建一个镜像仓库.之前在公司时有资源域名,有做ssl证书,今天没条件就不做ssl证书和域名了. 1,下载 harbor 安 ...

  4. C# 《编写高质量代码改善建议》整理&笔记 --(三)泛型&委托&事件

    1.泛型 基于泛型,我们可以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型, 确保类型安全. 1)总是优先考虑泛型 优点:可重用性,类型安全,高效率. 2)避免在泛型 ...

  5. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生. 串口调试助手是嵌入式开发里非常常用的小工具,市面上有非常多流行的串口调试工具,比如TeraTe ...

  6. SLAM+语音机器人DIY系列:(四)差分底盘设计——4.底盘ROS驱动开发

    摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...

  7. c#上位机与三菱PLC(FX3U)串口通讯

    项目中会经常用到上位机与PLC之间的串口通信,本文介绍一下C#如何编写上位机代码 与三菱FX3U进行通讯 1. 第一种方法是自己写代码实现,主要代码如下: //对PLC的Y7进行置1 byte[] Y ...

  8. 【转载】Win10系统如何设置所有程序默认以管理员身份运行?

    在win10系统中有些用户发现一些程序只有使用管理员身份运行能才打开,这样的话就感觉会麻烦很多,那么有没有办法设置所有程序都默认以管理员身份运行,而无需我们一个一个右键点击再打开呢? 目前最好的方法就 ...

  9. c# 正则表达式替换字符串中常见的特殊字符

    第一种,若字符串中含有字母,则使用以下方法 public static string RemoveSpecialCharacterToupper(string hexData) { //下文中的‘\\ ...

  10. c# 图片加水印

    /// <summary> /// 图片水印 /// </summary> /// <param name="imgPath">服务器图片相对路 ...