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快速开发框 ...
随机推荐
- 使用Folx下载任务完成后,怎么自动完成关闭
下载工具的优点是可以通过多线程的方式,提高文件的下载速度,减少用户的下载时间.但另一方面来说,下载工具为了达到高速下载,也会占据较多的带宽资源,甚至会拖慢电脑的运行. 因此,很多用户会利用电脑的空闲时 ...
- python ddt实现数据驱动
首先安装ddt模块,命令:pip install ddt 通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或 ...
- 【mq读书笔记】消息消费过程(钩子 失败重试 消费偏移记录)
在https://www.cnblogs.com/lccsblog/p/12249265.html中,PullMessageService负责对消息队列进行消息拉取,从远端服务器拉取消息后将消息存入P ...
- GitHub 访问不顺怎么办?在线等,急
在日常的工作生活学习中 经常会遇到无法访问 GitHub.访问不稳定等等突发情况 这不,今天群里的朋友们又双叒叕遇到了问题-- 为方便用户从 GitHub 快速备份开源仓库,稳定访问,CODING 现 ...
- devc++编译时 undefined reference to `__imp_WSAStartup'
socket编程时遇到的问题:
- kali修改配置文件后并保存
vim是进入配置文件并修改 修改完按Esc进入控制模式,再:w保存 :wq是保存并退出
- CBV装饰校验的三种方式session
代码如下: from django.shortcuts import render,HttpResponse,redirect from django.views import View # Crea ...
- 保姆级别的RabbitMQ教程!包括Java和Golang两种客户端
目录 什么是AMQP 和 JMS? 常见的MQ产品 安装RabbitMQ 启动RabbitMQ 什么是Authentication(认证) 指定RabbitMQ的启动配置文件 如何让guest用户远程 ...
- .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪
.NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...
- 你知道Python基本数据类型是哪6个么
Python 是强类型语言,在学习 Python 时,有必要了解 Python 有哪些基本数据类型,一共 6 个:Number(数字).String(字符串).List(列表).Tuple(元组).S ...