美文网首页Node.jsNode.js专题后端
极简风格Node无后端框架实现——xmodel

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

作者: 无聊数藏家 | 来源:发表于2017-03-12 12:27 被阅读356次

    框架理念

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

    无后端框架——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官网

    相关文章

      网友评论

      本文标题:极简风格Node无后端框架实现——xmodel

      本文链接:https://www.haomeiwen.com/subject/ejytnttx.html