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

框架理念

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

无后端框架——XModel

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

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

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

这是一个用Node构建的“无后端”框架,“无后端”架构和框架应该在目前来说还是比较激进和前沿的,这个项目是我个人的一个学习和试水吧,未来还会继续拓展和实现。

Node的优美和强大,让我爱不释手,我第一次觉得在微服务框架领域,有了和SpringBoot一战的对手。废话少说了,先直接来看使用,然后详细说实现思路——

使用方法

安装说明


1,config/default.js中设置数据库连接

2,node app.js(启动)

3,启动app.js后,系统会自动加载model/下所有的JS文件,并且与数据库同步,创建数据库表或更新字段

使用说明(model任意,例如:user_info,数据库表无须关心,配置数据库连接之后,数据实体会自动与数据库同步,目前唯一需要做的事情就是写实体类)

RESTful接口

[POST]http://host:port/xmodel/MODEL/create

[POST]http://host:port/xmodel/MODEL/update

[POST]http://host:port/xmodel/MODEL/query

[GET]http://host:port/xmodel/MODEL/get/:id

[GET]http://host:port/xmodel/MODEL/destroy/:id

以一个用户模块为例,需要对用户进行增删改查:

需要注意的是默认自动创建id,createdAt,updatedAt三个字段,无须人工处理

在数据库插入一条数据,只需要请求如下url

[POST]http://host:port/xmodel/user_model/create

post body:{"username":"cheney","password":"123"}


在数据库修改一条数据,只需要请求如下url

[POST]http://host:port/xmodel/user_model/update

post body:{id:1,"username":"cheney","password":"123456"}


在数据库查询多条数据,只需要请求如下url

[POST]http://host:port/xmodel/user_model/query

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


在数据库查询一条数据,只需要请求如下url

[GET]http://host:port/xmodel/user_model/get/1

[GET]http://host:port/xmodel/user_model/destroy/1

框架目录结构


controller——请求控制器,全自动,无须人工处理

router——路由器控制器,全自动,无须人工干预

sequelize——ORM数据库映射器,全自动,无须人工干预

config——系统环境配置文件,不同开发/生成环境,使用不同配置

model——【数据模型实体,这是使用框架唯一需要编写的文件,每增加数据实体,增加一个文件】

app.js——系统入口

实现思路


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

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

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

4、使用Sequelize(一个极其优雅的NodeORM框架)完美完成请求JSON对象与实体类,再到数据库表的映射

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

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

设计背景

目前RESTful风格,MVVM前后端分离的Web应用架构设计已经逐渐成为主流,虽然SSH等之类的传统MVC模式后端框架及其架构还会并行存在一段时间,但是唯物主义的理念,新事物总会取代旧事物。

我自己个人从最早先的Java Servlet开发,到SSH,SSM,SpringMVC,SpringBoot等Java框架的演进,而因为个人对于技术的热爱和追求,这些年也更多地尝试过PHP和Python进行架构开发。在个人对于整个Web架构设计的思考和理解中,虽然后端百花齐放,但Java似乎永远都是一枝独秀,以其顽强的生命力独占半壁江山。

的确,Java很优秀,越是深入地接触Java会越觉得Java的设计思想不简单,JavaWeb的衍生框架和工具实在太多了,太完善了。SpringMVC盛行的时候,我就被它的思想和理念吸引,以至于我自己在学习PHP的时候,用了SpringMVC的概念,花了一年多接近两年的业余时间完成了一个极度类似SpringMVC的PHP框架,我自己给它起名叫做PHPBean,这是个人制作的第一个Web框架,传送门在下面:

PHPBean——一个SpringMVC风格的PHPWeb框架

在框架的设计和搭建中,因为我个人十分不喜欢复杂的配置和冗余的代码,虽然业务永远都是复杂到不能再复杂,但无论多么庞大的系统,都不可能满足无限增长和复杂的业务模型,那么既然如此,为什么不把事情做简单,做一个最简单的框架系统,最少的代码完成80%的日常常用功能呢?在PHPBean这个框架中,我尽可能地使用“约定实现”,严格规范的目录结构,最少最少的代码和系统层级,实现一个MVC系统要做的基本事情。至于为什么选择PHP,纯粹是因为想学学PHP,和因为PHP是脚本,部署方便

以上是我个人对于MVC框架的思考和理解,不过随着时间的推移,就当我沾沾自喜以为自己的框架已经无懈可击的时候,MVVM出世了,这个时候我才认识到,原来的自己是多么幼稚(也许以后我还是会这么认为),MVVM的设计思想和理念和我原先在设计实现PHPBean的时候有很多重叠,但是苦于当时我根本不知道前端的东西,以为前端只有HTML,CSS,JQuery......

不过所幸的是,我遇到了一个前端朋友,一个很厉害的前端朋友,引领我进入了前端的世界,还记得这是第一次我感觉到了自己就像刚迈入大学校园的记忆,知道原来前端的世界已经翻天覆地。在NPM和VUE等等入门了之后,我开始思考后端,虽然SpringBoot已经足够强大,官网上眼花缭乱的组件,插件,真的是可以实现任何你想要的功能,而且都非常简单,再没有以前SpringMVC那么复杂的配置。

但是总有那么一个疑问,能不能再简单点,能不能比SpringBoot再简单,再轻量点~好吧,于是就有了现在的这篇文章

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

作者:CheneyXu

关于:XServer官网

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 框架理念 最少的代码,完成最通用的功能,是最美的设计 有没有比SpringBoot更简单,更轻量,几乎不用写代码就...
    无聊数藏家阅读 845评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,463评论 25 707
  • 还有一个月卸货,除了前期孕吐反应外(肯定是遗传老妈),整个孕期来说,还是蛮轻松的。 孕期做的检查: 孕期产检真的是...
    大墨青胭阅读 221评论 1 0
  • 不知道什么时候开始觉的自己不在年轻。是否我们还能偶尔回忆过去,回忆那些懵懂无知的青春年少。小时候我们都在做着不同的...
    90后夜孤寒阅读 201评论 0 1