速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 2013-05-09
  • 本文字数:2262 字

    阅读完需:约 7 分钟

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

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

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

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

因此该公司决定逐步将应用前端迁移向 Dart。之前,前端是结合 CoffeeScript Backbone.js Underscore.js jQuery 开发的,并使用 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

2013-05-09 12:102254
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 135.1 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

数据报告 | 新冠疫情对美国民众消费行为的影响

前嗅大数据

疫情 数据分析 爬虫 数据采集 消费

无序和混乱终结者,极狐GitLab Workflow 到底有什么魔力?

极狐GitLab

DevOps Code Review CI/CD workflow 极狐GitLab

【jquery Ajax 】art-template模板引擎的概念与使用

坚毅的小解同志

jquery ajax 11月月更

干货|无源元件之——电阻器基础知识(超全)

元器件秋姐

白活了!谷歌架构师10年心血汇成的《24种设计模式》,这才是正解

小二,上酒上酒

Java 设计模式

Apache HBase 数据上云实践

移动云大数据

HBase

【jquery Ajax 】form表单教学+评论案例

坚毅的小解同志

11月月更

【jquery Ajax 练习】图书管理

坚毅的小解同志

ajax 11月月更

【jquery Ajax】接口的学习与Postcode插件的使用

坚毅的小解同志

ajax 11月月更

HTAP 的下一步?SoTP 初探(上):从 “大” 数据到 “小” 而 “宽” 数据 —— 第七届中国开源年会(COSCon'22)

StoneDB

MySQL 数据库 开源 HTAP StoneDB

眼见为实:被误导的Tomcat的工作原理

KINDLING

Java tomcat 多线程 ebpf

眼见为实:ForkJoin的“分而治之”,竟然有隐藏的坑?

KINDLING

Java Linux 多线程 forkjoin ebpf

5 分钟带你在本地搭建一套云原生实验环境

谢烟客

Kubernetes 云原生 Service Mesh istio kind

3000人群被字节内部技术图谱炸翻了,惊艳级实用

小二,上酒上酒

Java 架构 技术栈 字节

还不会正则表达式? 放心 我会出手(万字教学)

坚毅的小解同志

正则表达式 11月月更

大数据的5V特征分别是什么?

好程序员IT教育

大数据 V5

当Kubernetes遇见Macvlan——实现CNI路由插件

陆云

Kubernetes 集群

一文解决 Go 安装和常用环境变量的配置

陈明勇

Go 11月月更

Meta force2.0佛萨奇矩阵公排系统开发合约部署搭建

开发微hkkf5566

面试了个985毕业的大佬,回答“性能调优”题时表情令我毕生难忘

小二,上酒上酒

Java 面试 性能调优

eBPF程序摄像头——力争解决可观测性领域未来最有价值且最有挑战的难题

KINDLING

Java Linux 监控 可观测 #ebpf

眼见为实:关于微服务熔断这几个知识点,你可能理解错了

KINDLING

Java 微服务 熔断 SpringCloud ebpf

和鲸科技入选2022年度数字化创新服务商丨Digital 36 调研发布

ModelWhale

云计算 大数据 数字化转型 数据智能 企业服务

教育行业数据可视化应用方案与实践

葡萄城技术团队

前端 数据可视化 智慧医疗 智慧工程

【jquery Ajax 】art-template模板引擎案例——新闻列表

坚毅的小解同志

ajax 11月月更

【区块链Go】基础语法

坚毅的小解同志

#go 11月月更

共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍

小二,上酒上酒

Java 面经 大厂面试 Alibaba Java面经

阿里架构师耗时1年,把P8所需要的整个Java体系,都整理到了一起

小二,上酒上酒

Java 架构 面试

ZETA精彩亮相2022 IOTE展 以全栈式物联生态赋能产业数智化转型

ZETA开发者

物联网 ZETA 物联网技术 LPWAN 技术融合

就这样,进字节了?华为的Java面试题和八股文,真牛批

小二,上酒上酒

Java 面试题 八股文 Java面试题

面试了个阿里P7大佬,他让我见识到什么才是“精通高并发与调优”

小二,上酒上酒

Java 流量 亿级并发设计

Blossom准备将开发语言切换为Dart_JavaScript_Zef Hemel_InfoQ精选文章