JavaScript Dart -我暂时接受不了你

hlxwell · 2013年12月18日 · 最后由 zhex 回复于 2013年12月21日 · 5837 次阅读

公司有个同事说我们试试 dart 来写新项目吧。 dart + angular + D3 做一个什么实时的图表现实。

然后看了看 dart,编辑器,语法,功能都挺好的挺吸引人的,但是永远你要关注的就是短板问题,你是否接受 Dart 的短板。

现在列几个我不能接受的。

  1. Dart 目前只支持 IE9,10 和最新版本的 Chrome, Safari, Firefox,你要想支持老版本,比如编译成 JS,而编译成 js 之后,文件非常巨大,就几行代码的 helloworld 就大概在 90k 左右了,而且 minified。因为他要包含很多 dart 自己的库了。

  2. Dart 当你要跟别的 javascript 库沟通的时候,代码就变得非常不便了。而且当把 dart 的变量传给 js 的方法的时候也需要转换一下。我非常不看好这点。 可以查看一下以下页面。

    https://www.dartlang.org/articles/js-dart-interop/ 一个 js 写的类,然后让 dart 去调用。

    var Point = function(x, y) {
    this.x = x;
    this.y = y;
    this.distanceFrom = function(otherPoint) {
    return Math.sqrt(Math.pow(otherPoint.x - this.x, 2) +
        Math.pow(otherPoint.y - this.y, 2));
    };
    };
    

    ==Dart code=>

    var p1 = new JsObject(context['Point'], [5, 1]);
    var p2 = new JsObject(context['Point'], [1, -2]);
    print(p1.callMethod('distanceFrom', [p2])); // Prints 5.
    
  3. 当你的用户告诉你出了什么 js 错误的时候,你得打开 rails server side + dart editor 一起调试,因为你不能用 browser console 去调试了,必须用 dart editor.

我接受不了,所以我打算劝我同事放弃吧。

如果没 google 的面子在,这种东西早就销声匿迹了...

#1 楼 @luikore 是的。而且主页还做的这么漂亮,看上去还这么吸引人,还不如 typescript 呢。还是 coffeescript 好。

我还是非常喜欢用 web storm + coffeescript + sass + slim.

Webstorm rocks

coffeescript 好。Google 可能是世界上最喜欢 Java 的大公司了。

dart 和 coffeescript typescript 不一样的东西

dart 的目标不在这个。

Dart 的目标绝不是编译成 Javascript,而是要再浏览器上取代它。Dart 有自己的 VM 也是 V8 那帮人搞的。 我预计 Chrome 到 40 左右的时候,应该可以直接跑 Dart 代码!

越看越像 Java, 最后来个了 Eclipse 的截图,我实在不忍继续看下去了。

#7 楼 @Numbcoder 现在也可以直接跑了。

Dart 目前只支持 IE9,10 和最新版本的 Chrome, Safari, Firefox

Dart 目标不是要编译成 JavaScript,而是要更容易做出像 Gmail, Google Docs 那种复杂程度的应用。

我已经对此失去兴趣了,Javascript 生态系统相当成熟了,而且 ECMAScript 6 标准,加入了相当多好用的功能,写起来已经有 Python 的感觉了。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla

虽然 Chrome 还不支持,面向普通用户的产品不敢用,但是我自己写的 Firefox 的扩展和脚本都慢慢改过去。

而且 Javascript 有 asm.js 这东西,任何语言都能编译成 js 运行,还不如用熟悉的语言写然后编译成 js 跑,省得再学一种语言,而且等 Dart 还有工具链代码库成熟都不知道何年何月。

#9 楼 @hlxwell 你说的跑,是要先编译成 Javascript 的,而实际上,Dart 有自己的 VM,未来的 Chrome 会内置 DartVM,其他的浏览器是肯定不会支持的。

#12 楼 @Numbcoder

我看了一下,好像只有那个 dartium 有 dart VM。其他的都没有。你说的对。得编译

<!DOCTYPE html>
<html>
  <head>
    <title>Simple Dart App</title>
  </head>
  <body>
    <h1>Hello, Dart!</h1>
    <script type="application/dart" src="app.dart"></script>
    <script type="text/javascript" src="packages/browser/dart.js"></script>
  </body>
</html>

我希望有个更好的语言替代 js,但不希望它像 Java,最现实的还是 ECMAScript 改好点吧。

#7 楼 @Numbcoder 这样看来很快就能用 Dart 了!

不禁让人想起在 IE 上写 vbs 的日子……

Google 用 dart 想解决的是 js 的性能问题,而 es6 也只是解决书写的问题,对性能没啥改进。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号