dart这个语言最关键的地方其实是两个:1.相似性;2.dart2JS。
相似性:
google搞的这个dart你会发现如果有java,c#,javascript背景的开发人员,那么这个语言几乎是0学习负担,直接拿来就能用,做项目。里面有很多好的特性都是你非常熟悉的,语法难度(目前)介于java和c#之间,可选类型的动态语言,弥补动态语言tooling,静态分析上的短板(尽管这个可选类型争议很大,尤其是纯粹从设计语言上的角度上去看)。
dart2JS:
dart vm将来会内置到chrome中,但其他浏览器可能不会支持它,所以dart2JS就显得很重要,这样dart写的程序可以在所有浏览器上执行,至于性能和体积等等问题这个变成了编译器优化的部分了,纯粹的技术上问题,没有什么不可逾越的障碍了(例如让其他浏览器接受dart vm这种非技术性障碍,这个很难逾越),只需要时间去完善。最终有点类似于手写汇编和编译器生成的汇编哪个效率高的问题。
有了语法上的高度相似性和dart2JS,那么dart失败与成功其实不是那么重要了,因为google最终的目的不是让大家都一定要去使用它的语言,而是要让web进化的更快一些,或者说有一个比现在更好的javascript快点的到来,这才是它最想要的结果,类似于它的什么高速光纤等等,都是这个套路,让你更加依赖web,因为web是它盈利的关键入口。
2011年google内部有邮件说明过为啥要做这个语言?他们有2套方案会一直并行的去做下去:
1.v8团队继续优化js引擎,一起参与进化javascript语言;
2.发明一个新的语言(dart),最终替代JS。
方案1风险小但进展太慢它等不及,方案2风险大但回报也大。最终他们决定同时执行两套方案。
而dart的开发者大部分就是v8,chromium的团队人马,dart中很多新东西都和v8有关联,dart一些新的特性未来可能也会被ecmascript 接受成为未来js的新标准,所以最终无非就是两个结果:要么dart失败了,但dart里很多好的东西都被js吸收了,js焕然一新;要么dart成功了,代替掉了js。无论是哪种结果,web的进化进程都被加快了,这个就是google的真正目的(有点像它做android但却不直接通过这个系统本身来赚钱)。
所以说:这个语言在设计中【保持相似性】和【dart2js】是很关键的两个方面。那么你觉得它能否代替掉JS对你影响大么?也不会出现什么你学了很久的东西未来某天发现没用武之地了这种情况,所以该用js的继续接着用,想尝试dart的也别担心别的浏览器跑不了,也不用担心要从头开始学一门新的语言的负担,因为它里面大部分东西都是你早都掌握了的。
再怎么纯的js代码最终也是要生成html+css代码才能在浏览器中呈现出来的,如果完全由js来生成,那么页面就会在js运行完毕后才能显示出来,而且也无法充分利用浏览器的缓存功能,会使整个页面看起来效率低下,严重影响用户体验,因此没人会用所谓的纯js来代替html+css的。就好比看戏,观众只需购票进场,演员只需在台上表演,这样就行啦。如果每次看戏,都要从打地基开始,新建戏院,新建舞台,购买道具,招聘演员,寻找剧本,排练新戏,然后观众才能看上……然后第二次演出的时候上述过程又要重复一遍……你给我说说什么感觉?JS只是一种脚本语言,通过代码来实现功能、而FLASH不是脚本语言。
FLASH是非常强大的,必JS强大的多了。
你可以把JS看做一种辅助的语言。
把FLASH看做一种技术。
FLASH通过其平台可以开发网站,视频,动画,等许多东西。
FALSH可以替代JS做出来的效果,JS只能替代简单的FLASH。稍微复杂点的JS就办不到了。