BT

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

Blossom准备将开发语言切换为Dart

| 作者 Zef Hemel 关注 0 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2013年5月10日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Dart是Google设计的新的Web编程语言和平台,可用于替代JavaScript。Thomas Schranz在一篇博客中宣布,他们公司准备将其产品Blossom(面向产品团队的Web看板系统)迁移到Dart。

长期以来,该公司一直忍受着JavaScript生态系统的分裂,现在终于做出了向Dart迁移的决定。Schranz写道

Blossom,我们都是JavaScript的超级粉丝。而且如果知道如何避开各种坑的话,从很多方面看JavaScript都很不错。即便如此,我感觉JavaScript生态系统存在不少严重不足,尤其是核心衔接系统。

有时要完成一件事,需要绕很多圈才能开始,这让人非常沮丧。我不知道刚接触JavaScript生态系统的新手有何感受,但我想学习曲线会非常陡峭,而且问号比较多。

因此该公司决定逐步将应用前端迁移向Dart。之前,前端是结合CoffeeScriptBackbone.jsUnderscore.jsjQuery开发的,并使用Brunch进行装配。

InfoQ采访了Schranzto,希望进一步了解相关信息。

Dart还很年轻,现在你们为什么决定切换到这门语言?

和其他语言相比,Dart的确还很年轻。但是与JavaScript的生态系统比起来,Dart所提供的工具、标准库和包管理系统使之很容易使用。

JavaScript世界存在很多分裂,尤其是构建块。我们有很多方法来管理包、处理模块、使用异步代码和依赖,甚至在集合上进行迭代,但这些方法往往相互抵触,致使各种库无法很好地混用并搭配起来。有的人会推荐使用特定的生态系统,有的人则不想了解其他系统,转而重新发明轮子。与其他编程语言(如Ruby、Python或Dart)社区相比,JavaScript社区非我发明综合症(NIH syndrome,Not Invented Here)更为明显。

这不仅给新手带来了不必要的复杂性和困惑,写了很多年JavaScript的老手也好不到哪去。切换到Dart,表面上看会有风险,但以我之见,在JavaScript上继续逗留风险更大。

为什么Dart适合Blossom呢?

我们在寻找一种能让我们更高效地使用我们的前端代码基的方式。这方面Dart提供了很好的基础。因为有了Dart虚拟机,我们可以快速进行保存-重新加载这一开发周期,而且我们有了一个强有力的代码分析器。这样Dart编辑器用起来就非常舒服。它支持自动完成、重构和调试,它支持的程度是JavaScript达不到的。此外,包管理器、可选类型和标准库的一致性,使我们可以很容易地定位代码基中的问题。Dart不仅是一门编程语言,它还带来了后备力量,我认为理解这一点很重要。衔接的开发体验感觉棒极了。

Dart的开发仍然处于alpha阶段。因此API还会发生变化,对你们来说这也是个问题吧?

我感觉Dart的语法和语义已经非常稳定了。即便如此,因为Dart团队正在为1.0里程碑版本而努力,所以在API层会有很多改进。幸运的是,正如我刚才所提到的,Dart提供了极好的工具。编辑器可以显示标记为弃用的方法,它甚至还提供了一个清理工具,在可能的情况下它会自动更新代码基。如果跟踪Dart的博客和邮件列表的话,手动更新也没多少麻烦。

你们还在一点点地迁移应用。你们对Dart代码和JavaScript的互操作有什么经验?

可以使用js-interop包创建JavaScript对象、调用JavaScript函数,甚至如果你想的话,可以把Dart函数暴露出来,供JavaScript调用。这在互操作性方面已经走得相当远了。就Blossom本身而言,因为我们现有的Backbone.js代码基的组件相当独立,很容易一个部件(widget)一个部件地迁移,所以我们其实不怎么需要interop库。我们也使用了Justin Fagnani的路由包,这让我们很容易使用Dart接管部分应用。到目前为止迁移比我们预期的要容易。

与JavaScript 相比,到目前为止你们都积累了哪些Dart平台的开发经验?

使用Dart非常快乐。这种一致性的开发体验让人难以置信,我们可以集中精力改进产品,而不是纠缠于生态系统的基本构件块上。以前,我们的JavaScript代码散落着对undefined的检查,因为JavaScript有种倾向,正常的语言会抛出异常的地方,JavaScript却会继续下去。我上一次有这种被解放的感觉已经是多年之前的事了,当时我从PHP转向了Ruby和Rails框架。那时进行这种迁移也被认为是风险很高,甚至有点疯狂。

到目前为止,你们大约迁移了多少代码了?

现在约有5%了。我们用Dart编写新功能,而且每周都会对现有部分做一些迁移。

有其他产品应用也在进行这种迁移吗,你是否了解?

我还没听说其他产品应用从JavaScript切换到Dart,不过如果未来有更多公司宣布选择这个方向,我不会感到意外。Dart社区正在成长,很多人对1.0里程碑版本已经迫不及待了。此外,一些服务提供商也开始支持Dart了,比如drone.io,这是一个持续集成服务,可以使用很多Dart开源包来测试。

你是否建议其他公司现在也切换到Dart?

现在切换可能还是为时过早,但我强烈建议研究下Dart,玩玩这门语言,试试它的工具,特别是要体验一下Web UI。最好这个周末就动手!

你认为Dart未来会怎样,会不会广泛应用?

我认为Dart前途光明。它给我们找回了Web开发的快乐。Dart平台背后的人都是顶尖人才,早期的社区和可用的包也非常优秀。利用它为Web构建应用程序令人非常激动。

Dart在一年半前首次发布之时,这一语言及其实现方法受到了尖锐批评。但Dart平台从那时以来就稳步迭代,包括JetBrains的WebStorm和IntelliJ在内的第三方IDE也添加了对Dart的支持,而且现在已经可以把服务器端的Dart应用部署Heroku上了。

Blossom是第一个做出这种切换的发布产品。至于是否会像俗话“一羊跳过沟,众羊跟着跳”说的那样,让时间来说明吧。

查看英文原文Blossom Switches to Dart

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

javascript确实强大,但做某些事情实在是啰嗦 by 天 小陈

“有时要完成一件事,需要绕很多圈才能开始”

允许的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通知我

1 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT