美文网首页
JavaScript模块化编程

JavaScript模块化编程

作者: Vincent_Jiang | 来源:发表于2017-03-30 16:01 被阅读12次

常见写法

  • 代码量少的情况下倒是无所谓,一单代码量大,全局变量变量名容易冲突。
  • 方法之间没有明显的关系
<script  type="text/javascript">
  function open(){ ... }
  function close(){ ... }
</script>

对象写法

  • 将相关的方法封装为一个对象
  • 通过方法链调用,如:module.open();
  • 会暴露全部内部成员,外部代码可以改变内部变量的值,如:module._count = -1
<script  type="text/javascript">
  var module = new Object({
    _count: 0,
    function open(){ ... },
    function close(){ ... }
  });
</script>

立即执行函数写法

  • console.info(module._count); //undefined
<script  type="text/javascript">
  var module = (function(){
    var _count = 0;

    var open = function(){};
    var close = function(){};

    return {
      open: open,
      close: close
    }
  })();
</script>

放大模式

  • 一个模块很大,必须分成几个部分
  • 一个模块需要继承另一个模块
  • module 模块添加了一个新方法 open(),然后返回新的 module 模块
<script  type="text/javascript">
  var module = (function (mod){
    mod.open = function(){ ... };
    return mod;
  })(module);
</script>

宽放大模式

  • 无法知道哪个部分会先加载
  • 第一个执行的部分有可能加载一个不存在空对象
  • 立即执行函数 的参数可以是空对象。
<script  type="text/javascript">
  var module = (function (mod){
    mod.open = function(){ ... };
    return mod;
  })(window.module || {});
</script>

输入全局变量

  • 模块内部最好不与程序的其他部分直接交互
  • 为了在模块内部调用全局变量,必须显式地将其他变量输入模块。
<script  type="text/javascript">
  var module = (function ($, YAHOO){
    ...
  })(jQuery, YAHOO);
</script>

相关文章

网友评论

      本文标题:JavaScript模块化编程

      本文链接:https://www.haomeiwen.com/subject/qtkpottx.html