zoukankan      html  css  js  c++  java
  • Js 模块化(一)

    ---恢复内容开始---

    基础模式

    匿名闭包

    匿名闭包是很常用的代码隔离方式,声明匿名对象并立即执行。匿名函数中声明的变量和方法以及匿名函数本身不会污染到函数体外,同时匿名函数的调用形成一个闭包,使函数体内可以使用函数体外声明的变量和方法。

    (function () {

        // ... all vars and functions are in this scope only

        // still maintains access to all globals

    }());

    全局导入

    我们知道 JavaScript 全局变量的作用域贯穿全局,在函数内也可以使用甚至声明全局变量,这样很容易导致代码混乱难以管理。

    全局导入模式是匿名闭包的一个变种,增加参数导入全局变量,约定在匿名函数内部只能通过导入的参数访问外部的模块,从而使模块间的依赖清晰,便于管理。

    (function ($, YAHOO) {

        // now have access to globals jQuery (as $) and YAHOO in this code

    }(jQuery, YAHOO));

    这种约定不能强制阻止函数体内部访问全局变量,其中一个解决方案是把所有的模块都使用这种方式处理,仅把模块本身导出到全局变量,这样就可以极大减少全局变量的使用。

    模块导出

    模块导出就是将立即执匿名函数的结果返回赋值给一个全局变量。匿名函数仅将开放的对象返回,其内部定义的变量、函数仍然对外部不可见。

    var MODULE = (function () {

    var my = {},

    privateVariable = 1;

    function privateMethod() {

    // ...

    }

    my.moduleProperty = 1;

    my.moduleMethod = function () {

    // ...

    };

    return my;

    }());

    进阶模式

    扩充模式

    JavaScript 对象支持热扩充,结合全局导入模式,我们可以将模块进行扩充。

    var MODULE = (function (my) {

    my.anotherMethod = function () {

    // added method...

    };

    return my;

    }(MODULE));

    这种模式假定 MODULE 已经声明过,如果没有声明调用会出错。

    ---恢复内容结束---

  • 相关阅读:
    利用XAF中的FeatureCenter例子的,直接打开DetailView
    XAF 应用程序模型基础[转]
    XAF 如何给記錄增加版本控制?
    Simpler way to Create a Custom User Control
    建议将小川同志免费租借给欧洲用30年[转]文/端宏斌
    第六集 MSF构思阶段项目团队的组建
    MS_HotFix
    C#域内远程机文件信息注册表访问。
    访问 远程机 盘符 设置
    Silk_ 运行时_控件_属性_捕捉.
  • 原文地址:https://www.cnblogs.com/love0o/p/5465648.html
Copyright © 2011-2022 走看看