我的梦想是后端都不用写 curd,正在开发能大幅度减低 curd 甚至让前端来写 curd 的框架,希望大家多多关注与支持

2019-03-03 11:19:37 +08:00
 qiuxiaojie

经历了从模板渲染到前后端分离的时代,一直在苦苦思考,怎么样才能少干点活(大笑).在某天与前端对接接口时,突然顿悟,既然数据都是从 json 回去的,为什么不能直接使用类似 json 这样的语法来查询呢.在大胆的设想下,设计并实现了一套查询语法,给它起名为 orql(Object Relational Query Language 关系对象查询语言缩写).

就以 V2EX 举例说明一下它的用法

查询首页帖子列表,包括帖子标题 发布时间 回复数量 发帖人名称和头像以及节点名称:query post: [id, title, createAt, commentNum, user: {id, name, avatar}, node: {id, name}].

查看某帖子,包括帖子标题 内容 回复和回复人信息:query post(id = $id): [*, comments: [id, content, createAt, user: {id, name, avatar}], user: {id, name, avatar}]

发布一个帖子:add post: {title, content, user}

当然还支持其他的操作 update delete count 等,在模型方面支持 1:1 1:N N:M N:M 关联,更多的用法也可以通过在 github 中查看 https://github.com/orql/orql-mapper .如有兴趣者可以私聊,加微信大家交流,希望大家可以点一个 star 支持.

我的梦想是做一个可以让编程也自动化的程序员,擅长代码抽象和生成,希望有共同兴趣的人大家能一起交流.

10079 次点击
所在节点    Node.js
121 条回复
qiuxiaojie
2019-03-03 11:50:57 +08:00
@msg7086 目前准备设计的 baas 是通过路由来开控制权限,前端不能直接执行语句,很多 baas 厂商把权限全部下放的确会造成很多问题
hellowes
2019-03-03 11:54:47 +08:00
后端哪有这么简单,业务复杂度,还有各种权限的设置,你以为你能搞定全部?就算可以,那后期维护扩展,甚至微服务呢?
askfilm
2019-03-03 12:02:50 +08:00
@qiuxiaojie 你确定你的这套不是变了个形式的 "CURD" ?

不要小看 "CURD" , "CURD" 甚至是整个世界的核心思想, 和具现化的体现 :)
RqPS6rhmP3Nyn3Tm
2019-03-03 12:21:03 +08:00
protobuf?
masker
2019-03-03 12:22:02 +08:00
怪不得前端圈那么乱,是个前端都想着重定义。
maemual
2019-03-03 12:25:28 +08:00
后端不用写了,前端不是还得写?有什么本质区别?
hxt
2019-03-03 12:35:29 +08:00
值得鼓励,不过也是在为用的人挖坑。
qiuxiaojie
2019-03-03 12:40:50 +08:00
@hellowes @askfilm 这只是一个数据库查询的 dsl,其他东西还是需要编码去实现
qiuxiaojie
2019-03-03 12:42:00 +08:00
@masker 设计风向都两年一大变了,前端业务比后端迭代快太多,ps 我是一个后端而已
qiuxiaojie
2019-03-03 12:44:01 +08:00
@maemual 原则上全部的业务都是还需要开发,只是提升开发效率和减低开发门槛
hxt
2019-03-03 13:02:08 +08:00
mongodb、postgresql 是用 json 查询存储的,部分语法可以借鉴他们的。
qiuxiaojie
2019-03-03 13:05:22 +08:00
@hxt 是的,最开始的时候一度考虑使用 mongodb 作为后端数据库,后来因为事务和关联查询原因最后放弃了
hellowes
2019-03-03 13:20:37 +08:00
@qiuxiaojie 可能对一些小项目玩玩还可以,但是对于一些特殊的场景,总是很难完全适用的。
比如大数据量拿出来要进行一些转换操作,你是放在前端一块块来处理,还是交给后台高性能服务器处理?    
还有服务器性能有限,有一些接口处理的比较慢,除了你这个接口,还有没有更扩展的方式?
hellowes
2019-03-03 13:22:16 +08:00
@qiuxiaojie 为什么很多人包括我都反感你这套东西呢?就是怕老板以为这个开源能替换后端,然后让我们都失业了,lol
xuanbg
2019-03-03 13:26:10 +08:00
完全没必要排斥 CRUD。我现在基本都是复制一下另一个项目的代码,然后根据业务逻辑修改一下就交付。有时候改动比较少,有时候就改得比较多了,除了大的框架结构,基本上留不下多少。如果是前一种情况,搞个通用框架似乎也不错,但这种情况其实并不多,更多的是修改其中的约 40%的代码。这种情况,通用框架其实是很尴尬的,要满足需求,框架本身就会变得非常复杂,而且会越来越复杂。。。基本上会和你的初衷背道而驰。。。所以,你需要的其实不是一个通用框架,而是一个通用模板。只要模板设计得好,真的是无论什么需求都可以往上套的。
k9990009
2019-03-03 13:43:18 +08:00
简单的还好,需求复杂的,要深度使用的必然会有问题,需要定制。
qiuxiaojie
2019-03-03 13:45:02 +08:00
@hellowes 这个只是一个用更简单的方法来操作数据库的框架,它并不包含其他的功能,有考虑在该基础上封装一个 baas,这个 baas 会比较适合数据类型的后端,对于其他功能还是需要靠写原生的代码函数来支持
qiuxiaojie
2019-03-03 13:46:40 +08:00
@xuanbg 这个就涉及到静态抽象与动态抽象的问题,基本上复制的形式为导致维护困难,当然一次交付后续就不需要继续例会的情况下复制也是一种很好的选择
qiuxiaojie
2019-03-03 13:47:20 +08:00
@k9990009 也支持原生 sql 的查询,有类似 mybatis 这种的映射机制
notreami
2019-03-03 14:40:35 +08:00
前端们,你们学前端的初心是什么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX