`
jobar
  • 浏览: 340934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象的JS(5) 模块化和命名空间

    博客分类:
  • OOJS
 
阅读更多
模块化
一旦我们有很多自定义对象类型,我们需要对它们进行分组,并管理他们的可见性、依赖性和加载。命名空间和模块可以用来处理这些任务。(需要注意的是EcmaScript v6(Harmony)正在开发一个成熟的模块系统,由浏览器支持标准前我们也可以利用现有的一些库来实现这些功能。)
参考文章:http://www.sencha.com/blog/toward-modern-web-apps-with-ecmascript-6

1 命名空间
目前在JavaScript中没有直接的命名空间支持。我们可以通过创建对象并给对象属性填充对象类型来创建命名空间。
//create namespace
var myLib = {};
myLib.myPackage = {};
//Register types to namespace
myLib.myPackage.MyType1 = MyType1;
myLib.myPackage.MyType2 = MyType2;

2 模块化
模块化是将我们的JavaScript代码划分为包的一种方式。模块暴露某些对象类型定义且引入其他模块。模块系统加载每个模块及其依赖。首先它以适当的顺序运行依赖,然后执行模块代码。我们可以用一些库来实现。
在模块中,我们定义一些新类型,从其他模块引入一些类型并暴露公有类型。下面是一个模块定义的范例:
Module.define("module1.js", ["dependent_module1.js", "dependent_module2.js", ...
], function (dependentMod1, dependentMod2) { //
    //导入
    //TYPE DEFINITIONS
    function ExportedType1() {
        // use of dependent module’s types
        var dependentType = new dependentMod1.DependentType1();
            ...
    }

    function ExportedType2() {}
        ...
    //导出
    return {
        ExportedType1: ExportedType1,
        ExportedType2: ExportedType2,
        ...
    };
});
//使用
Module.use(["module1.js"], function (aModule) {
    console.log("Loaded aModule!");
    var AType = aModule.AnExportedType;
    var atype1Instance = new AType();
});
分享到:
评论

相关推荐

    关于Javascript模块化和命名空间管理的问题说明

    其实这还是和编码思想和代码管理的便利度相关(没有提及名字空间污染的问题是因为我相信已经考虑到模块化思想的编码者应该至少有了一套自己的命名法则,在中小型的站点中,名字空间污染的概率已经很小了,但也不代表...

    javascript的基础语法,面向对象的实现和设计模式实现

    6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery [jQuery][9] [jQuery架构设计与实现][10] [jQuery选择器库][11] [zepto][12] 1....

    非常好的javascript原理资源,分享出来.zip

    6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery [jQuery][9] [jQuery架构设计与实现][10] [jQuery选择器库][11] [zepto][12] 1....

    非常好的js项目资源,分享出来.zip

    6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery [jQuery][9] [jQuery架构设计与实现][10] [jQuery选择器库][11] [zepto][12] 1....

    JavaScript权威指南(第6版)(附源码)

    本书第6版涵盖了HTML5和ECMAScript5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合...

    JavaScript权威指南(第6版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    编写高质量代码-Web前端开发修炼之道.azw3

    4.4 模块化CSS——在CSS中引入面向对象编程思想 4.4.1 如何划分模块——单一职责 4.4.2 CSS的命名——命名空间的概念 4.4.3 挂多个class还是新建class——多用组合,少用继承 4.4.4 如何处理上下margin 4.5 低...

    JavaScript权威指南(第6版)(中文版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    JavaScript权威指南(第6版)中文版pdf+源代码

     9.6 JavaScript中的面向对象技术217  9.7 子类230  9.8 ECMAScript 5 中的类239  9.9 模块248  第10章 正则表达式的模式匹配253  10.1 正则表达式的定义253  10.2 用于模式匹配的String方法261  10.3 ...

    JavaScript 权威指南(第四版).pdf

     9.6 JavaScript中的面向对象技术217  9.7 子类230  9.8 ECMAScript 5 中的类239  9.9 模块248  第10章 正则表达式的模式匹配253  10.1 正则表达式的定义253  10.2 用于模式匹配的String方法261  10.3 ...

    JavaScript权威指南(第6版)中文文字版

    《JavaScript权威指南(第6版)》涵盖html5和ecmascript 5。很多章节完全重写,以便与时俱进,紧跟当今的最佳web开发实践。本书新增章节描述了jQuery和服务器端JavaScript。 本书适合那些希望学习WEB编程语言的初、...

    JavaScript权威指南(第六版) 清晰-完整

    9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则表达式的定义 10.2 用于模式匹配的String方法 10.3 RegExp对象 第11章 JavaScript的子集和扩展 ...

    JavaScript权威指南(第6版)

    《JavaScript权威指南(第6版)》涵盖html5和ecmascript 5。很多章节完全重写,以便与时俱进,紧跟当今的最佳web开发实践。本书新增章节描述了jQuery和服务器端JavaScript。 本书适合那些希望学习WEB编程语言的初、...

    JavaScript权威指南(第6版) 中文版

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    JavaScript王者归来part.1 总数2

     13.3.4 事件模块和事件类型   13.3.5 关于Event接口   13.3.5.1 Event接口的属性和方法   13.3.5.2 UIEvent接口的属性   13.3.5.3 MouseEvent接口的属性   13.3.5.4 MutationEvent接口   13.3.6 混合...

    JAVA医院挂号系统毕业设计源码+选题介绍+功能需求+技术要求分析等内容

    采用面向对象设计方法学,运用所学的面向对象分析设计方法,以及对应的工具对系统进行分析与设计建模;基于模块化编程思想,程序源文件应划分为相应package,组织层次清晰;遵循程序设计编码规范,标识符应命名规范...

    初始Nodejs

    可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类。最后node.js的出现才开始有...

    Curso-JS-para-desarrolladores-web_ed2:FICTIZIA»面向Web开发人员JavaScript课程-第二版

    面向对象的程序设计 样机 建设者 hasOwnProperty,porpertyIsEnumerable 致电申请 功能编程 模块化 回呼 事件驱动设计 JavaScript设计模式 建设者 模组 辛格尔顿 MVC 依赖注入 Backbone.js 单页应用 楷模 观看...

Global site tag (gtag.js) - Google Analytics