前端模块化

1 篇文章 0 订阅
1 篇文章 0 订阅

前端中有几个需要深入理解的重要知识点,比如语义化,模块化,作用域,原型链,继承和面向对象等问题,今天我们先来整理下前端模块化问题。模块化是为了将实现特定功能的代码文件封装在一起,有了模块可以更方便地使用别人的代码,需要什么功能,加载什么模块。模块开发需要遵循一定的规范不然会乱套。

1. 函数封装:

function setAttribute( name, value){ }

函数封装,将程序中设计的变量,语句进行封装,来执行某尔特定功能,比如说上面这个函数,就是完成给属性赋值的功能,在需要使用这个功能时,就调用该函数即可。

  缺点:污染了全局变量,可能会与其他模块发生命名冲突,且模块成员之间没什么联系。


2. 对象

  var myModule={
                var1 :1;
                var2: 2;
                function fn1(){}
                function fn2(){}
}
在javascript中没有类,但是也有和类具有相似功能的,那就是对象,这样在引用的时候,myModule.fn2(); 这样避免了变量污染,只要保证模块名唯一即可,同时同一模块内也有了关系。但是也有缺陷,外部可以随意修改内部成员,这样会产生安全问题:
 myModule.var1= 100;

3. 立即执行函数
可以通过立即执行函数,来达到隐藏细节的目的
var myModule = (function(){
var var1 = 1;
var var2 = 2;
function fn1(){}
function fn2(){}
return {fn1: fn1,fn2: fn2};})();
这样模块外部就无法修改没有暴露的内部数据、函数
上述做法就是模块化的基础,目前,通行的JavaScript模块规范主要有两种:CommonJSAMD
立即执行函数:
    function fn(){}();  //这样书写不行,因为function fn(){}部分是一个声明,需要有解析器比如eval()来执行,所以后面的()不会执行
只要把声明变成表达式即可。常见的有用括号括起来:
    (function fn(){})();  //等价于下面的
    var foo=function fn(){};
    foo();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值