Known快速开发框架
Known是一个基于.NET开发的快速开发框架,前后端分离,使用极少的第三方组件,开发简单快速,大部分代码可通过代码生成工具自动生成,非常适合单兵作战和小团队开发。前端UI是一个基于JQuery开发的框架,支持单页和多Tab页的iframe应用程序,有PC端和移动端两个版本,支持目前主流的基于Chromium项目的浏览器。后端使用ASP.NET MVC框架,三层(Controller、Service、Repository)。
主界面预览
前端主要组件
- Layer:弹出层,支持Modal对话框、alert、confirm、tips、loading等。
- Router:路由,支持多级路由,回退等。
- ListBox:列表框,支持data和url绑定和单击回调等。
- Tree:树,依赖ztree,支持data和url绑定,支持简单list数据等。
- Tabs:标签页。
- Query:查询组件,支持查询条件字段绑定和查询按钮等。
- Form:表单组件,支持普通表单和多Tab页表单、栏位字段绑定、非空栏位验证和操作按钮等。
- Input:输入组件,支持hidden、text、textarea、select、date、radio、checkbox、editor、picker等,其中date依赖datepicker,editor依赖wangEditor。
- Picker:弹出选择组件,支持查询和选择回调等。
- Grid:网格组件,支持toolbar、query、import、export等,支持编辑。
- Chart:图表组件,依赖echarts。
- View:视图组件,支持左右布局,栏位一次定义,多处使用(Query、Grid、Form)。
后端主要组件
- Database:数据库访问组件,支持MySql、SQLite、SqlServer、Oracle等。
- Container:对象容器,用于缓存注册的对象实例。
- Config:配置组件,提供App相关配置信息。
- Logger:日志组件,提供Info、Error和远传运维api。
- Platform:平台组件,提供用户登录、日志、数据字典、配置、编号生成、产品激活等功能。
- Flow:工作流组件,提供提交、通过、退回、撤回、指派等流程功能。
- Job:定时作业组件,提供多线程和Timer作业,定时作业调度。
- 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快速开发框架的更多相关文章
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十(导出对象结构)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程七(使用事务)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程六(分布式缓存解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程五(使用缓存)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程三(更新数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程一(Code First数据表不需再关心)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- 精尽MyBatis源码分析 - SQL执行过程(四)之延迟加载
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 关于Jersey框架下的Aop日志 和Spring 框架下的Aop日志
摘要 最近新接手的项目经常要查问题,但是,前面一拨人,日志打的非常乱,好多就根本没有打日志,所以弄一个AOP统一打印一下 请求数据和响应数据 框架 spring+springmvc+jersey 正文 ...
- 《应用计算方法教程》matlab作业一
运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: 运行界面: word文档百度云链接: 链接:https://pan.baidu.com/s/ ...
- houdini 鱼眼相机
http://mattebb.com/weblog/houdini-fisheye-camera/ 这个网站是有提供一个相机shader的,,如图是方形的,国内的用户,比较多是做球幕的小伙伴,圆形就行 ...
- 从0开始带你成为JVM实战高手(百度网盘)
狸猫技术窝<从0开始带你成为JVM实战高手> 之前写过几篇 JVM 相关的文章,最近复盘的时候,发现狸猫技术窝<从0开始带你成为JVM实战高手>真的不错,然后就在网上找了一下( ...
- MySQL索引(二):建索引的原则
在了解了索引的基础知识及B+树索引的原理后(如需复习请点这里),这一节我们了解一下有哪些建索引的原则,来指导我们去建索引. 建索引的原则 1. 联合索引 我们可能听一些数据库方面的专业人士说过:&qu ...
- 第5.2节 Python的函数参数收集
函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数. 一.参数收集的定义 Python的函数支持可变不定数量的参数 ...
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget提供的currentItem当前项操作访问方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前项是指当前鼠标和键盘焦点所在项,在项可以进行选择操作时,当前项可以是选中状态,也可以是未选中状态 ...
- PyQt学习随笔:Model/View设计中支持视图中数据修改的方法及步骤
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 要支持视图中的数据可以修改,需要两个步骤: 1. 在视图中设置editTriggers属性支持在视图 ...
- pytorch知识(torch.sum,以及维度问题)
参考(推荐): https://mathpretty.com/12065.html