BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 赵劼 关注 4 他的粉丝 发布于 2009年8月6日. 估计阅读时间: 5 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

最近微软在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的主页获取更多信息,或下载其类库示例进行更深入的尝试。


评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

DLR是好东西 by Jeffrey Zhao

如果使用DLR来执行前端的JavaScript,性能应该会好很多吧?

Re: DLR是好东西 by Chu Kevin

对于一个熟悉Ruby的开发者来说,可以用一种语言来开发前端和后端,生产力应该会有所提高的。

Re: DLR是好东西 by wang egmkang

那Linux下面咋办?

Re: DLR是好东西 by Jeffrey Zhao

等社区咯

Re: DLR是好东西 by Han Colin

一直很奇怪,JavaScript是怎样通知前台开发的?为什么浏览器厂商不愿意直接内置支持其他的脚本语言呢?

Re: DLR是好东西 by Seven GlacJAY

没sandbox吧

质疑普及性 by Lee Bruce

如果必须需要借助于silverlight平台,那么我比较怀疑它的普及性。

失望在于 Silverlight by hong hao

这个太扯了, 要是浏览器没有 Silverlight 插件, 特别是 linux 如何实现?
这个想法是一个很好很好的主义. 期待以后浏览器厂商能够直接调用 native 的系统接口.

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

8 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT