Known是一个基于.NET开发的快速开发框架,前后端分离,使用极少的第三方组件,开发简单快速,大部分代码可通过代码生成工具自动生成,非常适合单兵作战和小团队开发。前端UI是一个基于JQuery开发的框架,支持单页和多Tab页的iframe应用程序,有PC端和移动端两个版本,支持目前主流的基于Chromium项目的浏览器。后端使用ASP.NET MVC框架,三层(Controller、Service、Repository)。

主界面预览

前端主要组件

后端主要组件

增删改查示例代码

中后台功能界面

移动端界面

主界面预览


前端主要组件


  1. Layer:弹出层,支持Modal对话框、alert、confirm、tips、loading等。
  2. Router:路由,支持多级路由,回退等。
  3. ListBox:列表框,支持data和url绑定和单击回调等。
  4. Tree:树,依赖ztree,支持data和url绑定,支持简单list数据等。
  5. Tabs:标签页。
  6. Query:查询组件,支持查询条件字段绑定和查询按钮等。
  7. Form:表单组件,支持普通表单和多Tab页表单、栏位字段绑定、非空栏位验证和操作按钮等。
  8. Input:输入组件,支持hidden、text、textarea、select、date、radio、checkbox、editor、picker等,其中date依赖datepicker,editor依赖wangEditor。
  9. Picker:弹出选择组件,支持查询和选择回调等。
  10. Grid:网格组件,支持toolbar、query、import、export等,支持编辑。
  11. Chart:图表组件,依赖echarts。
  12. View:视图组件,支持左右布局,栏位一次定义,多处使用(Query、Grid、Form)。

后端主要组件


  1. Database:数据库访问组件,支持MySql、SQLite、SqlServer、Oracle等。
  2. Container:对象容器,用于缓存注册的对象实例。
  3. Config:配置组件,提供App相关配置信息。
  4. Logger:日志组件,提供Info、Error和远传运维api。
  5. Platform:平台组件,提供用户登录、日志、数据字典、配置、编号生成、产品激活等功能。
  6. Flow:工作流组件,提供提交、通过、退回、撤回、指派等流程功能。
  7. Job:定时作业组件,提供多线程和Timer作业,定时作业调度。
  8. IoT:IoT组件,提供物联网设备在线实时数据监测。

增删改查示例代码


前端代码

function SysDemo() {
//fields
var url = {
QueryModels: baseUrl + '/System/QueryDemos',
DeleteModels: baseUrl + '/System/DeleteDemos',
SaveModel: baseUrl + '/System/SaveDemo'
}; var view = new View('Demo', {
url: url,
columns: [
{ field: 'Id', type: 'hidden' },
{ title: '隐藏字段', field: 'Hidden', type: 'hidden', required: true },
{ title: '文本字段', field: 'Text', query: true, sort: true, import: true, export: true, type: 'text', required: true },
{ title: '整型字段', field: 'IntVal', import: true, export: true, type: 'text', required: true },
{ title: '数值字段', field: 'DecVal', import: true, export: true, type: 'text' },
{ title: '日期字段', field: 'Date', placeholder: 'yyyy-MM-dd HH:mm:ss', import: true, export: true, type: 'date' },
{ title: '单选字段', field: 'Radio', import: true, export: true, type: 'radio', code: 'YesNo' },
{ title: '复选字段', field: 'Check', import: true, export: true, type: 'checkbox', code: 'YesNo' },
{ title: '下拉字段', field: 'Select', import: true, export: true, type: 'select', code: ['暂存','已发布'] },
{ title: '备注字段', field: 'Note', import: true, export: true, type: 'textarea' }
]
}); //methods
this.render = function(dom) {
view.render().appendTo(dom);
} this.mounted = function() {
view.load();
}
}

后端代码

//Controller
public class DemoController : BaseController
{
private DemoService Service => new DemoService(); [HttpPost]
public ActionResult QueryDemos(CriteriaData data)
{
return QueryPagingData(data, c => Service.QueryDemos(c));
} [HttpPost]
public ActionResult DeleteDemos(string data)
{
return PostAction<string[]>(data, d => Service.DeleteDemos(d));
} [HttpPost]
public ActionResult SaveDemo(string data)
{
return PostAction<dynamic>(data, d => Service.SaveDemo(d));
}
} //Service
class DemoService : BaseService
{
private IDemoRepository Repository => Container.Resolve<IDemoRepository>(); internal PagingResult<SysDemo> QueryDemos(PagingCriteria criteria)
{
return Repository.QueryDemos(Database, criteria);
} internal Result DeleteDemos(string[] ids)
{
var entities = Database.QueryListById<SysDemo>(ids);
if (entities == null || entities.Count == 0)
return Result.Error("请至少选择一条记录进行操作!"); return Database.Transaction("删除", db =>
{
foreach (var item in entities)
{
db.Delete(item);
}
});
} internal Result SaveDemo(dynamic model)
{
var entity = Database.QueryById<SysDemo>((string)model.Id);
if (entity == null)
entity = new SysDemo(); entity.FillModel(model);
var vr = entity.Validate();
if (!vr.IsValid)
return vr; Database.Save(entity);
return Result.Success("保存成功!", entity.Id);
}
} //Repository
public interface IDemoRepository
{
PagingResult<SysDemo> QueryDemos(Database db, PagingCriteria criteria);
} class DemoRepository : IDemoRepository
{
public PagingResult<SysDemo> QueryDemos(Database db, PagingCriteria criteria)
{
var sql = "select * from SysDemo";
db.SetQuery(ref sql, criteria, QueryType.Contain, "Text");
return db.QueryPage<SysDemo>(sql, criteria);
}
}

中后台功能界面


个人中心

资源管理

代码生成



数据字典

组织架构

角色管理

用户管理

编号规则

移动端界面


Known快速开发框架的更多相关文章

  1. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  2. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. CRL快速开发框架系列教程十一(大数据分库分表解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  4. CRL快速开发框架系列教程十(导出对象结构)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. CRL快速开发框架系列教程六(分布式缓存解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. CRL快速开发框架系列教程五(使用缓存)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. CRL快速开发框架系列教程三(更新数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  10. CRL快速开发框架系列教程一(Code First数据表不需再关心)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. hashmap(有空可以看看算法这本书中对于这部分的实现,很有道理)

    //转载:https://baijiahao.baidu.com/s?id=1618550070727689060&wfr=spider&for=pc 1.为什么用HashMap? H ...

  2. day007|python基础回顾7

    文件处理 目录 文件处理 1 文件打开模式补充 2.1 文件操作之读操作 2.2 文件操作之写操作 3 控制文件指针移动 3.1 前提 3.2 f.seek() 4 文件修改的两种方式 4.1 方式一 ...

  3. 【P2634】聪聪可可——点分治

    (题面来自Luogu) 题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头 ...

  4. java抽象类,多态1

    1 package pet_2; 2 3 public abstract class Pet { 4 private String name; 5 6 public String getName() ...

  5. Kubernetes-20:日志聚合分析系统—Loki的搭建与使用

    日志聚合分析系统--Loki 什么是Loki? Loki 是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统.它的设计非常经济高效且易于操作,因为它不会 ...

  6. SAP调用RestfulApi接口POST数据到外部系统

    作者:明光烁亮 出处:http://www.cnblogs.com/hezhongxun/ 微信号:HEme922 欢迎加好友一起交流SAP! 视频资料共享. 本文版权归作者和博客园共有,欢迎转载,但 ...

  7. mySQL入门之多表操作

    外键 初识外键 外键:引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束.(外键用于建立和加强两个表数据之间的连接,保证数据的完整和统一性) 主表:被引用的表 从表:引用外键的表 -- ...

  8. 初学者值得拥有【Hadoop伪分布式模式安装部署】

    目录 1.了解单机模式与伪分布模式有何区别 2.安装好单机模式的Hadoop 3.修改Hadoop配置文件---五个核心配置文件 (1)hadoop-env.sh 1.到hadoop目录中 ​ 2.修 ...

  9. MyBatis-01:环境搭建

    MyBatis-01:环境搭建 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CRE ...

  10. DRF使用Serializer来进行序列化和反序列化操作

    在serlizers中添加 # -*- coding: utf-8 -*- from rest_framework import serializers from .models import * c ...