装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

经历过这种情况吗:研究了很多框架,还是决定自己造轮子

  • 2020-05-06
  • 本文字数:1505 字

    阅读完需:约 5 分钟

经历过这种情况吗:研究了很多框架,还是决定自己造轮子

我这段时间给我的课程开发工具,想要做一个基于 Web 的组织结构图生成工具,生成类似下面这样的结构图。



你知道的,我熟练的开发语言是 C++,比较擅长的是 C++后端和客户端开发,对 HTML 和 JavaScript 都不熟悉。所以我第一反应就是找一些开源的库,组合一下看能不能实现。


我先找到了 jsMind,发现它很强大,做出来的思维导图也很漂亮,类似下面这样:



可是我去翻看它在 GitHub 上的项目代码和文档,却发现它只支持 left、right 这种样式的导图,不支持 bottom、top 这种方向的图。


我试着使用 transform 旋转了一个 div,结果画出来的图简直了,一坨一坨的。


一边赞叹着这个开源库的强大,一边放弃了它,找到了 Qunee for HTML5。



哇,这个解决方案非常友好,文档还有中文的,示例也很全,看例子,就能满足我的需求。可是我一看,嘿嘿,一年的授权费用几万块,我的小工具,用不起。


于是只好继续寻找开源库,嘿嘿,居然找到一个看起来也可以实现我需求的库,my-mind,做出的东西,类似这样。



嗯,效果不错,测试页面上有支持 bottom、up 的选项,明显可以实现我的需求。


可是我翻了翻 GitHub 上的源码,啊哈,居然没有找到文档……API 说明也没……后来研究了一阵子,发现,这个更多是个工具……虽然代码开源,但比较难整合到自己的项目中……


于是继续找,嘿嘿,皇天不负有心人,我找到了 jTopo,个人开发的,能做出来的东西,也蛮好。



而且每个示例都有源码……虽然,jTopo 没什么文档……也还可以看。关键是,只有一个 js 文件,打包后 77kb,引入项目非常方便,正合我意。


于是我就下载了最新版本,用 Node.js 搭建了一个环境,开始写代码调试。


参考人家的例子,搞定了圆角矩形、文字、各种风格的连线,做出了点样子。



可是我想把第三个层级做成本文开头那个样子,就需要自定义节点,自定义节点时,我发现,要画图,而我画的竖线,怎么调整,都和第二个层级的节点,连接不到一起去!


你说这是闹哪般!


我决定再找找其他框架,发现了一个超级强大的,叫 InfoVis,哇,树图还可以有很赞的动画效果。



可是……看起来这个东西好庞大,想用到项目里好麻烦……我看了会示例和源码,20 分钟过去,还没看明白……


于是我又找别的,找到了这个:



唉,一堆依赖啊,头疼……


后来我想,我要做出的效果,就是幕布提供的那种图呀,于是我就用 Chrome 的开发者模式,研究幕布的页面源码,发现它的思维导图,居然就是用 div+Canvas 动态生成的 html 元素组合出来的……我想参考这个,而且明显是可行的……可分析了一下页面里的代码,感觉个把小时也搞不定它的绘图逻辑……


我的心好乱,这一通研究,一天就要过去鸟~


后来我一狠心,心想我就是这么两三天的任务周期,不能这么找来找去浪费时间,干脆自己造轮子吧,用 HTML5 的 Canvas 自己画,后台用 Node.js 来做个简单的服务,两边一对接,完事儿。


你别说,这么整,还真是蛮快的,一天功夫,前后端跑通了,可以根据用户录入的数据,动态生成 bottom 样式的图了。



目前还有几个小缺陷,1)没法保存图片;2)移动端没适配。但我想,再花一两天时间,就可以搞定了,下周就能给训练营用上。


经过这两天的折腾,我理解了为什么我们程序员爱造轮子。对我们的小需求而言:


商业的太贵;


开源的又没那么方便,要么没文档,要么整合起来复杂,要么需要改造才能用,要么过于巨大;


时间紧任务急,没那么多时间研究。


而自己造,只针对当下需求就好,简单粗暴速度快好交活儿。


最后,还想求助下,请你留言,帮忙推荐个支持 Node.js 的集成开发环境,要求:


  • 免费软件或开源软件

  • 前后端都支持


我现在用的工具,太原始了——Notepad++,都不好意思说。


本文转载自程序视界公众号。


原文链接:https://mp.weixin.qq.com/s/8qLiVw4USe8_3WeQh6BY1A


2020-05-06 08:00324

评论

发布
暂无评论
发现更多内容

Java开发工作4年还是只会“增删改查”,java技术栈太广

Java 程序员 后端

Java实现经典算法,阿里java技术专家面试

Java 程序员 后端

Java岗大厂面试百日冲刺【Day42】,java基础面试宝典

Java 程序员 后端

Java市场饱和了吗?现在转行学习Java会不会太晚了?

Java 程序员 后端

Java并发之Condition详解,springframework教程

Java 程序员 后端

Java异常架构与异常关键字,海康威视java开发面经

Java 程序员 后端

架构实战营模块二学习总结

吴霏

「架构实战营」

java实现简单二叉树,深入分布式缓存从原理到实践技术分享

Java 程序员 后端

自由职业者靠什么赚钱?

石云升

职场经验 10月月更

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16

Java 程序员 后端

Java岗开发者福利!Github热度飙升的多线程学习手册,已获31k+star

Java 程序员 后端

Java常量池理解与总结,java线程池回收原理

Java 程序员 后端

Java学习路线和方法推荐,拿下我人生中第7个Offer

Java 程序员 后端

Java实现图的存储和创建,linux编程基础课后答案第二章

Java 程序员 后端

linux去掉空行的几种方法

入门小站

Linux

java并发之Condition图解与原理剖析,推荐

Java 程序员 后端

Java并发关键字-final,java实战视频

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26

Java 程序员 后端

Java学习笔记——正则表达式,平安金服java面试题

Java 程序员 后端

033云原生之云服务测评指标体系

穿过生命散发芬芳

云原生 10月月更

文本行随机打乱工具

入门小站

工具

架构实战模块二作业

吴霏

「架构实战营」

Java多线程 高频面试题,java架构师工作内容

Java 程序员 后端

Java开发必备 Git 分支开发:规范指南及完全学会Git的24堂课笔记

Java 程序员 后端

Java实现RPC(源码),java常见面试题

Java 程序员 后端

架构实战营毕业总结

VE

架构实战课

Java多态大乱炖,mysql基础教程视频

Java 程序员 后端

Java如何支持函数式编程?,大专生面试阿里P7居然过了

Java 程序员 后端

【架构设计模块九】:设计电商秒杀系统

Ryoma

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

Java 程序员 后端

经历过这种情况吗:研究了很多框架,还是决定自己造轮子_文化 & 方法_程序视界_InfoQ精选文章