`
bellstar
  • 浏览: 150634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

qooxdoo--qx.Bootstrap类

阅读更多

概述:qooxdoo是一个构建在其自定义的类系统之上的框架,qx.Bootstrap类是在qooxdoo应用程序引导阶段创建基础类的类,并且qx.Bootstrap类在定义完后重新创建了它自己,以达到整体的统一。Bootstrap创建的类会被登记到它的$$registry这个Map中,创建类用define方法,它有两个参数,第一个为类名,第二个为类定义config,config的可选成员有member,construct,statics,defer(类定义后的回调)

Bootstrap
LOADSTART
$$registry
-------
createNamespace(name,obj)
define(name,config)
genericToString()
getByName(name)

 

/**
 * Create namespace
 * 创建命名空间
 */
qx =
{
  /**
   * Bootstrap qx.Bootstrap to create myself later
   * This is needed for the API browser etc. to let them detect me
   * 引导程序qx.Bootstrap在稍后创建自己
   * API浏览时必须引用
   */
  Bootstrap :
  {
    genericToString : function() {
      return "[Class " + this.classname + "]";
    },

    createNamespace : function(name, object)
    {
      var splits = name.split(".");
      var parent = window;
      var part = splits[0];

      for (var i=0, len=splits.length-1; i<len; i++, part=splits[i])
      {
        if (!parent[part]) {
          parent = parent[part] = {};
        } else {
          parent = parent[part];
        }
      }

      // store object 存储对象
      parent[part] = object;

      // return last part name (e.g. classname) 返回最后一个part名称(如类名)
      return part;
    },

	//define a Clazz with constructor or new Function
	//copy members to prototye of Clazz
	//copy statics to Clazz
	//assigns class full name to Clazz.classname
	//assigns class short name to Clazz.basename
	//assigns 'Class' to Clazz.$$type
	//Execute defer section
	//attachs toString method for Clazz
    define : function(name, config)
    {
      if (!config) {
        var config = { statics : {} };
      }

      var clazz;
      var proto = null;

      if (config.members)
      {
        clazz = config.construct || new Function;
        var statics = config.statics;
        for (var key in statics) {
          clazz[key] = statics[key];
        }

        proto = clazz.prototype;
        var members = config.members;
        for (var key in members) {
          proto[key] = members[key];
        }
      }
      else
      {
        clazz = config.statics || {};
      }

      // Create namespace
      var basename = this.createNamespace(name, clazz);

      // Store names in constructor/object
      clazz.name = clazz.classname = name;
      clazz.basename = basename;

      // Store type info
      clazz.$$type = "Class";

      // Attach toString 如果类无toString方法则给其加上
      if (!clazz.hasOwnProperty("toString")) {
        clazz.toString = this.genericToString;
      }

      // Execute defer section 执行延迟块
      if (config.defer) {
        config.defer(clazz, proto);
      }

      // Store class reference in global class registry
      // 存储类引用到全局类登记册
      qx.Bootstrap.$$registry[name] = config.statics;
    }
  }
};


/**
 * Internal class that is responsible for bootstrapping the qooxdoo
 * framework at load time.
 * 在载入时引导qooxdoo框架
 *
 * Automatically loads JavaScript language fixes and enhancements to
 * bring all engines to at least JavaScript 1.6.
 * 自动载入JavaScript修复和增强,使所有引擎至少支持到JavaScript1.6
 *
 * Does support:
 * 支持:
 *
 * * Statics 静态成员
 * * Members 成员
 * * Defer 延迟
 *
 * Does not support:
 * 不支持:
 *
 * * Custom extends 继承
 * * Super class calls 调用父类
 * * Mixins, Interfaces, Properties, ...|中文| 混入,接口,属性,...
 */
qx.Bootstrap.define("qx.Bootstrap",
{
  statics :
  {
    /** Timestamp of qooxdoo based application startup|中文|qooxdoo应用程序开始时间 */
    LOADSTART : new Date,


    /**
     * Creates a namespace and assigns the given object to it.
     * 创建一个命名空间并赋予一个给定的对象
     * Lightweight version of {@link qx.Class#createNamespace} only used during bootstrap phase.
     * qx.Class#createNamespace的轻量级版本,仅在引导阶段使用
     *
     * @internal
     * @param name {String} The complete namespace to create. Typically, the last part is the class name itself
     * @param object {Object} The object to attach to the namespace
     * @return {Object} last part of the namespace (typically the class name)
     * @throws an exception when the given object already exists.
     */
    createNamespace : qx.Bootstrap.createNamespace,


    /**
     * Define a new class using the qooxdoo class system.
     * 使用qooxdoo的类定义一个新类
     * Lightweight version of {@link qx.Class#define} only used during bootstrap phase.
     * qx.Class#define的轻量级版本,仅在引导阶段使用
     *
     * @internal
     * @signature function(name, config)
     * @param name {String} Name of the class
     * @param config {Map ? null} Class definition structure.
     * @return {void}
     */
    define : qx.Bootstrap.define,


    /**
     * This method will be attached to all classes to return
     * a nice identifier for them.
     * 返回类标识符,此方法会被附加到所有类
     *
     * @internal
     * @signature function()
     * @return {String} The class identifier
     */
    genericToString : qx.Bootstrap.genericToString,


    /**
     * Find a class by its name |中文|获取指定名称的类
     *
     * @param name {String} class name to resolve
     * @return {Class} the class
     */
    getByName : function(name) {
      return this.$$registry[name];
    },


    /** {Map} Stores all defined classes */
    $$registry : {}
  }
});
分享到:
评论

相关推荐

    前端开源库-qooxdoo-sdk

    在压缩包文件`qooxdoo-master`中,包含了Qooxdoo的源代码、文档、示例和开发工具。通过探索这些内容,开发者可以深入了解Qooxdoo的工作原理,学习如何利用其强大功能构建前端项目。对于希望提升JavaScript开发效率和...

    qooxdoo-qooxdoo-release_2_0_1

    在【标题】"qooxdoo-qooxdoo-release_2_0_1"中,我们可以看到这是qooxdoo框架的一个特定版本,即2.0.1版。这个版本的发布,旨在为开发者提供更加稳定和完善的开发工具。 【描述】中提到,qooxdoo 2.0.1使得开发者...

    qooxdoo-cli:(已弃用,移至qooxdoo-compiler中)qx命令行

    将不建议使用npm模块qx-cli ,从现在开始,您要做的所有事情是: $ npm install -g qooxdoo-compiler$ qx create myapp$ cd myapp$ qx compile不要忘记,如果您以前安装过qx-cli ,则必须发出以下命令: $ npm ...

    qooxdoo sdk 1.0

    压缩包中的`qooxdoo-1.0.1-sdk.zip.o`可能是原始qooxdoo SDK 1.0的归档文件,可能包含了框架的源码、编译工具、文档、示例代码等资源。解压后,开发者可以深入研究框架的内部结构,学习如何使用其工具和API,以及...

    qooxdoo-contrib-开源

    qooxdoo-contrib是qooxdoo项目(http://qooxdoo.org)的组成部分。 用户可以在简洁的结构中灵活地开发,维护和促进贡献。 贡献可以轻松地集成到自定义qooxdoo应用程序中。 注意:SourceForge上的此存储库是旧版! 它...

    16款最流行的JavaScript框架-开源中国社区.docx

    6. **Qooxdoo** - Qooxdoo是一个用于开发桌面级Web应用的框架,它允许开发者创建类似Windows风格的界面。Qooxdoo依赖于HTML、CSS和DOM,但不需要深入的框架知识即可使用。 7. **Zepto.js** - Zepto.js是一个轻量级...

    16款最流行的JavaScript框架-开源中国社区.pdf

    6. **Qooxdoo**:Qooxdoo是一个用于开发Ajax应用的GUI框架,可以创建桌面应用风格的Web应用。它允许开发者无需深入了解HTML、CSS和DOM就能进行开发。 7. **Zepto.js**:Zepto.js是针对移动WebKit浏览器的轻量级框架...

    qooxdoo-compiler:Qooxdoo的编译器,100%javascript

    Qooxdoo-Compiler是Qooxdoo( )应用程序的新编译器和命令行界面,使用100%Node.JS Javascript编写,它在标准python生成器上进行了以下关键改进: 包括Babel,用于将ES6添加到所有Qooxdoo应用程序中 快速(最快24...

    前端项目-qooxdoo.zip

    在**qooxdoo-master**这个文件夹中,可能包含了qooxdoo框架的源代码、示例应用、文档和测试用例。开发者可以通过研究这些示例,学习如何使用框架的各种功能,比如如何创建自定义组件、如何组织项目结构、如何进行...

    前端开源库-grunt-qx

    2. **编译**: 将QooxDoo源代码编译成可执行的JavaScript代码,这个过程包括了类文件的解析、依赖的解决和优化。 3. **压缩和混淆**: 对编译后的代码进行压缩,减少文件大小,提高页面加载速度。同时,可以对...

    qooxdoo:qooxdoo-通用JavaScript框架

    Qooxdoo JavaScript框架qooxdoo是一个通用JavaScript框架,使您可以为各种平台创建应用程序。 通过其面向对象的编程模型,您可以构建丰富的交互式应用程序(RIA),用于移动设备的类似于本机的应用程序,轻量级的...

    QxThree:用于qooxdoo应用程序的Three.js集成插件

    这通常涉及克隆或下载QxThree的源代码(如`QxThree-master`),然后将其添加到项目的类路径中。之后,开发者可以创建Three.js的场景、相机、光源和几何对象,并将它们添加到qooxdoo的应用中。通过绑定qooxdoo的事件...

    GUI RAD for qooxdoo-开源

    qooxdoo框架的快速应用程序开发。 您可以拖放组件,定义属性并生成源代码。

    qooxdoo.pdf

    qooxdoo框架采用了面向对象的方法,具有类、接口、混入(Mixins)和属性等面向对象编程的核心概念。这些编程范式提供了一种组织和封装应用程序代码的方式,有助于提升代码的可读性和可维护性。对象属性是qooxdoo中的...

    新将delphi的form窗口转换为qooxdoo窗体

    例如,Delphi的TButton可能对应Qooxdoo的qx.ui.form.Button。 3. **生成XML布局**:根据解析的结果,生成Qooxdoo的XML布局文件,其中包含每个组件的定义,以及它们在窗口中的相对位置和样式。 4. **处理事件**:转换...

    qx-typed:在TypeScript中使用Qooxdoo

    如何开始您真正需要做的就是用以下签名实现一个函数: someFunctionName(app: qx.application.Standolone): void然后注册: qx.registry.registerMainMethod(someFunctionName);在此功能内,您可以使用所

    qooxdoo4.1

    **Qooxdoo 4.1:面向对象的JavaScript富客户端开发框架** Qooxdoo是一个强大且功能丰富的JavaScript框架,特别设计用于构建富互联网应用程序(RIA)。它以面向对象的编程模型为核心,为开发者提供了丰富的工具和库...

    dojo-release-1.4.3

    同时,Qooxdoo的提及可能意味着这个压缩包也可能包含与Qooxdoo相关的资源或信息,Qooxdoo是另一个JavaScript框架,专注于创建桌面级的Web应用程序。 对于初学者来说,理解Dojo的加载机制是至关重要的。Dojo使用延迟...

    springmvc-qooxdoo:Spring MVC + Qooxdoo

    本文将深入探讨这两个技术,并结合文件名称"springmvc-qooxdoo-master"来推测这是一个整合了Spring MVC与Qooxdoo的项目源码。 **Spring MVC** Spring MVC是Spring框架的一部分,它是一个基于模型-视图-控制器(MVC...

    qxl.apiviewer:qooxdoo apiviewer应用

    在线版本(qx名称空间) 为您自己的代码添加API查看器 $ qx pkg update$ qx pkg install qooxdoo/qxl.apiviewer$ qx serve -S然后打开 。 您将看到现在列出了一个新的应用程序“ API Viewer”,您可以单击该链接来...

Global site tag (gtag.js) - Google Analytics