如何用JS写一个table组件 | 作业讲解
这个题目是作业区里的一道题,大家都完成的很好。论坛里的wenacy虽然没有成功的完成此作业,但这种努力的尝试才是最有价值的。
以下的内容是我个人的主观理解,偏见,阅读时请注意姿势。
组件,它是模块,但又不是模块。
在我的理解中模块有二种,一是组成页面的结构,它是不带逻辑的。例如一个HTML结构的空的窗口、容器。
第二种,从JavaScript的模块化开发角度来讲,一个function就是一个模块,例如:
function isGet(){
//get...
}
这个函数就是一个JS模块,它是有逻辑的。
一个组件可以说它是一个JS模块,但一个JS模块,却未必是一个组件。这是因为但凡组件无论大小都是要实现页面上的一个功能,而一个完备的功能却会有好几个功能点、判断、方法来组件,这些东西是不能写在一个函数里的,而要拆分为好多函数、方法。所以你会看到一个组件里面包含了许多函数、方法或是许多JS文件。
这就引出下一个问题,组件的组织。也就是单一功能的再细分,用笔先写出一个个的点。。
就说这个 table组件吧,
--自定义行;
--自定义列;
--自定义左侧是否有单选按钮;
--自定义右侧是否有删除按钮;
--自定义每行是否可展开下拉;
--自定义每列标题是否有下拉按钮;
--自定义表头标题
...
..
用JS来表示:
var config={
title:[
{title:'员工', field:'yuangong'},
{title:'姓名', field:'name'},
{title:'部门', field: 'bumen'},
{title:'状态',field:'userStat'}
],
data:{
data: getData()
},
isCheck:{
isCheckStatus:1
},
isDel:{
isDelStatus:0
},
isWidth:500
...
..
}
这个config定义了这个表格,它有4列:员工,姓名,部门,状态;它有几行要看getDate()返回多少数据了;ischeck是否有单选按钮;isdel是否有删除按钮,对,还要考虑是否分页。
然后定义一个函数,createTableUI(),,,
(写这东西真累,这么多字了,开头还没写完,还不一定有人爱看。还是写吐槽文舒服啊,一会就写完了)
简短节说啊,,把刚才的config进来,就这样:createTableUI(config)
然后createTableUI的伪代码:
createTableUI(c){
var config = $.extend(true,{},c);
var tab = $('<table>',{})...
if( config.isWidth != undefined ){
tab.css('width',...)
}
var tabBody = $('<tbody/>', {}).appendTo(tab)...
for(var i in title){
$('<tr/>',{}).html( title[i] ).appendTo( tabBody );
...
..
}
}
反正就是这个套路,不写了,照这个情况写下去,得写明天去了。就现在文中这些内容基本也能明白组件是怎么个想法了。
- Java程序员的日常—— IOUtils总结
- Android Studio 错误集
- Linux 优化
- 基于重叠IO模型的 回显TCP服务器设计
- Git常用命令
- 手把手教你搭建SpringMVC——最小化配置
- Mysql-16-缓存的配置和使用
- 重叠(Overlapped)IO模型
- Mysql-15-mysql分布式应用
- 基于Spring Mvc实现的Excel文件上传下载
- Java程序员的日常—— Arrays工具类的使用
- Mysql-14-mysql的日志管理
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- Java程序员的日常 —— static的用法讲解实践
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试题-List之ArrayList、Vector、SynchronizedList、CopyOnWriteArrayList
- 面试题-JAVA设计模式之单例模式的5种实现方式
- 面试题-JAVA中的深拷贝、浅拷贝原理及实现
- Cross-Origin Resource Sharing (CORS)-跨域
- 多线程技术-CountDownLatch在业务中实践
- Mybatis源码阅读-准备环境搭建
- 【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
- Oracle的expdp和impdp的使用方法
- python中的密度图与柱状图
- 单细胞数据(scRNAseq)可以做GSEA吗?
- mybatis-plus的collection、association 标签传递多参数
- 100 的阶乘末尾有多少个0?
- C语言面试之——地址的强制转换
- Redis:我承载了上千万人的火影青春
- 使用云函数 SCF+COS 快速开发全栈应用