我所知道的前端组件化与模块化

序言:组件化?模块化?这都是什么鬼?这是最初看到这2个新名词的反应。随着时间的推移,似乎、可能、大概明白了一点,于是想说说自己的理解(仅仅是自己的理解)

一、组件化

忘记什么时候看到这个词的了,由于用过bootstrap的前提下(一下简称BS),当时第一反应是这样的,组件化不就是像BS那样把html拆分为:按钮组、栅格系统、导航组等等N多个组件,用的时候直接用BS提供class不就行了吗?
当然简单可以这么理解,但是跟深层次的理解应该是这样的,如你看到的一个html源码可能是这样的:

<body >
<top-header></top-header>
<common-content></common-content>
<top-footer></top-footer>
</body>

很多人咋一看可能回想,这tm是html标签吗?当然不是,只是自定义的组件标签,通过第三方去处理,好处就是互相不影响,用谁放谁,不用拿走,维护起来和多人协作更方便。

二、模块化

前端模块化更确切的说应该是javascript的模块化,其实就是一些功能以及业务逻辑的封装,比如之前一个小例子:鼠标悬停出现下拉框与鼠标悬停切换(具体参看之前一篇:如何巧妙的用面向对象封装常用效果)

function Overitem(option){
this.init(option);
}
Overitem.prototype={
init:function(option){
var _self=this;
_self.btn=document.getElementById(option.btn)||'';
_self.item=document.getElementById(option.item)||'';
_self.addclassname=option.addclass;
//2.0 绑定事件
_self.btn.onmouseover=_self.showitem.bind(_self);
_self.btn.onmouseout=_self.hideitem.bind(_self);
},
//2.1 定义事件
showitem:function () {
//如何让this指向new Overitem;,在调用的时候用bind把this绑定上去
this.btn.className=this.addclassname;
this.item.style.display='block';
},
hideitem:function () {
//如何让this指向new Overitem;,在调用的时候用bind把this绑定上去
this.btn.className='';
this.item.style.display='none';
}
};
function Tabitem(option){
this.init(option);
}
Tabitem.prototype={
init:function(option){
var _self=this;
_self.btn=document.getElementsByClassName(option.btn)||'';
_self.item=document.getElementsByClassName(option.item)||'';
for(var i=0;i<_self.btn.length;i  ){
_self.btn[i].index=i;
_self.btn[i].onmouseover=function(){
for(var j=0;j<_self.item.length;j  ){
_self.btn[j].className=option.btn;
_self.item[j].className=option.item;
}
_self.btn[this.index].className=option.btn ' ' option.btnaddclass;
_self.item[this.index].className=option.item ' ' option.itemaddclass;
//console.log(this);
//console.log(_self);
            };
}
}
};

这就是2个简单的功能模块,用谁new谁互不干扰,即使有n多个,与外界的桥梁就是所传的参数。说的不够仔细,但或多或少能理解一点- -

想了解更多请移步:组件化、模块化

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于通过反汇编查看dll的方法【转】(

关于通过反汇编查看dll的方法【转】( http://blog.sina.com.cn/s/blog_51a3c0380100f9md.html 今天想看一个dll的内容&#xff0c;苦于没有相关工具&#xff0c;从csdn上找到有这么段文字&#xff0c;收益匪浅啊&#xff0c;收藏&#xff01; 可以通过反汇编来知道接口函数的参…

openocd安装与调试

环境&#xff1a; 硬件&#xff1a;PC机<------>ARM仿真器v8.00<------>已下载好bit流的Xinlinx SoC开发板&#xff08;其上有arm cortex-a9核&#xff09; 软件&#xff1a;Redhat Linux6&#xff08;或虚拟机&#xff09; openocd 使用openocd下载程序&#xff…

在React中获取数据

React初学者经常从不需要获取数据的应用开始。他们经常面临一个计数器&#xff0c;任务列表获取井字棋游戏应用。这是很好的&#xff0c;因为在开始学习React的时候&#xff0c;数据获取在你的应用中添加了另一层复杂度。 然而&#xff0c;有些时候你想要从自己的或者第三方AP…

使用Project Lombok减少Java应用程序中的样板代码

对Java编程语言最常提出的批评之一是它需要大量的样板代码 。 对于简单的类尤其如此&#xff0c;该类只需要存储一些值就可以。 您需要这些值的getter和setter&#xff0c;也许您还需要一个构造函数&#xff0c;覆盖equals&#xff08;&#xff09;和 hashcode&#xff08;&am…

DOM之城市二级联动

1、HTML内容 <select id"province"><option>请选择</option><option>山东省</option><option>吉林省</option><option>上海市</option></select><select id"city"><option>请选择…

跳转指令-JMP

page 60,132TITLE A0405Jump(EXE) JMP跳转指令.MODEL SMALL.STACK 64.DATAORG 100H ;规定程序的起始地址A10MAIN PROC NEARMOV AX,00MOV BX,00MOV CX,1A20: ADD AX,01ADD BX,AXSHL CX,1 ;左移一位JMP A20 ;跳转到A20A10MAIN endp jmp格式 [label:] jmp short/near/far/address…

java输出毫秒时间

SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");// 输出字符串System.out.println(df.format(new Date()));转载于:https://www.cnblogs.com/longchang/p/11139947.html

Three.js制作360度全景图

这是个基于three.js的插件&#xff0c;预览地址&#xff1a;戳这里 使用方法&#xff1a; 1、这个插件的用法很简单&#xff0c;引入如下2个js <script src"js/three.min.js"></script><script src"js/photo-sphere-viewer.min.js">&l…

C++资源库不完全版本

http://www.360doc.com/content/10/0414/20/59141_23072568.shtml boost graph...转载于:https://www.cnblogs.com/seon/archive/2011/08/08/2131246.html

babel6和babel7中关于polyfill和preset-env和babel-plugin-transform-runtime等总结

记录自己零散的收获&#xff0c;随笔。 一些基础 babel的作用是转换JS新的特性代码为大部分浏览器能运行的代码。 babel转码又分为两部分&#xff0c;一个是语法转换&#xff0c;一个是API转换。 对于API的转换又分为两部分&#xff0c;一个是全局API例如Promise&#xff0c…

十六、CI框架之数据库操作get用法

一、使用数据库的Get方法读取内容&#xff0c;如下代码&#xff1a; 二、数据库如下&#xff1a; 二、效果如下&#xff1a; 转载于:https://www.cnblogs.com/tianpan2019/p/11141809.html

使用Spring Boot和Spring MVC自定义HttpMessageConverters

为Spring Boot应用程序或直接的Spring MVC应用程序公开基于REST的终结点很简单&#xff0c;以下是一个控制器&#xff0c;该终结点公开了一个终结点&#xff0c;用于基于其发布的内容创建实体&#xff1a; RestController RequestMapping("/rest/hotels") public cl…

JS如何禁止别人查看网站源码

四种查看路径&#xff1a; 查看效果&#xff1a;猛戳 1、直接按F12 2、Ctrl Shift I查看 3、鼠标点击右键查看 4、Ctrl uview-source: url 把以上三种状态都屏蔽掉就可以了&#xff0c;document有onkeydown(键盘按键事件)&#xff0c;该事件里面找到对应的keycode并处理就…

JS相关知识总结(一)

总结下这段时间吸收的许多小知识&#xff0c;以备忘记后翻阅。 关于面向对象 面向对象特征&#xff1a; 具有唯一标识性具有状态具有行为 JS的面向对象和JAVA的实现思路不一样&#xff0c;JS是基于原型并非基于类。但是JS为了看起来更像JAVA&#xff0c;为此添加了一些特性…

WCF系列(二) -- 使用配置文件构建和使用WCF服务

当然&#xff0c;配置一个ServiceHost除了上面说的完全使用代码的方式&#xff0c;更好的方式是使用配置文件&#xff0c;把一些可能需要修改的属性跟代码分离&#xff0c;放到配置文件中&#xff0c;这样可以提供服务配置的灵活性&#xff0c;也更容易维护。 看看前面那个不用…

java读取文件方法

一、多种方式读文件内容。1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容 Java代码 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOExcept…

如何使用github搭建个人博客

1、去github官网注册个人帐号&#xff1a;没有的&#xff1a;猛戳这里去注册&#xff0c;比如我的账户名&#xff1a;wjf444128852&#xff0c;我的已经汉化(可在github里搜索github如何汉化有插件) 2、点击仓库-新建&#xff0c;仓库名字必须是&#xff1a;你的github帐号.git…

Spring Boot和Spring Data REST –通过REST公开存储库

使用Spring Boot和Spring Data REST&#xff0c;通过REST公开Spring Data存储库非常容易。 使用最少的代码&#xff0c;您可以创建遵循HATEOAS原理的JPA实体的REST表示。 我决定重用Spring PetClinic的JPA实体&#xff08;业务层&#xff09;作为本文的基础。 应用基础 PetCli…

记录一次cookie导致登录失败的惨案

现象描述&#xff1a; 前端登录成功后并没有从后端那里拿到登录信息&#xff0c;换句话说登录服务告诉我们登录成功了&#xff0c;但是后端却说我们没有登录成功。 背景&#xff1a; 因为前后端分离&#xff0c;所以前后端项目部署在两个子域名下。 因为要打通登录态&#…

sql中的遇到的有问题的

----题5&#xff1a;求出住在同一城市的顾客对--select city,count(cid) as 顾客的个数 from customers group by city--select --select distinct c1.cname,c2.cname,c1.city from customers c1, customers c2 where c1.cityc2.city and c1.cname<c2.cname select c1.cid,c…