直播预约通道开启!2021腾讯数字生态大会邀您共探产业发展新机遇! 了解详情
写点什么

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

2013 年 5 月 09 日

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 年 5 月 09 日 12:101798
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

为什么一旦自己创业了,很难再回到公司去坐班?

北柯

创业 互联网 创业心态 上班 上班族

丐帮,少林,明教,武当!看看你数据分析的技能属于哪一派?

程序员生活志

草脸识别,AI泡沫还是皇冠明珠?

郭华

人工智能 AI 商业 解决方案

影响音视频延迟的关键因素(一):流媒体系统

ZEGO即构

TCP udp RTC HLS RTMP

云上安全工作乱如麻,等保2.0来一下

华为云开发者社区

安全 华为云 等保 云平台 多云服务

跨域问题(CORS / Access-Control-Allow-Origin)

xcbeyond

Java CORS 跨域

SpringCloud服务注册中心双节点集群(Eureka集群)

xcbeyond

Java 架构 微服务 Eureka 集群

高效程序员的45个习惯:敏捷开发修炼之道(3)

石云升

读书笔记 敏捷开发 无限游戏

nginx报错worker_connections are not enough

Java联盟

nginx

spring Cloud Eureka Rest接口重写

xcbeyond

Java SpringCloud Eureka

MySQL索引问题探究手记

架构精进之路

MySQL 索引

“庆俞年”大战,真正受损的不是李国庆

北柯

创业 合伙人 创业者 互联网人 当当网

大厂面试必读,JAVA进阶神书《深入理解Java虚拟机》第三版更新内容全曝光!

华章IT

JVM 虚拟机 周志明 Java虚拟机 jvm调优

搭载十代酷睿i7处理器,这台ROG冰刃4新锐拥有媲美台式游戏电脑的性能

最新动态

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

程序员生活志

教程 Hub 资源

"工科生"的浪漫 百度大脑语言与知识技术峰会在七夕向你发出参会邀请

百度大脑

为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?

架构精进之路

php 弱类型语言

程序范式的意义

soolaugust

架构 程序设计

一个虚拟世界里栽树的公司及其启示

郭华

技术 商业模式 电影

钓鱼网站:详解hosts文件

xcbeyond

Java 域名解析 hosts

nginx 报错 accept4 () failed (24:Too many open files)

Java联盟

nginx

CRM往事丨三件事,所有SaaS的缩影

人称T客

SpreadJS 纯前端表格控件应用案例:集成 Odoo提升企业ERP表格功能

Geek_Willie

开源 SpreadJS Odoo

系统不可用总结

不在调上

学习的深度 & 深度的学习

北风

学习

我的敏捷历程 —— 兼评《敏捷整洁之道 - 回归本源》

FollowFlow

敏捷开发 Agile 极限编程 XP

区块链承兑商支付系统开发,usdt支付系统搭建

WX13823153201

Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的

程序员生活志

错误的存储方案正吞噬你的成本

jinjin

ARTS week 4

锈蠢刀

一个数据库管理员的自我救赎之路

华为云开发者社区

数据库 华为云 数据库迁移 企业上云 DRS

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

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