2006年7月23日星期日

初次使用Atlas JavaScript (Part 1 - JavaScript扩展)

Atlas的服务器端控件已经说了,现在说说客户端脚本。Atlas的脚本分为xml-script和javascript两部分:xml-script作为一种描述性语言主要用来做Controller,直接放在页面里面;javascript经过Atlas库扩展后可以用来写Atlas特有的客户端控件,而其内容最好放在独立的js文件中通过引用来使用。xml-script我还没有专门研究过,不是太懂其机制,所以现在先说说其javascript扩展。

首先,Atlas对javascript语言本身作了一定的扩展,例如让javascript支持继承,还有抽象函数、寒暑重写等概念,可以说是极力模仿C#风格。这对于习惯用C#的人来说是好事情,而且内联而非prototype方式声明外露函数和属性也确保了内部变量的不会被外部访问到,从而确保了类的封装性,但这样做却让Altas的执行效率显得比其它framework要差一些。另外Atlas还对javascript本身的String、Array、Date、Number作了简单的扩展,目的是为了模仿.NET类库对应的类的常用方法,方便javascript编写者。关于Atlas对javascript的扩展,详细可以参考这篇ASP.NET Atlas对JavaScript的扩展。(由于Atlas还在不断改进中,无论是官访文档还是自己研究Atlas源代码者写的文档都仅仅是关注到作者认为应该关注的方面,所以资料不一定全面,而且还不一定适用于日后的版本,所以最好还是使用时参考Atlas的源代码。)

当然,Atlas不可能全面扩展javascript的对象让他们拥有所有服务器端对应对象的常用方法,这时候你就需要自己扩展了。例如Date对象没有AddYears等方法,而你的程序需要这方面的Date对象操作便利,你就可以模仿着服务器端的方法去写对应的方法。模仿的最简单办法就是用Reflector打开.NET Framework看,看看它是怎样实现的,然后你改用javascript实现。由于.NET Framework系统类的实现方法效率不可能太低,所以按照它的方法去做效率应该也不会差,不过你自己有更高效的方法就更好了。

没有评论:

发表评论