前端组件化思想理解

一、组件化思想概念

1. 思想背景

1.1业务场景
在做一次项目需求开发的过程中,涉及到动态创建多个条件区域,对于每个单独的条件区域,分为左边表格数据区和右边勾选左边表格某些数据行的区域。具体到左边表格数据区,包括一个通过用户输入的某个条件来查询数据,以一个表格分页的形式展示出来。其中这个表格里面包括复选框,可以选择表格中的某些项,然后右边区进行展示。
1.2最开始想的笨办法
因为这个需求是在原有基础上进行开发,平时的思维就是在既有的这个页面的js中进行代码开发。但是在开发过程中,并不是那么理想。因为这个“生成条件”区域是通过+ -按钮来动态添加删除某个条件区域。对于一级品类,二级品类等这些条件选项时,这时候需要展示这个条件选项下的所有数据,然后通过勾选表格中的某一行来达到填写条件值的目的。所以在这种情况下,通过+按钮会产生很多个条件区域。每个条件区域中包含自己的数据表格,自己的勾选表格某些项(条件值)。当时的想法是在添加按钮的事件监听函数中,获取所需要的数据然后将数据render到事先写好的模板中(此次项目中使用art-template模板)。但是这时候涉及到分页,所以需要初始化分页插件(项目中有现成的pager插件),但是这时候将创建好的这个分页插件挂载到哪里呢?想当然的将其挂载到这个页面的js对象上。这时候表格数据及其分页渲染好了,但是表格上的绑定事件也能绑定(将刚才使用art-template模板的渲染方法返回这个区域的jQuery对象,将其事件绑定在这个jQuery父级对象上,好像看起来现在行得通)。通过+添加一个条件区域时没问题,但是创建多个的时候,你就得考虑相互之间的独立性,数据之间及事件监听函数不能相互影响。所以多个分页插件需要挂载到这个页面的js对象上的不同变量上,这时候想来做起来都很麻烦,这是一方面,另一方面,也涉及到性能的开销。我做到这里的时候,感觉很复杂也很苦恼。
1.3便捷解决办法
当你发现需要创建多个相同业务场景的情况下,应该考虑JavaScript中的面向对象。开发一个公共的对象,也可以说是抽离一个小小的组件。这时候你就可以创建不同的对象实例,相互之间也不会影响。这时候将一个业务场景涉及到的条件区域数据渲染,事件绑定等囊括到一个公共的对象里面。这时候你仅仅需要传入不同的数据及jQuery对象即可。不同的数据和jQuery对象就是面向对象中的属性。分页插件也只需要绑定到不同的jQuery对象上即可,ajax异步获取数据等这些也可以封装到一个对象里。不同的对象实例对应一个+按钮添加的一个条件区域。不同对象实例之间不会相互影响。这就解决了。

这时候才发现JavaScript中面向对象的重要性。想到这里,觉得更有必要去看一下JavaScript的设计模式。组件化的思想并不是凭空想象出来的,而是通过不同的业务场景,不断的实践经验,这时候才会形成组件化思想。

原文地址:https://www.cnblogs.com/sminocence/p/11215037.html

时间: 2024-10-12 12:18:06

前端组件化思想理解的相关文章

使用前端组件化思想修改todolist

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compat

谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ...... 每个频道有独立的团队去维护这些代码,具体到某一个频道的话有会由数十个不等的页面组成,在各个页面开发过程中,会产生很多重复的功能,比如弹出层提示框,像这种纯粹非业务的UI,便成了我们所谓的UI组件,最初的前端组件也就仅仅指的是UI组件. 而由于移动端的兴起,前端页面的逻辑已经变得很重了,一个页面的

2015前端组件化框架之路(转)

https://github.com/xufei/blog/issues/19 1. 为什么组件化这么难做 Web应用的组件化是一个很复杂的话题. 在大型软件中,组件化是一种共识,它一方面提高了开发效率,另一方面降低了维护成本.但是在Web前端这个领域,并没有很通用的组件模式,因为缺少一个大家都能认同的实现方式,所以很多框架/库都实现了自己的组件化方式. 前端圈最热衷于造轮子了,没有哪个别的领域能出现这么混乱而欣欣向荣的景象.这一方面说明前端领域的创造力很旺盛,另一方面却说明了基础设施是不完善的

2015前端组件化框架之路

特别声明:本文转自@民工精髓的<2015前端组件化框架之路>.谢谢@民工精髓的分享!著作权归作者所有. 编辑推荐: 掘金是一个高质量的技术社区,从 CSS 到 Vue.js,性能优化到开源类库,让你不错过前端开发的每一个技术干货. 点击链接查看最新前端内容,或到各大应用市场搜索「 掘金」下载APP,技术干货尽在掌握中著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.原文: http://www.w3cplus.com/components-in-webapp.html ? w

【转】前端组件化框架之路

1. 为什么组件化这么难做 Web应用的组件化是一个很复杂的话题. 在大型软件中,组件化是一种共识,它一方面提高了开发效率,另一方面降低了维护成本.但是在Web前端这个领域,并没有很通用的组件模式,因为缺少一个大家都能认同的实现方式,所以很多框架/库都实现了自己的组件化方式. 前端圈最热衷于造轮子了,没有哪个别的领域能出现这么混乱而欣欣向荣的景象.这一方面说明前端领域的创造力很旺盛,另一方面却说明了基础设施是不完善的. 我曾经有过这么一个类比,说明某种编程技术及其生态发展的几个阶段: 最初的时候

Vue.js的组件化思想--下

Vue.js的组件化思想--下 一.组件间的通信        组件实例的作用域是孤立的:这意味着不能并且不应该在子组件的模板内直接引用父组件的数据.但是父子组件之间需要通信:父组件要给子组件传递数据,子组件需要将它内部发生的事情告知给父组件.          在 Vue.js 中,父子组件的关系可以总结为 props down, events up .父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息.如下图所示: 二. Prop - 父组件传递数据给子

如何通过 Vue+Webpack 来做通用的前端组件化架构设计

如何通过 Vue+Webpack 来做通用的前端组件化架构设计 转载 作者:伯乐在线专栏作者 - 新空气 链接:http://web.jobbole.com/86977/ 点击 → 了解如何加入专栏作者 目前如果要说比较流行的前端架构哪家强,屈指可数:reactjs.angularjs.emberjs.avalonjs.vuejs. 我个人接触使用过:avalonjs.angularjs.vuejs.因为工作以及前端团队能力的问题,所以在不同的公司,在开发工作中选用了不同的前端架构. 以下仅仅是

前端组件化的理想设计模式“MVVM”

前言: 最近在工作中发现我们前端没有一个系统的体系去支撑,产生很多不必要的代码冗余,一些公共的视图模块重复开发,导致开发效率下降,最让我郁闷的是,前端开发好的静态页面给java开发去做业务逻辑处理,会彻底的把我们开发的页面结构改的惨目忍睹.这样的形式做项目在不去想点子优化做法,真不是个合格的程序员. 前端组件化: 前端组件化,这个最近在业界被传的沸沸扬扬,像谷歌这样的大公司都针对这个主题推出了前端框架Polymer,而facebook则提倡去框架化,推出了react.js库.

Vue.js的组件化思想--上

Vue.js的组件化思想--上 一.Vue中的组件 Vue视图层的灵魂 -  组件化 组件(Component)是 Vue.js 最强大的功能之一: 组件可以扩展 HTML 元素,封装可重用的代码: 在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 二.全局组件的创建和注册  全局组件-步骤:1.创建组件Vue.extend(),指定组件的名称--2.注册组件Vue.component()--3.