从基础开始:Qomo OpenProject中的一些关键词
================================================================================
Qomolangma penProject v0.9
類別??? :Rich Web Client
關鍵詞? :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,
????????? DOM,DTHML,CSS,JavaScript,JScript
項目發起:aimingoo (aim@263.net)
項目團隊:aimingoo, leon(pfzhou@gmail.com)
有貢獻者:JingYu(zjy@cnpack.org)
================================================================================
六、Qomo OpenProject中的一些關鍵詞
~~~~~~~~~~~~~~~~~~
1. JScript與JavaScript
--------
JavaScript是最早由網景公司在它的瀏覽器產品Netscape Navigator 2.0提出并實現的腳本
語言。原名LiveScript。它最初出現的目的是給頁面元素提供交互的能力,例如檢查<FORM>表單
中的輸入值的有效性,并在必要時彈出一個提示對話框。
JavaScript只是借用了當時開始紅火的Java語言的名字,卻實在與Sun的Java語言沒什么關系。
后來Microsoft在自己的Internet Explorer(IE)瀏覽器中發展自己的腳本引擎的時候,不得已
地實現了當時已經成為事實標準的JavaScript腳本語言。事實上,如果不是Netscape的推動,
可能現在只能在IE里面使用VBScript。
后來,Netscape公司將JavaScript提交給ECMA制定為標準,稱之為ECMAScript,編號ECMA-262。
目前最新版為ECMA-262 3th Edition,通常簡稱為ECMAv3。
但Microsoft并不滿足于模仿或者重現Netscape的JavaScript,于是IE的開發團隊擴展了Java
Script的語法和語言特性,并由此形成了JScript。隨著IE在瀏覽器市場上的成功,JScript已
經成為JavaScript語言的事實標準,這也使得ECMAScript v3及以后的標準訂制受到一定程度
的影響。
在IE中,盡管允許指定<SCRIPT>標簽的Language屬性來強制編譯器解釋時的語法檢測,但IE默
認語言卻總是JScript的(當前瀏覽器所支持的)最新版本。
下表給出JavaScript、JScript中的一個對照。更詳細的資料可以查閱《JScript語言手冊》。
(表一) JavaScript 與 JScript各版本對照
----------------------------------------------------------------------------------
Ver.? for NN????? JScript? for IE/IIS in OS?????????? JavaScript的主要特性
----------------------------------------------------------------------------------
1.0?? 2.0???????? 1.0????? IE3早期版本
1.1?? 3.0???????? 2.0????? IE3后期版本(WinNT4)??????? 引入Array對象,消除大量錯誤
1.2?? 4.0-4.05??????????????????????????????????????? 引入Switch語句、RegExp等
1.3?? 4.06-4.7x?? 3.0????? IE 4.0,IIS 4.0,JSH 1.0?? 修正一些不兼容性,符合ECMAv1
????????????????? 5.0????? IE 5.0(Win98 SE,WinMe)??? (*JScript開始部分實現ECMAv3)
????????????????? 5.1????? IE 5.01(Win2k)
????????????????? 5.5????? IE 5.5(WinMe)
????????????????? 5.6????? IE 6.0
1.4?? (服務器端)? (未實現)
1.5?? 6.0???????? (未實現)??????????????????????????? 引入了異常處理,符合ECMAv3
----------------------------------------------------------------------------------
(表二) ECMAScript 各版本及其實現
----------------------------------------------------------------------------------
Ver.???? JavaScript??? JScript???? 說明
----------------------------------------------------------------------------------
ECMAv1?? 1.1?????????? 1.0, 2.0??? ECMA-262 v1 基于 JavaScript 1.1.
???????? 1.2?????????????????????? JavaScript 1.2發布時, ECMA-262 v1 時仍未能完成。
???????? 1.3, 1.4????? 3.0???????? 完整實現ECMA-262 v1
ECMAv2???????????????????????????? ECMA v1的維護版本,只添加了說明性描述。
ECMAv3?? (x)?????????? 5.0???????? 部分實現ECMA-262 v3
???????? 1.5?????????? 5.5???????? 完整實現ECMA-262 v3
???????? (x)?????????? 5.6???????? 在客戶端與JScript5.5沒有區別。
----------------------------------------------------------------------------------
2. 面向對象
--------
(注:以下描述為非學術資料的)
對象是一種數據結構。它封裝了所描述事物的屬性和行為信息,并且通過繼承來描述了事物
在現實(或執行環境中)的衍生關系。繼承的另一層作用,是強化了信息的重用并為執行期邏
輯提供了多態的特性。
綜上所述,一個面向對象的語言環境應當:
? 1). 實現一個特定的“對象”這種數據結構
? 2). 實現對象的繼承性
? 3). 在對象中實現信息的封裝性
? 4). 在編譯器一級理解多態機制,并提供運行期的多態特性
對于對象的上述特性,標準的學術資料總結為:繼承性、封裝性和多態性。
此外,在強類型的語言環境(例如編譯性語言)中,通常會在對象的基礎上實現“類類型”。
在這種情況下,“類”是類型描述(type),而“對象”是變量聲明(var)。更面向機器一層
的敘述是,“類”用于聲明數據結構的布局;而“對象”則是在內存中按這種布局分配的
數據塊(實例)。
一些強類型的語言會提供“類類型”來描述一個類的引用。這種情況下,“類”會具有在
內存中的一個描述結構(struct)。這也意味著“只有提供運行期信息(RTTI)的語言”才能
提供“類類型”這種語言特性。
與面向對象相關的一些概念包括:
? - 屬性(property)
? - 特性(attribute)
? - 讀寫器(getter/setter)
? - 方法(method)
? - 虛方法(virtual method)
? - 動態方法(dynamic method)
? - 純虛方法/抽象方法(abstract method)
? - 事件(event)
? - 多投事件(mutilcast event)
這些概念的具體含義請查閱相關資料。在Qomo OpenProject對OOP Core的實現過程中,將
經常性地提及這些概念。你也會清晰的看到:如何來實現完整的OOP的各種語言特性。
3. 面向對象與基于對象的語言
--------
一種提供了“對象”這種數據結構的語言,如果它不能完全實現面向對象的三種基本特
性“繼承、封裝和多態”的語言,就被認為是“基于對象的語言”。相應的,完整實現
了這三種特性的,被稱為是“面向對象的語言”。
JavaScript是一種基于對象的語言,我們通常說它具有“不完整的OOP特性”。Qomo
OpenProject將在原生的JavaScript的基礎上,實現更多的OOP特性,使得JavaScript
能夠方便地描述更龐大的框架,以及開發更復雜的Rich Web Client / Application.
Qomo OpenProject對將從Delphi和C#中借用很多的OOP特性和語法特性。因此,如果你
需要深入了解QomoJS中OOP Core的實現技術,那么你可能需要了解一些Delphi或C#的基
礎知識。
如果你只需要將 Qomo 應用在你的系統中,那么你只需要記住一些語法、規則,并仔細
閱讀示例代碼就可以了。^.^
4. 面向對象的開發架構
--------
開發架構的描述,與語言本身的語法描述是兩回事的。QomoJS中OOP Core中只在語法
層面實現更多的OOP特性和支持能力。但OOP Core本身并不描述架構。
在.NET中,底層的.NET Framework是一個開發架構,而FCL(Framework Component Library)
則是一個組件庫,這一點與Delphi的VCL(Visual Component Library)具有同一層次上的
含義。
但“架構”本身并不存在層次上的限制。也就說是說,可以有RTL這個層級上的Framework,
也可以有Class Library這個層級上的Framework,同樣,也可以有“組件庫”這個層級上
的架構。再往上,你可以發現“插件架構”,或“模塊調度的架構”,更或者是象Ajax這
樣一些被稱為架構的東西。
所以在如果我們對FCL在組件庫上的封裝模式進行理解,那么也可以分析并得到它的架構
模式?!凇禝nside VCL (深入核心-VCL架構剖析)》一書中,李維就從這個角度分析
了VCL的組件架構。
QomoJS底層的豐富的OOP特性的支持,使得它有能力去描述和實現各種底層架構、組件
架構和更加高(或低)層次的架構設計。在Qomo OpenProject中,我們將主要實現一個 Visual
Component架構,并在上面發展Delphi VCL / .NET FCL的一個子集。
此外,我們還會在底層架構上提供Template編程的支持,以及SOA的支持。這些屬于底層架
構的范疇,有時候他們也被作為語言特性來理解?!斎?#xff0c;這取決于你的視角。
在Qomo OpenProject中非常輕松地實現一個Ajax的架構。不但如此,你還可以看到Qomo
OpenProject用更加快捷的手段集成了Atlas(Microsoft's Ajax toolkit),以及ActiveUI's Template框架。隨后還會有一個SOA框架被整合進來。
這些框架及其實現,都可以在Qomo OpenProject中跑得很好。如果你希望將Qomo用于語言的研究
而不是應用開發的話,你可以按照類此的方法一層層地實現下去。
直到有一天,你發現一行代碼就可以完成你所想的全部工作,而一臺256位CPU的機器也跑
不動這行程序的時候,我想你會反省:B端開發應當是一個輕量級的架構。
轉載于:https://www.cnblogs.com/encounter/archive/2005/12/30/2188730.html
總結
以上是生活随笔為你收集整理的从基础开始:Qomo OpenProject中的一些关键词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCP 导出函数
- 下一篇: 微信 html5商城,微信公众号H5商城