您好我即将开始开发大型前端应用程序,我正在研究什么是客户端生态系统的最佳选择.我是一个有Java背景的人,做了一段时间的Spring应用程序,在我的私人项目中,大多数逻辑部分都驻留在浏览器中.这是一个基于Web的图像处理和图表应用程序,需要大量的图形处理,高级用户交互,如拖放,我希望代码库足够大.我处理过写得不好的大型js代码库.这对我很头疼.然后我的javascript声名狼借.最初我在查看Google Web工具包.但我发现它不适合我的应用程序,因为它是复杂的抽象,因此在GWT中开发的成本非常昂贵.我完成了研究和规划阶段.最近我也换了Ruby来做我的日常工作.
我正在跟踪Dart语言的发展,因为它一开始就非常令人印象深刻.我喜欢类,mixin,库内置方法(对我而言,这是Javasript的巨大优势),Stream/Promise和Web Components等功能.我喜欢它严格的性质.dart语言的可选静态类型可以最大限度地减少应用程序的错误行为,并帮助我编写更有效/优化的代码.重要的是,我可以应用Java世界中使用的熟悉的设计模式和编程技术.现在我决定坚持下去或给予更多积分.
最近,我花了很多时间来发现更高级的Javascript用法.刚读完John Resig的"JavaScript忍者的秘密",让我大开眼界.我可以看到使用RequireJS和Grunt可以管理我的大型代码库.我读到人们说使用Dart的长期风险的论点.关注点是:
编译的javascript源代码可能有意外的错误,并可能影响应用程序行为.
Javascript正在发展.Ecma.next承诺提供诸如模块,地图和类等优秀功能.甚至可以使用traceur编写Ecma.next代码.
如果谷歌在Chrome中发布原生dart vm.我的应用程序的性能会因其他浏览器而异.这不好.
它没有被广泛采用,因此当您的应用程序增长时,很难找到在Dart中编码的优秀人员.
对我来说,这些都不足以让人放弃Dart.所以,如果你在Dart和Javascript方面都有一些有趣的观点,请告诉我.
这可能听起来像我很困惑,但这只是我研究的一部分.当然除了特定的编程语言或技术之外,还有应用程序架构/设计和模式等开发的其他部分.
我投票赞成普通的JavaScript.每当您引入一种编译为JavaScript的新语言时,您最终会得到除框架引入的众多层之外的另一层抽象.花在评估JavaScript框架上的时间更好,而不是学习一种可以转化为另一种语言的语言.
我已经构建了大型前端应用程序,你最好学习前端技术,因为相信我.当您的应用程序代码或浏览器本身出现错误时,您需要了解它们.
由于您来自Java背景,想象每个计算机操作系统至少有4个JRE可用,您不确定它是什么.哦,所有这些JRE都是由不同的供应商构建的.现在您需要构建一个胖客户端GUI,并且您希望编写在编译时转换为Java的Ruby,因为您了解Ruby,而不是Java.
你面临同样的情况.
1)Dart有助于抽象浏览器差异.我认为由于移动目标,这些技术可能会有错误.如果你想自己处理浏览器差异,这也很容易出错(恕我直言)或你使用像jQuery这样的库,这些库也很复杂并且可能有bug.
2)但我认为这是Dart的一个好处,它有助于弥合浏览器的差异.我认为这是保持JavaScript的最大弱点,因为它也有一些很酷的功能.只有当所有目标浏览器都支持这些功能时,才能使用它们.在Dart中,您可以使用大多数这些功能.
3)如果有一个浏览器具有更好的性能,那有什么不好?您仍然可以在Chrome上运行JavaScript版本,即使它具有本机Dart支持.
4)无论用什么语言,好人都很难找到.但我认为好人可能会跳上新技术.Dart很容易学习.当您为Web开发时(CSS,浏览器错误,客户端/服务器应用程序架构......),您遇到的所有特性都很困难.语言本身通常是最少的问题.