Qomo OpenProject beta1 发布!

Qomo离上一次发布FT4已经过去整整一个月了。这一段时间中,因为我个人的缘故,未能组织好Qomo的团队,导致UI组和DB组未能正常展开工作。因此截止beta 1发布,以上两个组仍未能释出代码。

一个最重要的原因,是因为Qomo目前没有一个好的UI和DB框架。以前在WEUI中使用过的UI和DB Components代码并不适用于新的架构和设计,因此只能供参考。

此外,兼容组的Zhe设计了新的兼容框架,基本上已经完成了代码。但测试工作还未结束,因此暂时只作为Qomo项目团队内部的一个测试版本,仍未能放在目前的beta 1中。

1、关于UI与DB组件包

本次,公开发布的beta 1仍不会附带UI和DB代码。但是我稍后会在这个blog中发布一个Qomo.Components的包,这个包中将会有目前全部UI、DB相关的代码。这些代码的注释是全中文的。

这个包中的代码,事实上是原WEUI项目中的代码(甚至我连注释都没有改掉)。由于Qomo与WEUI有相同的语法与实现架构,因此只用了极少量的修改,这些代码就可以运行在Qomo上了。在今后,这些代码(中的部分或者全部)将不会随Qomo继续发布,它可以作为Qomo爱好者研究借鉴,但我不建议你使用在项目中。——因为Qomo将会另行提供一套。

2、本次发布中的主要修正

在FT4的基础之上,本次发布代码中有大量的修正代码。最主要的两项修改是:

  • 重新定义了Qomo的兼容性目标。Qomo今后将在底层提供一个IE、Mozilla等浏览器(及不同的JS版本)的公共特性的超集,而不是象以前所说的“以IE6为基准”。这意味着Qomo将有一个更强大的兼容层。因此,一些原本在JSEnhance.js中的代码被移到了兼容层框架中,例如出现了“Compat/common_js16.js”这个单元。
  • 修改了多投事件对象MuEvent()的代码,彻底解决了原来的“快就不强壮,强壮就不快”的矛盾。

此外,在Object.js、System.js等内核代码中,为一些新特性的实现也加入了代码。但基本上没有调整代码框架,因此不单独叙述了。

3、本次发布中的主要添加的内容

这次beta 1的发布,在Qomo中添加了完整的“接口(Interface)”机制,以及非常完整的“面向切面编程(AOP)”框架。并完成了相关技术文档。

beta 1也完成了一个“组件继承框图”的自动生成程序。这样你要以很容易地看到系统内部的框架结构。我也将在随后再撰文来讲述Qomo底层框架的实现。

beta 1终于开始在Debug/目录下加入代码。今次提供的是一个Profilers.js单元,这个单元用于收集系统运行中的效率数据。它采用原生的javascript代码实现,因此可以脱离Qomo运行。——除了在toData()输出时,他需要一个uneval()函数,这在兼容层代码Compat/common_ie6.js中。

profiles.js本意是试图用AOP框架来实现的,但是这样的话在Aspect.js单元之前的其它单元的载入性能就无法检测了。因此Qomo提供了一个RepImport.js单元,使用$import()提供的一些特性来收集system.js中载入的代码效率。在system.js载入之后,该单元提供的特性将会被关闭(ResetImport),此后的用户代码,可以通过AOP建立自己的分析系统。一个这样的示例被放在Debug/TestCase/T_profiler.html中。——它也正好演示了AOP与非AOP实现profiler时存在的不同。

4、主要添加文件的列表

组件包:

/Components/*.*
/Framework/Components.js
/Framework/Classes.js

内核上的修正和新特性:

/Framework/RTL/Interface.js
/Framework/RTL/Aspect.js
/Framework/Compat/common_js16.js
/Framework/Debug/Debug.js
/Framework/Debug/Profilers.js
/Framework/Debug/RepImport.js
/Framework/Debug/TestCase/*

文档和测试:

/Framework/DOCUMENTs/Qomolangma实现篇(七).txt
/Framework/DOCUMENTs/Qomolangma实现篇(八).txt
/Framework/DOCUMENTs/TestCase/AdvObjectDemo3.html
/Framework/DOCUMENTs/TestCase/AdvObjectDemo4.html
/Framework/DOCUMENTs/TestCase/AdvObjectDemo5.html
/Framework/DOCUMENTs/TestCase/BaseObjectDemo4.html
/Framework/DOCUMENTs/TestCase/T_InterfaceAggregate.html
/Framework/DOCUMENTs/TestCase/T_InterfaceQuery.html

下载:Qomo OpenProject beta 1