前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端组件“可编辑表格”,怎么设计才好呢?先得有思路

前端组件“可编辑表格”,怎么设计才好呢?先得有思路

作者头像
web前端教室
发布2018-02-07 10:36:13
1.4K0
发布2018-02-07 10:36:13
举报
文章被收录于专栏:web前端教室web前端教室

大家好,今天是0618,今天的先行者计划的主题是“可编辑表格”的第一次课。

既然是一个前端组件,那么就涉及到如何设计的问题。我们不是单纯的要实现一个可编辑表格的效果,而是要实践一个组件化的方案。

总体的方向:

第一,view层,需要分层设计;

第二,model层,需要让数据来控制view层;

思路的话,可以参考react的生命周期概念:

1,插入dom;

2,获得新数据,重新渲染dom;

3,删除dom;

咱们也一样给这三种状态各提供二种处理函数,

will是事前调用;

did是事后调用;

还要有公开出来的set\get方法

那么画的结构图就是这样,

根据这个图,可以看出在本次课程中,我的思路是“重新造轮子”。为什么不选择开源的框架呢?因为我们做这个东西,是为了锻炼自己的组件设计能力,而不是要学习某个框架。当你能自己着手设计一个组件、一个库、一个框架的时候,你才会仔细的考虑这其中的许多问题。

那么,我们按着比较笨的思路来“想”这个组件吧,

首先,它每个表格td,至少有二个方法,

1,获得焦点;

2,失去焦点;

当触发1时,要调用'获取当前td数据'的方法;

当触发2时,要调用'提交新td数据'的方法;

而这些方法,每个td都要有,那只能是在生成dom的时候就绑定这些相关的方法了。

换个视角,更抽象一些来看待这些方法,

可以把它们暂且当成“回调”来看待,

就是“发生了什么之后,做什么”的方法。

在以前,这些方法基本都是命令式的,就是所谓的写死在js中。

但现在以ng\vue\react等为代表的这些框架,它们的大方向都是把命令式的dom操作变为“配置式”的。

就是你希望某个东西生成之后,它有什么方法可以用,那么都是写在这个组件之外的相关的config的配置项之中的。

就这样,

<script type="text/javascript">
 var config = {
 callback:{
 a:function(){
 console.log('a')
 },
 b:function(){
 console.log('b')
 },
 c:....
 }
 }
 new 组件().set( config );
 </script>

xMind图中的结构已经画的差不多了,

接下来可以写一些js来体现思路。

咱们的组件在生成之后,必然要有一个在页面上的“落脚点”,

那么就是要有一个div做为初始的组件容器,

<script type="text/javascript">
 var config = {
 el:"#idname",
 table:[3,4], //3行4列
 title:['a','b','c','d']
 }
 new TableObj(config);//初始化时
</script>

<!-- js 在new 的过程中只做了三件事

1,创建一个新对象

3,将这个新对象的 proto 指向 构造函数的 prototype 成员对象

4,将 构造函数的 this 指针 指向 这个新创建的对象 -->

////////

接下来设计它的代码的结构,在使用的时候肯定是要new一个对象出来,

所以它得有一个构造器,

<script type="text/javascript">
 function TableObj( _config ){
 <!--  -->
 this.mounting = function..
 this.updating = function..
 this.unmounting = function..
 this.init(_config);
 }
 TableObj.prototype = {
 init:function( _con ){
 createTable( _con.table )
 }
 createTable:function(){
 }
 }
</script>

今天主要是跟大家讲一下,如何去构思一个组件。刚开始的时候肯定是没什么想法,多想多思考,慢慢的就会有想法啦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档