极简风格Node无后端框架实现——xbatis

框架理念

最少的代码,完成最通用的功能,是最美的设计

有没有比SpringBoot更简单,更轻量,几乎不用写代码就能完成后端CRUD功能的框架呢

答案是:有...,传送门在下面

XModel——无后端框架只需要写实体类,然后直接RESTful请求,全自动CRUD

那有没有比XModel更灵活一点,当我需要定制化一些业务的时候,可以几乎不用写代码就实现的框架呢

答案是:有...,传送门在下面

XBatis——无后端框架只需要写SQL,然后直接RESTful请求,全自动CRUD

这是继xmodel之后,对于微服务无后端架构的一点思考,因为单纯的CRUD虽然能解决项目上80%的起步开发需求,但是现实总是残酷的,总有那么20%的功能需求比较复杂,简单CRUD搞不定,例如多层结构的数据处理,例如需要一些简单逻辑判断,那么这时候怎么办呢,如何写最少的代码去实现我们需要的功能呢?我思考了很久,最后还是觉得,在处理关系型数据上,没有什么比SQL要来得强大,轻巧。所以,我编写了xbatis这个小服务应用,尝试解决这20%复杂需求中一部分的问题。

xbatis基本的思想理念就是,RESTful请求直接打通到SQL语句,抛开传统的Action,Service等业务中间层,没有中间商赚差价!对于简单的业务逻辑处理,直接用简单的SQL语句解决即可。(但是在这需要说明的是,对于非常复杂的业务逻辑处理,xbatis就不合适了,建议这个时候还是使用传统的业务中间层。)好了,废话少说,直接来看使用方法

使用方法

1,config/default.js中设置数据库连接,执行npm install

2,提前创建好数据表,或者使用xmodel自动生成数据库

3,node app.js(启动)

框架目录结构(后台)

xmodel

src/app.js——系统入口

yaml/*.yml——SQL文件,这是使用该框架开发唯一需要写的文件

RESTful规则

[POST]http://host:port/xbatis/MODEL_NAME/METHOD_NAME

[POST]http://host:port/xbatis/MODEL_NAME/METHOD_NAME

[POST]http://host:port/xbatis/MODEL_NAME/METHOD_NAME

[POST]http://host:port/xbatis/MODEL_NAME/METHOD_NAME

例子

以一个用户模块为例,需要对用户进行定制查询:

[POST]http://host:port/xbatis/user/find_by_username

post body:{"username":"cheney"}

user.yml文件:

findByUsername:

- select * from user where username = :username

实现思路

1、使用Node的Express微服务框架作为基础

2、使用Express的中间件Router处理所有请求

3、因为RESTful风格接口规范,所以Controller控制器可以根据路径解析,动态调用需要处理的SQL

4、使用nodebatis(一个极其优雅的Node类Mybatis框架,使用yml文件编写SQL)完成请求到SQL的业务处理

5、另外框架附加了config环境配置,可以根据开发或生产切换环境配置;tracer日志系统,可以很优雅简洁呈现不同级别log

未来还会考虑更灵活拓展,更强大业务功能,当然,这些都必须在不写代码的前提设计理念:)下完成......

设计背景

可以看到,XModel和XBatis的设计和实现都并不复杂,但实际上,达到了很“炫酷”的效果,真的可以几乎不写任何后端代码就是实现了一般项目中大量冗余重复编写的CRUD,甚至是简单的业务逻辑。我个人在项目中运用xmodel和xbatis组合使用,使得我的开发效率得以数倍的提升,使得我可以更加专注去处理复杂逻辑。

“无后端”架构并不意味着完全不用编写后端代码,而是那些冗余,重复,简单,繁琐,毫无意义的代码为什么不干脆舍弃掉呢,一个单纯调用dao的service又有什么意义呢?为了以后拓展?那为什么不干脆重新写一个service呢?软件工程的一个思想,永远不要去修改原先的代码,而是采用新写代码的方式来做变更。

微服务,微功能,微接口,当业务功能变迁,直接重新使用新接口进行更替就可以了,旧接口废弃,但这样做的前提是——新写接口的时间成本低于修改接口的时间成本。传统的开发模式中,这几乎是不可能实现的,但是在“无后端”架构中,却是很自然的。

当然,xmodel和xbatis只能解决CRUD和简单业务逻辑和简单业务场景,还有更多的复杂业务无法处理,对于复杂业务的解决方案,我个人一直也在思考中,也同时在开源界寻找着,如果看客们有好的想法,非常欢迎评论或联系我,不胜感激!

如果有任何的批评建议,BUG反馈,问题反馈,或是想法建议,帮助支持,个人都十分欢迎,我个人的联系方式如下:)

作者:CheneyXu

关于:XServer官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容