程序笔记   发布时间:2022-05-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Mobile First! Wijmo 5 之 架构大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

CSDN移动开发频道率先报道的《Mobile First!jQuery UI组件集Wijmo五年最大更新》引起开发者极大关注。

本文就开发者关心的话题之一架构,展开叙述。

Mobile First! Wijmo 5 之 架构

Wijmo 5是一组JavaScript控件,但是不要与Widgets混淆。在此前开发Wijmo的时候,我们能够用像j@R_419_5962@ UI和j@R_419_5962@ 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 mode myFlexGrID.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和redraw myFlexGrID.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',1)"> (e,1)"> });

 

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年编程生涯》

大佬总结

以上是大佬教程为你收集整理的Mobile First! Wijmo 5 之 架构全部内容,希望文章能够帮你解决Mobile First! Wijmo 5 之 架构所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:5架构