`
jobar
  • 浏览: 346902 次
  • 性别: 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();
});
分享到:
评论

相关推荐

    MooCSS模块化面向对象的css写法

    MooCSS源于JavaScript的模块化和面向对象编程理念,它将CSS设计为一系列独立、可重用的组件,每个组件都有自己的结构、样式和行为。通过这种方法,开发者可以像构建软件对象一样构建网页元素,使得CSS代码更加有序且...

    js命名空间和闭包

    在许多面向对象的编程语言中,命名空间是一种组织和隔离全局变量的机制,以避免命名冲突。然而,JavaScript并没有原生支持命名空间,但它可以通过模拟实现,常见的方法有对象字面量、立即执行函数表达式(IIFE)和...

    JavaScript面向对象编程

    在JavaScript中,我们可以使用IIFE(立即执行函数表达式)、命名空间、CommonJS、AMD(RequireJS)或ES6的`import`和`export`来实现模块化,以避免全局变量污染和代码复用。 8. 闭包: 闭包是一种特性,允许函数...

    JavaScript面向对象编程指南.pdf

    在大型项目中,为了避免全局命名冲突,可以使用模块化和命名空间来组织代码。 ```javascript // person.js export class Person { constructor(name, age) { this.name = name; this.age = age; } sayHello()...

    javascript面向对象教程

    6. **模块和封装**:虽然JavaScript原生不支持模块系统,但可以通过立即执行函数表达式(IIFE)和命名空间等技术实现模块化和封装。 7. **鸭子类型**:JavaScript倾向于“鸭子测试”而非静态类型检查,如果对象的...

    js面向对象

    在JavaScript中,面向对象编程(Object-Oriented Programming, OOP)是组织代码的重要方式,它提供了创建可复用、模块化和易于维护的代码结构的手段。下面将详细阐述与"js面向对象"相关的知识点。 1. **对象与属性*...

    Javascript 面向对象 命名空间

    总结来说,JavaScript的面向对象编程中命名空间的创建和使用是一个重要的编程技巧,它可以帮助我们更好地组织代码、避免命名冲突,并且通过模拟的方式实现类似Java或.NET中命名空间的功能。在实际项目开发中,合理...

    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面向对象

    1. **代码组织**:合理组织代码结构,比如通过模块化方式组织代码,使用命名空间避免全局变量污染。 2. **测试**:建立良好的测试体系对于保证代码质量至关重要。例如使用单元测试框架(如Jest、Mocha等)来验证代码...

    JavaScript 面向对象之命名空间

    所以,在现代JavaScript开发实践中,通常会推荐使用更为安全的模块化技术,如ES6中的模块(module)导入导出(import/export)功能,来管理命名空间和代码的模块化。 总结来说,JavaScript中的命名空间可以有效地...

    JavaScript面向对象编程指南

    7. **模块化**:为了提高代码的可维护性和可重用性,JavaScript提供了模块系统,如CommonJS(Node.js)和ES6的导入导出语法。模块可以帮助组织代码,减少全局命名空间的污染。 8. **设计模式**:面向对象编程中有...

    js中的面向对象入门

    总体而言,JavaScript的面向对象编程提供了一种灵活的编程模式,使得开发者能够创建更加模块化和易于维护的代码。通过使用单例模式、工厂模式、构造函数模式和原型模式等不同的设计模式,开发者可以更好地组织代码...

    javascript面向对象技术基础

    在JavaScript中,可以使用立即执行函数表达式(IIFE)、命名空间、CommonJS(Node.js中)或ES6的模块系统(import/export)来实现代码的模块化。 10. **类(Class)语法** ES6引入了类(Class)的语法糖,使得...

    怎么理解js的面向对象编程共9页.pdf.zip

    面向对象编程的一个重要目标是模块化,JavaScript中可以使用命名空间、立即执行函数表达式、CommonJS(Node.js中)、ES6模块等方法实现模块化,以避免全局变量污染和代码冲突。 8. **类(Class)语法**: ES6引入...

    EXT dojochina Ext命名空间别名.rar

    EXT JS是一个用于构建富客户端Web应用程序的JavaScript库,它提供了一种模块化、面向对象的方式来组织代码,其中命名空间就是这个体系中的关键组成部分。 在EXT JS中,命名空间是通过类(Class)的层次结构来实现的...

    oj一个面向对象的Web模板

    在Web模板系统中,面向对象的实现可能包括定义模板类、继承、封装和多态等概念,使得模板更加模块化和易于扩展。 【标签】"JavaScript开发-模板引擎"揭示了这个模板系统是使用JavaScript语言构建的,并且主要用于...

    面向对象的JavaScript基础.pdf

    在JavaScript中实现面向对象编程,还需要理解其他概念,如封装(隐藏对象的内部细节,提供公共接口访问)、多态(不同对象对同一消息的响应方式)以及模块化(组织代码,避免命名冲突和提高可重用性)。虽然...

Global site tag (gtag.js) - Google Analytics