zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    

    中后台功能界面


    个人中心

    资源管理

    代码生成

    数据字典

    组织架构

    角色管理

    用户管理

    编号规则

    移动端界面


  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/known/p/14175640.html
Copyright © 2011-2022 走看看