• Known快速开发框架


    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);
        }
    }
    

    中后台功能界面


    个人中心

    资源管理

    代码生成

    数据字典

    组织架构

    角色管理

    用户管理

    编号规则

    移动端界面


  • 相关阅读:
    15道谷歌面试题及答案
    Linux解压 tar命令
    C#中的WebBrowser控件的使用
    C#中正则表达式使用介绍
    C#中的DataGridView
    使用Python破解验证码
    Python Open Source Project List
    程序员接私活经验谈[转]
    C#中的Dictionary字典类介绍
    金老师的博客
  • 原文地址:https://www.cnblogs.com/known/p/14175640.html
Copyright © 2020-2023  润新知