概述: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-sdkQooxdoo SDK,面向编码人员的JS框架
将不建议使用npm模块qx-cli ,从现在开始,您要做的所有事情是: $ npm install -g qooxdoo-compiler$ qx create myapp$ cd myapp$ qx compile不要忘记,如果您以前安装过qx-cli ,则必须发出以下命令: $ npm ...
qooxdoo 2.0.1 开发包,就算不会HTML也可以轻松开发完美流畅的动态页面应用,就如同开发PC软件,完全面向对象,会JavaScript 就OK
qooxdoo-contrib是qooxdoo项目(http://qooxdoo.org)的组成部分。 用户可以在简洁的结构中灵活地开发,维护和促进贡献。 贡献可以轻松地集成到自定义qooxdoo应用程序中。 注意:SourceForge上的此存储库是旧版! 它...
Qooxdoo-Compiler是Qooxdoo( )应用程序的新编译器和命令行界面,使用100%Node.JS Javascript编写,它在标准python生成器上进行了以下关键改进: 包括Babel,用于将ES6添加到所有Qooxdoo应用程序中 快速(最快24...
dojo-release-1.4.3.zip dojo-release-1.4.3.zip Qooxdoo
Qooxdoo JavaScript框架qooxdoo是一个通用JavaScript框架,使您可以为各种平台创建应用程序。 通过其面向对象的编程模型,您可以构建丰富的交互式应用程序(RIA),用于移动设备的类似于本机的应用程序,轻量级的...
qx三用于qooxdoo应用程序的Three.js集成插件
前端项目-qooxdoo,Universal JavaScript Framework
前端开源库-grunt-qxGruntQX,一个构建QooxDoo应用程序的Grunt插件。
qooxdoo的官方文档,详细介绍了如何入门qx.英文版的.建议多读英文原版,因为有些不错的技术不一定会及时的出汉化的。
qooxdoo框架的快速应用程序开发。 您可以拖放组件,定义属性并生成源代码。
如何开始您真正需要做的就是用以下签名实现一个函数: someFunctionName(app: qx.application.Standolone): void然后注册: qx.registry.registerMainMethod(someFunctionName);在此功能内,您可以使用所
在线版本(qx名称空间) 为您自己的代码添加API查看器 $ qx pkg update$ qx pkg install qooxdoo/qxl.apiviewer$ qx serve -S然后打开 。 您将看到现在列出了一个新的应用程序“ API Viewer”,您可以单击该链接来...
Qooxdoo JavaScript框架的控件 关于该项目 ville.Embed是一个控件,旨在使图像,图标和图形更加动态。 好处 使用令人惊叹的图标集在项目中使用纯CSS图标 使用代码或结合代码和HTML5的模板标签将SVG图标嵌入项目中 ...
8大流行JS框架 Dojo 、Scriptaculous 、Prototype 、yui-ext 、Jquery 、Mochikit、mootools 、moo....4. Qooxdoo 5. midori 6. Archetype JavaScript Framework 7. June Framework 8. UIZE 9. SimpleJS 10. Fleegix.js
语言:English (United ...扩展开发人员工具,添加显示与所选DOM元素关联的QooxDoo数据的侧栏。 扩展开发人员工具,添加一个侧栏,显示与所选相关联的Qooxdoo数据。 DOM元素。 在控制台中使用$ q使用所选窗口小部件。
qooxdoo sdk 1.0开源AJAX框架之qooxdoo之SDK
一个面像对象的富客户端的js开发框架。这里做一个备份,供大家加快下载速度
从软件包安装要将软件包安装到现有的qooxdoo应用程序中,请在其根目录中执行: qx pkg install qooxdoo/qxl.dialog安装图标主题该软件包允许您将自定义图标用于对话框。 但是,这意味着对话框中使用的图标将无法立即...