概述

JS/SQL MVC框架. 顾名思义, 就是JavaScript和SQL MVC框架. 只要掌握JavaScript和SQL就可以快速开发出一个复杂的基于MVC的BS结构的系统.

由于该框架是在MVC框架进行改进的框架. 它继承了MVC框架的优点

  1. 一个模型提供不同的多个视图表现形式.
  2. 模型可复用
  3. 提高开发效率

通过该框架自带的程序生成器和存储过程解决了原有MVC框架的几个不足

  1. 通过程序生成器,自动生成相应程序, 存储过程 解决了原有MVC系统结构和实现的复杂的问题。
  2. 通过透明调用存储过程, 解决了视图与控制器间的过于紧密的连接问题。
  3. 通过存储过程和Viewdata减少了数据的调用, 将大量数据计算查询在数据库端实现, 解决了视图对模型数据的低效率访问。

除此之外该框架还有以下的优点

  1. 无需开发环境. 基本功能不需更改程序, 只要更改JS和sql即可.
  2. 跨语言, 该框架支持c#, php(正在开发), java(正在开发), 由于中间层透明, 可以很容易做到一次开发, 多语言, 多平台支持.
  3. 嵌入式系统支持,由于支持php(正在开发), java(正在开发), 占用资源少, 该系统很容易发布在linux嵌入式系统上.

项目背景

由于工作需要,使用了一套框架, 标准的.net mvc框架. 四层结构.

  • View: Cshtml 用于页面的布局Js 页面数据的显示,操作,主要通过jquery easyui 实现,
  • Entity 实体和表格映射,
  • Service 操作数据,对数据进行增,删,改, 查询.
  • Controller 连接页面和service.

该框架自带一个简单的程序生成器. 可以一次生成5个文件. 但修改页面是就比较麻烦.一个简单的表改动会涉及5个文件.

项目的开发过程中, 我发现 entity, service, controller 可以合在一起, 并且与页面无关. 就是说一个controller可以对应多个页面, 而所有数据库逻辑操作, 通过存储过程实现. 页面和存储过程之间的关系存在表中. 于是现在的结构就变成了

  • Cshtml 用于页面的布局,
  • Js 页面数据的显示,操作,主要通过jquery easyui 实现,
  • Stored procedure, 操作数据,对数据进行增删改, 查询.

通过传递参数调用控制器, 来显示不同的页面.

经过一年的开发, 改进. 该框架基本满足了所有的需要. 新员工经过简单培训后, 一周就可以上岗. 在开发过程中, 由于使用了程序生成器. 基本的程序不用人工编写, 对于特殊需要可以通过修改js, html,sql 和设置数据库来改变. 将程序员从繁杂的工作中解放出来, 把精力放在业务流程和逻辑. 由于逻辑控制比较清晰, 程序质量比较高, 开发非常快捷, 扩展容易. 整个流程在数据库中, 框架自带在线帮助功能, 很容易生成技术和使用文档.

框架工作原理

该框架的整个逻辑,菜单,权限管理全部在数据库端. Js和html来显示数据.如果没有特殊的需求,基本不用改控制器程序.

该框架最基本的功能模块是页面. 每个页面有若干个布局区域. 每个布局区域, 或者几个布局区域对应一个表.

所有表数据是通过ajax或者页面初始时调用存储过程来得到. 而这个存储过程在页面中有一个唯一的名字. 称作动作.

一个动作对应一个存储过程或者sql语句. 一个存储过程可以对应多个动作. 这些动作可以是不同页面中的动作, 也可以是同一页面里面的动作. 一个存储过程可以返回一个表, 多个表或者不返回数据. 动作是该框架基础,每个页面对应多个动作.

对于管理界面(需要授权检查),每个动作还有一个按钮和它对应, 用于权限检查.每次js发出一个ajax动作请求, 后台程序先检查该动作对应的用户,页面是否合法. 如果合法, 则执行对应的存储过程, 返回执行结果.

存储过程的参数是由系统自动填入的. 在执行存储过程时, 系统先得到参数来源(session, config, url parameter, post data). 如果位定义来源, 首先,先检查ajax 参数是否包含了所需参数, 如果没有则检查session, url  parameter, web config. 如果都没有, 则报错.

Ajax是通过调用控制器中的函数来实现,现有函数:

  1. Listdt: 运行存储过程得到单表数据. 返回一个Json. 需要授权
  2. Listds运行存储过程得到适用于多表数据,返回一个json. 需要授权
  3. pager 运行分页存储过程, 返回一个或者多个表. 需要授权.
    1. 一个表格式为{rows:’…’,total=20},
    2. 两个表格式为{rows:’…’, footer:’…’,total=20},
    3. 三个表格式为{rows:’…’, footer:’…’, detail:’…’,total=20},
    4. 多于三个表格式为{rows:’…’, footer:’…’, all:’…’,total=20},
  4. RunProc: 运行一个无返回结果的存储过程, 需要授权
  5. Listdtvd: 运行存储过程得到一个DataTable,结构保存在ViewData中
  6. Listdsvd: 运行存储过程得到一个dataset,结构保存在ViewData中
  7. pagerA: 同pager,但无需授权
  8. runProcA: 同runProc,但无需授权
  9. ListDTA: 同ListDT,但无需授权
  10. ListDSA: 同ListDS,但无需授权

动作在页面中以数组形式存储,每个动作名对应一个url

http://localhost:9812/Dev/titan2/pager?token=OCraN1Pdaz0-Pcc91rAPD_yFOt0CrdkecfDFCROtsl0=&b=JEIsGfj-vwmL8DaUH9lj1Q==&_t=118643428560&keyword=&page=1&rows=30

token和b中包含了动作的信息. 用于后台进行权限验证. 该url一般是一天有效.

每个页面的动作可通过动作管理来进行维护:

页面的调用也是类似的方式,通过传递参数调用控制器, 来显示不同的页面.:

http://localhost:9812/dev/titan2?menucode=6ObbQTrP0d70IVULi9fIXOL4SncBrgyj

menucode中包含页面信息. 用于后台进行权限验证.每个页面有一个唯一的页面代码. 页面代码可以通过在尾部加@来设置别名.

例如:

我们有一个页面,代码是text, 我想增加一个页面,继承text页面的所有功能, 在这个基础上改一些东西. 于是可以使用别名来增加一页面, 页面代码是text@about. 新的页面将和text页面完全一样. 可以通过增加动作来改变后台逻辑.同样的动作名,系统优先调用别名中的动作. 通过修改页面处理ViewData["MenuCodeAlias"]来修改显示.

页面的管理是通过管理页面功能来管理的.现在有三种页面:

  1. 管理页面:需要登录, 可以做比较复杂工作,
  2. Web页面: 不需要登录, 大部分是用来显示数据.
  3. 移动页面: 需要登录, 由于屏幕的限制,可以做比较简单工作,

框架自带功能

  1. 组织结构管理:可以设置多级单位
  2. 用户管理:每个用户有一个单位,有多个角色
  3. 角色(权限)管理:可以根据角色来分配页面
  4. 管理菜单管理:设置管理菜单级别和对应权限
  5. WEB菜单管理:设置WEB菜单
  6. 移动菜单管理:设置移动菜单级别和对应权限
  7. 按钮管理:管理按钮

开发工具-用于快速生成页面,程序和存储过程

该程序生成器用于生成程序. 建议新的页面尽量用生成器生成. 包括以下几个功能

  1. 管理页面管理: 对管理页面进行维护设置.
  2. WEB页面管理: 对web页面进行维护设置.
  3. 移动页面管理: 对移动页面进行维护设置.
  4. 动作管理: 页面生成后, 对动作进行维护.
  5. 动作参数: 对于特殊动作参数进行设置.

页面管理

所有对数据库操作都是通过动作实现. 通过设置以下参数来实现程序调用, 权限管理

  1. 页面名: 每个动作对应一个页面, 用于设定动作所在的页面
  2. 动作名: 有一个动作名. 用于动作调用.
    1. 对于js动作可通过km.model.urls["动作名"] 调用.
    2. 对于viewdata可以通过@RawHTML(viewdata["动作名"]),在页面列把数据赋值给js变量
  3. 存储过程名:每个动作有一个存储过程或者sql语句.
  4. 函数名: 对应的函数.
  5. 按钮: 对应按钮: 可根据按钮权限来设置动作权限.
  6. Connstr: 数据库连接字符串. 可连接多个数据库
  7. 是否需要授权:

一些技巧

由于程序本身没有变动. 除了html,js大部分的文件都可以公用. 我们可以通过建立目录链接的方式来节省空间.

mklink /d bin C:\web\JSV3\bin

mklink /d Content C:\web\JSV3\Content

mklink /d app_code C:\web\JSV3\app_code

mklink /d Scripts C:\web\JSV3\Scripts

mklink /d Areas C:\web\JSV3\Areas

mklink /d bin C:\web\JSV3\bin

mklink /d css C:\web\JSV3\css

mklink /d img C:\web\JSV3\img

mklink /d js C:\web\JSV3\js

mklink /d Views C:\web\JSV3\Views

下载该框架

JS/SQL MVC框架介绍相关推荐

  1. Node.js 国产 MVC 框架 ThinkJS 开发 config 篇

    原创:荆秀网 网页即时推送 https://xxuyou.com | 转载请注明出处 链接:https://blog.xxuyou.com/nodejs-thinkjs-study-config/ 本 ...

  2. 转 10 个最佳的 Node.js 的 MVC 框架

    10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到:  收藏 +322 Node.js 是一个基于Chrome JavaScript ...

  3. 10 个最佳的 Node.js 的 MVC 框架

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, ...

  4. Castle.MVC框架介绍

    Castle.MVC目前还在Castle的Sandbox中,只是在源代码管理中有,还没有向外发布版本,这里介绍多时Web的MVC,和Castle的MonoRail相比较,这个MVC可以Asp.Net的 ...

  5. 开源:Taurus.MVC 框架 (已支持.NET Core)

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  6. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  7. [置顶]开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  8. Taurus MVC框架

    Taurus.MVC 源码: 1:源代码SVN:https://github.com/cyq1162/Taurus.MVC 2:Demo演示站:http://taurus.cyqdata.com De ...

  9. JavaScript MVC 框架开源软件

    HTML的Web框架AngularJS Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进 ...

最新文章

  1. linux c 编译错误 conflicting types for 的解决办法
  2. 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...
  3. 希尔排序(插入排序的优化算法)
  4. php7 echo无法显示,PHP7 echo和print语句实例用法
  5. Linux redhat下安装swftools(转载后修改)
  6. mysql-workbench中用select in对变量赋值
  7. Zookeeper和etcd比较
  8. 鸿蒙系统公布名单,鸿蒙系统支持名单曝光,有你的手机吗?
  9. Access数据库,以及一些其他的库。
  10. 网络口碑营销从“可以做”、“值得做”到了“必须做好”的阶段!
  11. 屠神-官方正版折扣端全面评测报告
  12. 实时监测麦克风音量及检测MIC
  13. xmind设计测试用例以及与云效平台的交互
  14. 麒麟处理器是基于arm的吗_直接采用ARM的CPU和GPU,那么麒麟芯片算自研吗?
  15. linux界面回收站图标没了,Ubuntu美化教程:在AWN中添加“显示桌面”和“回收站”图标...
  16. 细分领域BIM系统研发是谁的事?
  17. 计算机病毒的入侵路径,计算机病毒的入侵方式有哪些?
  18. 关于 ‘else‘ without a previous ‘if‘错误
  19. What does shot mean?
  20. selenium入门安装及环境搭建

热门文章

  1. Flink 1.12.2 源码浅析 : yarn-per-job模式解析 [二]
  2. 【AI测试】人工智能测试整体介绍——第二部分
  3. 【AI测试】人工智能测试整体介绍——第四部分
  4. 安卓开发 从入门到转业 (一)
  5. 归并排序Java详解+例题
  6. 关于预答辩研究生汇报内容及方式的几点要求
  7. 矩阵的秩+基础解系的秩为什么等于n?
  8. 1521端口已被占用解决方案
  9. matlab用正弦做随机信号程序,(MATLAB辅助现代工程数字信号处理)第6章平稳随机信号处理与分析.ppt...
  10. cdq分治 学习笔记