脱离 CRUD,我希望有一个开发助理 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
myidea
V2EX    推广

脱离 CRUD,我希望有一个开发助理

  •  5
     
  •   myidea 2018-11-12 23:10:43 +08:00 6426 次点击
    这是一个创建于 2523 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写程序多,面对工作中重复的 CRUD,我一直希望能有一个代码生成工具(开发助理),可以帮我:

    自动生成 CRUD 类的 PC 端 web 完整功能代码 自动生成 CRUD 类的 rest 接口代码(和文档) 自动生成 CRUD 类的移动端 web 代码 自动生成 Excel 导入导出类的完整功能代码 自动生成简单统计图表类的完整功能代码 方便的维护数据库表结构及关联关系 当数据表及关联变化时自动帮我同步修改对应代码 

    我还希望:

    她生成的代码是高质量的,基于主流技术框架的,UI 是美观的 她在生成功能代码前最好可以让我实时预览生成效果 她是灵活的插件,按需启用,不侵入我的代码 

    没有一个轮子是我们想要的,所以我们造了她: Diboot Devtools 开发助理 ( https://www.diboot.com) 。 有了她,你可以脱离重复的工作,专注于业务,提高开发质量和效率。

    历经两年的匠心打磨终于实现了初期的规划目标,今起正式上线试运行,您如何看待这样一个工具,欢迎各位 V 友留下您的宝贵建议,更欢迎有人愿意做我们的种子用户。

    37 条回复    2018-11-13 16:20:26 +08:00
    AllOfMe
        1
    AllOfMe  
       2018-11-12 23:14:53 +08:00   1
    只能和 MySQL 捆绑吗?是否有支持 PostgreSQL、Oracle 这一类的数据库呢?
    myidea
        2
    myidea  
    OP
       2018-11-12 23:16:43 +08:00
    @AllOfMe 目前版本仅支持 MySQL,其他数据库后续会支持。
    jin7
        3
    jin7  
       2018-11-13 00:14:23 +08:00   1
    不错
    jadec0der
        4
    jadec0der  
       2018-11-13 00:30:28 +08:00
    有意思,外包公司?好像很多外包公司都会自己做代码生成平台,通过配置生成系统
    masker
        5
    masker  
       2018-11-13 00:32:02 +08:00 via Android
    好像 yii 框架的脚手架 gii。
    acoin
        6
    acoin  
       2018-11-13 01:19:06 +08:00 via Android   1
    这么大岁数了,怎么还是 crud工作上有运用过 ddd,cqrs 么
    WildCat
        7
    WildCat  
       2018-11-13 05:31:27 +08:00 via iPhone
    Rails
    Cbdy
        8
    Cbdy  
       2018-11-13 06:51:29 +08:00 via Android   1
    代码生成是不合时宜的,比较合理的做法是:元编程,设计 DSL

    当选择代码生成的时候,说明这些代码是重复性的信息量很小的代码,甚至不应该进入版本管理仓库
    RYAN0UP
        9
    RYAN0UP  
       2018-11-13 07:59:48 +08:00 via Android   1
    不得不说,很赞
    zjsxwc
        10
    zjsxwc  
       2018-11-13 08:35:21 +08:00   2
    不太看好。。

    - 大部分 web 框架都能生成 crud

    - 也有不少专门干 crud 的框架,比如 sonata admin 抽象出了不少用于自动 crud 的概念

    - 每个公司都有自己的架构想引入楼主的框架比较难吧
    masker
        11
    masker  
       2018-11-13 08:39:21 +08:00 via Android
    @zjsxwc 赞同。
    passerbytiny
        12
    passerbytiny  
       2018-11-13 08:47:46 +08:00   1
    本来还想说“你长得真美”,然后看到了推广。

    @Livid 有人发错节点了,应该分享创造或者推广节点的
    wbrobot
        13
    wbrobot  
       2018-11-13 08:47:54 +08:00
    你能开发个 php 版的我就用!
    zongren
        14
    zongren  
       2018-11-13 08:50:58 +08:00
    @acoin 你说的跟 crud 冲突了吗?
    sagaxu
        15
    sagaxu  
       2018-11-13 08:55:35 +08:00 via Android
    没有 crud 需求
    ldbmcs
        16
    ldbmcs  
       2018-11-13 08:56:03 +08:00   1
    点击生成初始项目,填写了参数之后,点击提交,居然没得任何响应
    chocotan
        17
    chocotan  
       2018-11-13 09:10:35 +08:00   1
    支持,正缺这东西
    myidea
        18
    myidea  
    OP
       2018-11-13 09:24:45 +08:00
    @masker 是有参照 gii,php 开发挺好的代码生成框架,目前的自动化程度比 gii 要高不少了
    myidea
        19
    myidea  
    OP
       2018-11-13 09:25:59 +08:00   1
    @acoin cqrs 适合分布式的场景,我们目前版本只是单体应用的解决方案,分布式是下一步的规划
    airyland
        20
    airyland  
       2018-11-13 09:26:07 +08:00
    内部做了个 node 的,数据库主要用 postgres,服务端框架用 eggjs。
    myidea
        21
    myidea  
    OP
       2018-11-13 09:27:30 +08:00
    @zjsxwc 已有项目是不建议使用的,引入两个框架反而增加了复杂度,新的项目可以尝试一下
    myidea
        22
    myidea  
    OP
       2018-11-13 09:28:13 +08:00
    @wbrobot php 有 yii
    myidea
        23
    myidea  
    OP
       2018-11-13 09:36:20 +08:00
    @ldbmcs 感谢反馈,已修复
    TommyLemon
        24
    TommyLemon  
       2018-11-13 09:55:18 +08:00   2
    @Cbdy
    @zjsxwc
    对的,生成静态代码,那就会有很多不符合业务需求的代码要做二次开发了,而且也基本只能在新需求用。
    已经开发过的需求,如果再用新生成的代码覆盖肯定不行,往往因为业务逻辑也不能简单地替换已分散的代码。

    貌似真的只有 DSL 才能做到完全自动化了,后端不写代码就能自动化解析前端传的参数。
    https://github.com/TommyLemon/APIJSON/

    不过楼主的思考、总结、实践是很值得鼓励的。
    bk201
        25
    bk201  
       2018-11-13 09:57:40 +08:00   1
    这类东西太多了,其实真正需要的是组件化的产品,前端框架,后端框架等等都可以轻易替换的,而不是全家桶
    TommyLemon
        26
    TommyLemon  
       2018-11-13 09:59:18 +08:00
    @TommyLemon
    这两个功能看起来不错:
    自动生成 Excel 导入导出类的完整功能代码
    自动生成简单统计图表类的完整功能代码
    dany813
        27
    dany813  
       2018-11-13 10:01:21 +08:00   1
    看起来很不错
    TommyLemon
        28
    TommyLemon  
       2018-11-13 10:06:00 +08:00
    @TommyLemon 看了视频,UI 很棒
    TommyLemon
        29
    TommyLemon  
       2018-11-13 10:06:14 +08:00
    看了视频,UI 很棒
    myidea
        30
    myidea  
    OP
       2018-11-13 10:16:50 +08:00
    @Cbdy @TommyLemon 同意你的观点,完全的自动化要做再往上一层的抽象,接口换成类似 GraphQL 的实现,这个是我们下一步想做的。目前的自动生成和修改静态代码方案是给开发者的工具,让多数企业里的 Java 开发者能够掌控的这个方案。
    @TommyLemon APIJSON 也是类似 GraphQL 的实现方案吧,我们可以深入交流一下 :)
    myidea
        31
    myidea  
    OP
       2018-11-13 10:20:21 +08:00
    @bk201 目前生成代码只依赖我们的一个基础框架,没有框架生成代码相当于没有做任何封装的代码堆积,企业开发或多或多都有自己的封装的,我们的基础框架已经做到了不错的封装。
    mdluo
        32
    mdluo  
       2018-11-13 10:21:25 +08:00 via iPhone
    看到这个 UI 就已经没有兴趣了,参考一下 graphcool 和 prisma,同样是跟数据库和接口打交道的开源软件商业化产品
    TommyLemon
        33
    TommyLemon  
       2018-11-13 10:27:04 +08:00
    @myidea
    GraphQL 只是一个自动合并请求的工具,支持自动过滤字段,但 CRUD 还是得使用者自己实现的。
    两者协议确实比较像,但在 实现过程 和 使用效果 上差别巨大,在 CURD 上 APIJSON 远胜 GraphQL。
    https://juejin.im/post/5ae80edd51882567277433cf
    Livid
        34
    Livid  
    MOD
    PRO
       2018-11-13 12:22:00 +08:00
    @passerbytiny 谢谢举报。已经移动到 /go/promotions
    looseChen
        35
    looseChen  
       2018-11-13 13:13:50 +08:00   1
    很 nice,ui 也喜欢
    looseChen
        36
    looseChen  
       2018-11-13 13:14:38 +08:00
    很好奇你们开发人员如何读这个 diboot ?!
    myidea
        37
    myidea  
    OP
       2018-11-13 16:20:26 +08:00
    @looseChen "嘀 boot" 哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2947 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 13:35 PVG 21:35 LAX 06:35 JFK 09:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86