扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
没有。即使真的存在比JavaScript完美一万倍的替代品,浏览器不支持照样歇菜。后台语言只需要服务器支持即可,而前端语言却是严重依赖浏览器的支持的。除非你能说服全世界的浏览器都改用这种脚本语言,同时让全世界的所有前端开发者都使用这种语言,以及把全世界现有的所有网站网页都修改为这种前端语言。也千万别说让两种或两种以上的前端语言共同存在,这将会带来无穷无尽的兼容问题。所以,即使JavaScript再多毛病,再被你们不屑、看不起,至少现在它是无敌的存在!
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了若羌免费建站欢迎大家使用!
[img]不可以代替。
JavaScript 自身并没有充足的标准库,第三方库,即使在网页交互上,有很多应用,但这不能以较低成本转移到更多领域,实际上 Node 很多标准库,第三方库,也是另外新写的。
当然,重新开发库也是可行的。但是这一点,要基于语言本身能够带来更多收益的前提下,于是你要问问自己,JavaScript 是否比其他语言更能带来丰厚收益?
能否替代某一种语言,不光是语言的问题,还有市场的原因。
在JavaScript诞生之初也不是只有JavaScript已经,微软也曾推出过自己的JScript,Adobe也有自己的AS,只不过这些随着发展都消失了,不仅是因为它们不够优秀,还有因为没有适应市场的发展。语言本身也是一个产品,JavaScript发展到今天也不说一成不变,现在更是每年都推出一个版本。
而且,现在也并非没有替代品,只是还没有掀起大的风浪,没惹起更多人的注意,诸如,Dart,TypeScript,Elm等等等等,不是没有,只是你还不知道而已。JavaScript市场现在很大,得到了浏览器的大力支持,替代它还需要很长的路要走。
假设有一天,大家都忍受不了JavaScript了,那么自然就会有新的替代品。不替代,不是因为它多优秀,而是无可替代。
首先排除掉Go,这个东西是做服务端的,定位也是系统编程。主要说说dart:
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的也别担心别的浏览器跑不了,也不用担心要从头开始学一门新的语言的负担,因为它里面大部分东西都是你早都掌握了的。
Go刚出那几年一直在用它,我很确定不可能替代js。目前所有编程语言中,只有c/c++与js分别在OS/Browser领域成为“标准”,连Python在cg领域都被c#、js入侵,这种路径效应,是几十年都很难改变的。
但是,如果使用Node做服务器端开发则要小心,除非是采用typescript或者可以良好的应用函数式编程,否则得不偿失。服务器端,就应该跑设计良好的静态语言,或者是函数式的动态语言(因为函数式天生更健壮),anders说过(c#作者):你告诉编译器的越多,它为你做的越多;以前的浏览器端只能跑脚本语言是没办法,因为代码是客户端过来,必须解释执行。
以前c++、java开发效率不够,所以才导致Python,Ruby、PHP等动态语言的流行,现在静态语言及其框架的开发效率已经接近动态语言。像F#这样支持自动泛化的语言,可以拥有动态语言同等水平的简洁性,却仍可确保类型安全。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流