91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mobile First! Wijmo 5 之 架構

發布時間:2020-06-09 13:36:08 來源:網絡 閱讀:550 作者:powertoolsteam 欄目:web開發

CSDN移動開發頻道率先報道的《Mobile First!jQuery UI組件集Wijmo五年最大更新》引起開發者極大關注。

本文就開發者關心的話題之一架構,展開敘述。

Mobile First! Wijmo 5 之 架構

Wijmo 5是一組JavaScript控件,但是不要與Widgets混淆。在此前開發Wijmo的時候,我們能夠用像jQuery UI和jQuery Mobile Widget 框架來構建它,同時也為我們構建Web框架--Wijmo節省了時間。

但是,當我們希望構建一個更現代的Wijmo 5,我們認為現在是時候重新審視JavaScript UI組件,尤其是語法和API接口。在做了大量的研究和討論后,我們使用了“真正的JavaScript控件(true JavaScript Controls)”,如你在.NET中使用類似的屬性,方法和事件等API,同樣的在JavaScript UI組件的使用方法幾乎完全相同。

同時,我們選擇IE9作為Wijmo 5瀏覽器支持的基準版本,因為IE9支持ECMAScript 5語法,而這點對我們的Wijmo 5架構非常關鍵,由此創造了新的Wijmo 5架構。

ECMAScript 5 Controls

我們的Wijmo 5框架直接采用了ECMAScript 5。我們的源碼使用TypeScript,這使得開發非常容易。如,使用它創建了控件基類(Base Control Class), 所有的控件均派生自該基類。

JS的控件如同類對象一樣,大小寫敏感,且提供了構造函數用于初始化,同時也提供了屬性、方法、事件。

如,FlexGrid控件可通過如下方法進行初始化:

//初始化FlexGrid實例對象為一個DOM element var myFlexGrid = new wijmo.grid.FlexGrid('#FlexGrid1');

 

屬性

在我們的ES 5控件中,我們采用了Object.defineProperty()。這種方法使得我們可以在JS下像使用.NET控件一樣便捷。因為,這種方法允許我們定義屬性的getters和setters接口,因此,我們可以按照寫.NET代碼的邏輯思路直接調用屬性,非常方便。

設置控件的屬性非常方便,直接賦值即可,完全不用通過函數調用來實現。

//設置FlexGrid可編輯myFlexGrid.isReadOnly = false;

還可通過類似的方法對事件進行賦值、檢查屬性是否有值。 如果IDE支持只能感知(如VS 2013), 則可通過智能感知的自動完成功能來對控件屬性賦值。智能感知對于使用控件來說,非常便捷,可以很好的提高工作效率。

為了方便,同樣提供了枚舉(Enums)

//設置FlexGrid的selection modemyFlexGrid.selectionMode = wijmo.grid.SelectionMode.CellRange;

屬性還可通過標準的JS對象方式獲得,如,您可以通過如下方法獲得控件的get屬性接口:

//檢查FlexGrid是否可編輯var readOnly = myFlexGrid.isReadOnly;

如果你熟練的使用.NET語法編程,那么你會非常熟悉這些屬性方法。如果你熟練的使用JS編程,那么對這種優美的API接口也會喜歡。

可以對比看如下的對Wijmo Grid Widget賦值語法:

//Wijmo的 Grid Widget允許可編輯$('#WijmoGrid1').wijgrid('option', 'allowEditing', true);

這種語法可稱為“字符串類型編程”,依賴于字符串的大小寫來設置屬性值,如設置錯誤,則不會報錯,這個對開發調試將會非常麻煩。

方法

Wijmo 5中的方法使用起來非常方便,可直接通過控件調用控件對應的方法,且調試比較方便。

//刷新FlexGrid控件,以引起relayout和redrawmyFlexGrid.refresh();

對比JS Widget 調用刷新的方法

//刷新Wijmo Grid Widget$('#WijmoGrid1').wijgrid('doRefresh');

如同上面的屬性一樣,依賴字符串大小寫調用方法,調試錯誤則非常麻煩。

事件

Wijmo 5控件中的事件使用,如同.NET控件中的一樣,可通過addHandler、removeHandler訂閱、取消訂閱事件。

//FlexGrid cell編輯完成事件myFlexGrid.cellEditEnded.addHandler(function (sender, args) {//Do something});

對應的JS Widget 訂閱事件的語法:

//訂閱Wijmo cell 編輯完成事件$('#WijmoGrid1').bind('wijgridaftercelledit', function (e, args) {//Do something});

 

Controls vs. Widgets

綜上所述,下面用表對Wijmo 5 Control和JS Widget進行對比

Wijmo 5 Controls

JS Widgets

使用TypeScript類,提供類JavaScript構造函數

Functions接口,通過設置JavaScript對象屬性

EcmaScript 5:屬性有getters 和 setters接口

使用“options”的屬性,通過設置子參數

直接設置屬性值

通過調用函數實現屬性賦值

通過控件的實例調用方法

以傳遞函數名字符串方式進行方法調用

通過在事件調用addHandler訂閱

通過使用bind(),并以字符串方式傳遞widget name + even name訂閱事件

IDEs提供智能感知(依賴IDE)

非強類型,無智能感知

設計時語法檢測

無語法檢測

運行時錯誤提示

運行時很少錯誤提示

 

架構師訪談:《Wijmo 5 CTO:從Web到移動,我的25年編程生涯》

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦南县| 抚顺市| 聊城市| 正安县| 汾西县| 昌宁县| 邹平县| 商南县| 南丰县| 泸州市| 海淀区| 大冶市| 连州市| 图木舒克市| 东乡县| 祁东县| 咸宁市| 贵定县| 天等县| 皮山县| 三原县| 卓尼县| 安顺市| 鄂州市| 清流县| 河东区| 洛扎县| 宜昌市| 肥乡县| 大竹县| 通榆县| 滁州市| 泰安市| 唐海县| 冷水江市| 库伦旗| 垫江县| 法库县| 娄底市| 中西区| 乳源|