当前位置:首页 > 日记 > 正文

理解Javascript模块化开发

理解Javascript模块化开发
小A是一个创业团队的前端工程师,负责项目的Javascript程序。

全局变量冲突

根据自己的经验,小第一得出一些常用函数和写功能为公共文件base.js:

复制代码代码如下所示:

var = { _

$:功能(ID){ return document.getelementbyid(ID);},

getcookie:功能(关键){…},

setcookie:功能(键,值){…}

};
小的这些功能都放在_对象,以防止过多的全局变量冲突造成的。他告诉其他的团队成员,如果有人想使用这些功能,只是介绍base.js。

C是一个很小的一个同事,他报了一个:自己的页面介绍了一种叫做Underscore.js图书馆和图书馆将占据_全局变量,那么它将在_冲突base.js。小思想,Underscore.js是第三方类库,估计是不好的,但base.js已分散在许多页,这是不可能改变的。最后,小A改变了全局变量的Underscore.js占领。

在这一点上,小A发现将函数放在一个名称空间中可以减少全局变量冲突的概率,但不能解决全局变量冲突问题。

依靠

随着业务的发展,小编写了一系列的函数库和UI组件,例如,标签交换组件tabs.js。这个组件需要在util.js叫base.js和功能。

一天,一个新同事,小D,和一个小的一个反映,他们在网页中引用tabs.js,但功能不正常。小的看问题,原来的小D不知道tabs.js取决于base.js和util.js,他没有把这两个文件的参考。所以他立即改变了:

复制代码代码如下所示:

然而,功能不正常,此时小教训小D说:都说是依赖,依赖,必须放在独立的一面啊。原来,小D把base.js和util.js到tabs.js。

没想到,他是作者,他自然知道这个组件的依赖性,但很难说,尤其是新来的人。

After a while, small A adds functionality to the label switching component, and in order to achieve this function, tabs.js needs to call the functions in the ui.js.At this point, little A found a serious problem, and he needed to add a reference to the ui.js on all the pages that called the tabs.js!!!!

过了一会儿,小的优化tabs.js,不再依赖util.js。所以他取消util.js参考使用tabs.js提高性能的所有网页。他大赚了一笔,而试验组,毫米,告诉他一些页面是不正常的。作为一个小的,我突然意识到,一些页面的其他功能util.js使用的功能,和他做了一个错误删除的文件的参考,以确保功能正常,他继续代码。

小A也认为,有没有一种方法可以修改依赖关系,而不是一个接一个地修改页面,也不会影响其他功能

模块化

当一小部分人在互联网上走动时,无意中发现了一种新的模块化编码方法,可以解决以前遇到的所有问题。

在模块化编程,每个文件是一个模块,每个模块是由一个函数名定义。例如,在base.js转化成一个模块,代码将这:

复制代码代码如下所示:

定义(函数(需求,导出,模块){)

出口。$ =功能(ID){ return document.getelementbyid(ID);};

exports.getcookie =功能(关键){…};

exports.setcookie =功能(键,值){…};

});
base.js所提供的接口添加到对象的出口。出口是一个局部变量,以及整个模块的代码不占半全局变量。

如何调用模块提供的接口在tabs.js,例如,它取决于base.js和util.js:

复制代码代码如下所示:

定义(函数(需求,导出,模块){)

无功_ =需要(js),利用=需要('util .js);

无功div_tabs = _美元('tabs);

…其他代码。

});
一个模块可以被其他模块的接口,通过局部功能的要求。此时,_变量和公用事业是局部变量,以及变量名完全是由开发商控制的,如果你不爱_,它也可以用于基地:

复制代码代码如下所示:

定义(函数(需求,导出,模块){)

VAR方法=需要(js),利用=需要('util .js);

无功div_tabs =基础。$('tabs);

…其他代码。

});
一旦你已经删除和添加util.js ui.js,你可以修改tabs.js。

复制代码代码如下所示:

定义(函数(需求,导出,模块){)

VAR方法=需要(js),界面要求('ui .js);

无功div_tabs =基础。$('tabs);

…其他代码。

});
装载机

由于缺乏对浏览器的本地支持,如果我们要以模块化的方式进行编码,我们必须帮助使用一种叫做加载程序(加载器)的东西。

目前装载机实现,如require.js和seajs,jraiser类库也有自己的装载机。

相关文章

如何用单词做日历

如何用单词做日历

如何用,单词,日历,电脑软件,第一次启动Word,创建一个新文件并选择日历模板。注意,这里的建筑物都必须通过文件菜单,在新,,指挥,和新的文件不能使用按钮在快捷工具栏选择萧边使用Office 2010。如果您使用Office 2007,您需要单击Word界面左上角的Off…

2015个恋人签名的短句

2015个恋人签名的短句

短句,恋人,电脑软件,穿一件衣服去接你 等待你的婚纱 它是什么感觉 你害怕黑暗和光明是Ta吗 我是国王很久了。 很久以后我的心在后面。 你不要问,我希望你和明欣科谷 你不想毫无悔意地和我疯狂 有一个叫Yue Yan的臭女佣。 有一个叫Zhiyuan的…

2015最新伤感签名

2015最新伤感签名

伤感,最新,电脑软件,最后牵着你的手是在梦里,我会筋疲力尽。 我认为这是恋人的人走茶凉。 学会忍受如何放手。 抱着一个不懂得珍惜你的人是必要的。 我以为那是一百年后的纯真爱情。 回忆打破了思想,废墟的记忆。 你只是在战斗。我喜欢你。 …

经典伤感经典签名

经典伤感经典签名

经典,伤感,电脑软件,以下是《经典情感经典人物签名》的全部内容,由您编写。如果您喜欢小编辑器的建议,请继续关注它。 人都有来世,如果今生不能在一起,下辈子,上天就会派一个人来代替他/她。 因为我有一个梦想,所以我会难过,所以你会是一个背叛。 …

如何用文字制作灯笼

如何用文字制作灯笼

文字,如何用,电脑软件,中国的灯笼,灯笼,起源于1800多年前的西汉时期,在每年的元宵节是中国农历的第一个月的第十五天之后,人们挂起红灯笼象征着团圆的意义,营造节日气氛。后来灯笼就成了中国人的庆典的象征。这里有一种方法可以用文字做一个灯笼…

非主流个性签名非主流签名2015qq荒

非主流个性签名非主流签名2015qq荒

非主流,荒凉,个性签名,电脑软件,qq,和你一起走到最后一个人的人往往是你想象不到的人。 爱是俘虏的爱,但要保留它。 从那以后的所有道路上 记住我的名字和我带给你的故事 你还欠我一句对不起,但我不会再说了。 我是疯子疯子,只爱你疯了,你是傻…

PHP使用strtotime计算两个日期之间

PHP使用strtotime计算两个日期之间

日期,计算,天数,两个,电脑软件,本文阐述了如何用PHP strtotime计算两个日期之间的天数。分享给你供你参考。具体分析如下: PHP strtotime函数用来分析日期和时间的任何英文文本描述为Unix时间戳。这个函数如果使用TZ环境变量,来计算时间。如…

如何用Word制作条形码

如何用Word制作条形码

条形码,如何用,电脑软件,Word,条形码(条形码)是一个图形标识用于在多个黑条和不同宽度的空格表示一组信息,有一定的编码规则一致。条形码可以标出商品的生产厂家、产品名称、生产日期、册数、邮件起止地点、类型、日期等信息,并广泛应用于商品…

PS做漂亮的格子

PS做漂亮的格子

格子,漂亮,电脑软件,PS,以下萧边为你详细说明如何使用PS制作漂亮的格子背景的教程,教程比较基础,但是很实用,因为一个好朋友,找不到一个好的背景能学得来的,希望对你有帮助。 亲,还是找不到好的背景和悲哀,来这里,自己动手,然后不用找一个好的背景和…

ps中最容易犯的9个错误

ps中最容易犯的9个错误

错误,最容易,电脑软件,ps,每一次的更新和升级PS图象处理软件,PS的新版本会发现提供了很多图像处理的新功能,这些新功能可以帮助你快速的完成你的工作,提高你的工作效率。 每一次的更新和升级PS图象处理软件,PS的新版本会发现提供了很多图像处…

PHP实现了插入数组而不影响原始顺

PHP实现了插入数组而不影响原始顺

方法,数组,而不,顺序,实现了,本文演示了PHP实现插入数组的方法,但不影响原始的顺序,供大家参考,具体实现方法如下: 功能array_intsort($array,$num){ array_right美元=美元array_left =阵(); 长度=计数(数组); 如果($ array_unshift($array,$num); 返回数组; …

2015心痛QQ个性签名

2015心痛QQ个性签名

心痛,个性签名,电脑软件,QQ,这2015个心痛QQ个性签名是一个专门为你安排的小编辑,希望对你有所帮助! 多年以后,我会有一个温暖的家庭,即使我不知道未来的爱人是否是我17岁时爱的人。 从何时开始,我在心里没有位置。 给我一个空白,但是找不到地址。…