Gestalt:使用Ruby,Python和XAML编写网页脚本

This item was filled under [ xaml ]

最近微软在Mix在线实验室上发布了一个名为Gestalt的项目,希望借助高级语言与编译器的强大功能,在保留前端开发人员原有工作方式与习惯(编写 => 保存 => 刷新)的同时,提高构建复杂AJAX或RIA应用程序的生产力。在Gestalt网站中写到

我们创建Getalt项目是因为它符合MIX Online的精神。 我们会在Web领域中挑选有趣的场景或问题,然后设法为它创建一些应用程序、服务,或提出一些解决方案的建议——Gestalt也是这么一回事儿。我们发 现,Web开发人员经常会在基于标准的前端Web开发以及RIA(如Flash/Silverlight)两种开发模型之间摇摆不定,Gsstalt的目 标便是解决这个问题。值得一提的是,选择Ruby和Python作为脚本语言,也是未来浏览器中有趣的话题之一。

Gestalt主要有以下几个特点:

  • 使用Ruby和Python作为前端脚本语言:有了Gestalt,开发人员便可以在页面中添 加<script language=”ruby”>或<script language=”python”>标签,并使用Ruby或Python语言编程。与原有的JavaScript语言相比,Ruby和 Python所带来的强大生产力有助于开发人员编写和管理复杂的逻辑。Ruby和Python代码同样可以与页面中的DOM元素,甚至是HTML 5的canvas元素进行交互。例如在Gestalt的入门示例中便包含这样的代码:
  • <input id="say_hello" type="button" value="Say, Hello!" />
    <script language="ruby">
        document.say_hello.onclick do |s,e|
            window.alert "Hello, World!"
        end
    </script>
  • 透明编译,高速运行:借助Silverlight中DLR的 强大动态编译功能,gestalt.js可以在页面加载完成后动态获取其中的Ruby或Python代码,并使用IronRuby或IronPython 加以编译执行。与JavaScript相比,Ruby和Python代码在加载时会有毫秒级别的延迟,但是页面的整体性能(尤其对长时间运行的页面而言) 则会有显著的提高。
  • 使用XAML应对复杂样式需求:面对如今愈发复杂的应用程序,HTML和CSS已经略显疲态。在Gestalt中,开发人员可以为页面从外部引入XMAL文件,或使用内嵌XAML的方式来开发复杂的交互式应用程序。Gestalt网站建议使用Expression Blend编辑XAML程序,并提供了Adobe Illustrator的XAML生成插件TextMate Bundles来辅助其他工具或平台上的XAML开发。
  • 天然SEO支持:与传统HTML页面相同,所有的代码和文字都显示在页面上。因此,开发人员无须任何额外的工作,便可以将所有的页面信息暴露给搜索引擎。
  • 自由的开发和运行环境:只要一个文本编辑器(如记事本或TextMate), 开发人员便可以在任意的平台上编写Gestalt网页,而Gestalt网页其实也只是一个最为普通的(X)HTML页面而已。Gestalt借助 Silverlight插件中的DLR来执行Python或Ruby代码,这意味着Gestalt页面也可以在多种平台上运行。

Gestalt也有一些问题需要解决,例如:

Gestalt基于传统的前端开发模型,页面会像执行JavaScript那样执行Python和Ruby脚本,但目前还不支持import和 require的功能。如果您想从外部引入Python和Ruby类库,可能就要通过内嵌XAP的Silverlight模型来实现了。我们对于您理想中 的require或import的方式非常感兴趣,请给我们反馈。

至于Gestalt是否最终会成为一个成熟的产品,MIX Online团队认为

(产品化)并不是我们的目标,但是你永远无法知道它是否会融入某个应用或概念之中。目前我们感兴趣的是推广Gestalt,并希望从社区中获取灵感。这也是我们公开Gestalt源代码的原因。我们希望您可以下载Gestalt类库并把玩一番,再把您的看法告诉我们。

您可以访问Gestalt的主页获取更多信息,或下载其类库示例进行更深入的尝试。

喜欢这篇文章的人还喜欢。。。

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Comment

Anti-spam text: (Required) *
To prove you're a person (not a spam script), type the security text shown in the picture. Click here to regenerate some new text. Click to hear an audio file of the anti-spam word