前端框架撸起来——概述

前言

如今前端框架有很多,各式各样,学习使用成本也高,二次开发也非易事。如果自己设计一套前端框架,按照自己的想法和思路去写,做到使用方便,代码简洁,并非是一件难事。

下面我带大家一起撸一个中后台的前端框架,本系列主要是写撸框架的思路和主要代码,一些具体的实现,由于代码太长,文章中就省略一带而过。具体的代码可以移步giteegithub进行下载,感兴趣的请star支持。

本框架对于熟悉jQuery的同学来说,是一个不错的选择,既对jQuery有进一步的认识,又对JavaScript有更深的了解。

框架名称

小孩出生要取名字,一个新的框架也是如此,本框架名字取作“KUI”,没啥别的意思,K是取自Known的首字母。

框架地址

技术要求

实现本框架需要有如下技术背景:

  • 要熟悉css样式表
  • 要熟悉JavaScript脚本语言
  • 要熟悉jQuery框架

框架目标

本框架的目标是依赖最少的第三方组件,使用最少的代码,约定大于配置。应满足以下功能:

  • 支持单页和多标签iframe页
  • 支持多语言、路由、组件和模块化
  • 支持文本框、下拉框、日期框、单选框、复选框、文本域、富文本框、弹窗选择框等
  • 支持弹出层、标签页、图表、树、列表、表单、表格、可编辑表格等
  • 内置登录页、后台框架页、通用增删改查页等

目录结构

KUI
├── static
│ ├── fonts
│ ├── img
│ ├── libs
│ │ ├── ztree
│ │ ├── datepicker
│ │ ├── echarts.min.js
│ │ └── wangEditor.min.js
│ ├── css
│ │ ├── font-awesome.css
│ │ └── kui.min.css
│ └── js
│ ├── jquery.min.js
│ └── kui.min.js
├── src
│ ├── components
│ │ ├── Form.js
│ │ ├── ...
│ │ └── Router.js
│ ├── langs
│ │ ├── en.js
│ │ └── zhCN.js
│ ├── kui.css
│ ├── kui.js
│ └── app.js
├── bundleconfig.json
└── index.html

目录中只有一个html文件,其他的都是js和css文件。单页应用只有一个html文件,即index.html,这个文件的代码很简单,如下所示:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KUI</title>
<base href="/">
<link rel="stylesheet" href="/static/css/font-awesome.css">
<link rel="stylesheet" href="/static/css/kui.min.css">
</head>
<body>
<div id="app"></div>
<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/lang/zh-CN.min.js"></script>
<script src="/static/js/kui.min.js"></script>
</body>
</html>

使用示例

框架建成后,易于使用和代码简洁是第一要求,我们期望的一个增删改查页面的代码应该是下面这样的:

function DemoPage() {
var url = {
QueryModels: baseUrl + '/Demo/QueryDemos',
DeleteModels: baseUrl + '/Demo/DeleteDemos',
SaveModel: baseUrl + '/Demo/SaveDemo'
};
var codes = ['选项一', '选项二'];
//定义一个CRUD页面对象,栏位,按钮等
var view = new View('Demo', {
url: url,
columns: [
{ field: 'Id', type: 'hidden' },
{ title: '文本', field: 'Text', type: 'text', required: true, query: true },
{ title: '日期', field: 'Date', type: 'date' },
{ title: '下拉框', field: 'Select', type: 'select', code: codes },
{ title: '复选框', field: 'Check', type: 'checkbox', code: codes },
{ title: '单选框', field: 'Radio', type: 'radio', code: codes }
],
formOption: {},//表单选项
gridOption: { //表格选项
toolButtons: ['add', 'edit', 'remove']
}
});
this.render = function (dom) {
view.render(dom);//呈现页面,由路由组件调用
}
}

下一章将带大家如何实现框架的组件和路由。

posted @   known  阅读(1007)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示