为什么Dart比JavaScript更酷
分享 2012.01.12 浏览次数:8114次
为什么Dart比JavaScript更酷
标签:Dart JavaScript 网站设计
导读:Google是家充满创新力的公司。他们不喜欢Javascript了,于是自己推出了Dart。不负众望,Dart在今年的编程语言排行榜中成了一匹黑马,一经发布便窜到了排行榜107位,次月居然到了63,速度惊人。作为新的结构化Web编程语言,它真的能代替JavaScript吗?本文作者将 Dart与JavaScript进行对比,现CSDN研发频道对此文进行简译,与开发者们共同探讨。
根据原文编译的内容如下:
Dart 是Google推出的新的结构化Web编程语言。我对它一见钟情。有人对我说,你需要深度剖析JavaScript,否则你无权评论它的优缺点。坦诚的说,我算不上一位JavaScript Ninja,但我坚信一种语言应该简单易学,容易理解,语言结构方面尽量合理。
一直以来,我都在实践中解决JavaScript的不足之处,我也承认JavaScript有很多不错的功能。但我不得不说,每天与它工作时我得非常非常小心。这一点很是糟糕,编程语言应该得到程序员的友好支持,而非相反。
下面是JavaScript的不足之处,这也是迫使我转投Dart的原因。
1. Dart uses only one falsify (Dart只使用一种否定条件)
看到这个标题,会容易想到false, null, undefined, “”, 0, NaN 作为否定条件,你可以这样写:
var a = null;
if(!a) {
// do
}
在Dart只有唯一的false,可以写成这样:
var a = null;
if(a != null) {
// do
}
虽然可以使用情形6中的否定条件,前提是你要好好了解它们。
2. Dart can work with types, If you want it(只要你想,Dart可以使用类型)
JavaScript开发者常说types(类型)会抹杀了灵活性,或许这是真的,但是太多的灵活性会毁掉你的软件。另一方面,Dart可以很好的用types编程。
3. You need a framework to work proper with DOM (你需要一个框架来解析DOM)
在JavaScript中,你可以这样写:
getElementsById()
getElementsByTagName()
getElementsByName()
getElementsByClassName()
querySelector()
querySelectorAll()
document.links
document.images
document.forms
document.scripts
formElement.elements
selectElement.options
这样不是很完美吗?使用jQuery来帮助我们。也并不是非要从选择框架来解析DOM。
但Dart有了jQuery,只需以下2点:
elem.query('#foo');
elem.queryAll('.foo');
4. Classes and Interfaces (类和接口)
当Java开发人员使用JavaScript时,他们经常尝试着去编写代码,就像编写Java代码一样。有构造函数和类等元素。当然,这不是JavaScript的编程方式。它是基于以一切项目为标准。
5. Inheritance(继承)
Rauschmayer 博士发表过一篇优秀的博文,他在博客中解释了为什么JavaScript inheritance很简单。但值得注意的是:他的建议不是JavaScript inheritance的唯一途径。Frameworks Prototype和jQuery创建了“扩展”方法。Rauschmayer博士使用__proto__,你可以使用prototype keyword ,当然,你也可以实现自己的扩展机制,简单复制每个属性。用Google搜索“javascript object extends”弹出的所有结果,有各种各样的方法,只为实现一个目标:扩展。
Dart里有classes概念和“extends”关键词,非常简单。
6. Global namespace (全域名空间)
在 JavaScript中你需要注意,不要搅乱全域名空间,老实说,这个很容易。如果错过了“this”或“var”变量,导致每个脚本都能访问它,这是非常可怕的,尽量别搞乱这些。这里要感谢Stoyan Stefanovs Book JavaScript Patterns使我认识到保持域名空间清洁的重要性。现在我感觉好多了,同时也易于控制。
在Dart里扩展了“library”范围,意味着你有一个关键的“library”仅对外开放的部分。此外,每一个Dart脚本能独立执行,有一个活动区域。使用Dart你还应该思考 visibility和libraries,这将成为你学会Dart的一种简易方式,,而不需要从其他书籍中获知。
7. Dart knows concurrency (Dart支持并行)
使用JavaScript不是真的并行,即使是但也需要你做出一个“jQuery异步需求”,你依然在“thread”中运行,你可以从V8中获得更多,你也可以通过HTML5和webworkers来解决。
Dart支持Isolates,这有点像Erlang,它们之间可以相互沟通,如果其中一个失败了,另一个Isolate可以再次启动。当然这使Dart成为一个非常不错的服务端编程。
8. JavaScript doesn’t know foreach (JavaScript不支持foreach)
你可以扩展Object或者Array.prototype,或者也可以采用以下数组:
for (var i = 0; i < elements.length; i++) {
// do something
}
你还可以设置objects:
for (key in elements) {
alert(elements[key]);
}
而不幸的是Douglas Crockford(在JavaScript界一位很了不起的人物),不建议使用此语句。原因:你的结果不是排序的,我可能会从prototype chain或者function names命名。当然你也可以过滤hasOwnProperty。最后,你应该看下框架文件,如果他们提供了相应内容。
而在Dart中:
for (element in elements) {
// do something
}
就是这么简单!
9. Weirdness intializing arrays(数组初始化)
看看这个代码:
var a1 = new Array(1,2,3,4,5);
var a2 = new Array(5);
a1有5个元素的数组:[1,2,3,4,5]
a2具有5个元素的数组:[undefined,undefined,undefined,undefined,undefined]
而Dart就更加简洁:
List a1 = [1,2,3,4,5];
List a2 = new List(5);
同样的,a1包含5个不同的元素数组,a2包含5个元素数组。此外,你还可以获得一个不错的功能“removeRange”可支持排序。
10. undefined和null
当使用JavaScript时你需要学习很多,该类型值:undefined。它可被重写。你可以通过各种方案获得,例如:假如你调用返回,但不返回任何数值,在链接的页面上,你可以看到如何处理一个可能被覆盖未定义的值。Null可以通过undefined在多种方案下调用。
而Dart只需要一个null。
结束语:
当然,JavaScript也有很多好的部分,比如一些不错的模式,但目前来说,使用Dart也能实现这些功能。我认为Dart更优雅,更容易阅读。或许,JavaScript的一些铁杆开发者不这么认为,没关系,只要喜欢你可以继续使用JavaScript。但我想,Dart或许会在另一面成为主流。
更多有关杭州网站建设资讯:12个免费用户界面网站建设原型的 PSD 设计稿 返回公司新闻。
-
杭州网站建设:中学网站安全升级策略与维护
日期:2024-11-22浏览次数:344次
-
杭州网站设计,如何打造精品杭州定制网站?
日期:2024-10-25浏览次数:1227次
-
杭州网站建设:打造视觉统一与美观的企业网站
日期:2024-10-25浏览次数:1196次
-
杭州网站制作公司:打造企业网络形象的首选伙伴
日期:2024-08-23浏览次数:2739次
-
杭州帷拓科技:杭州网站设计公司的首选合作伙伴
日期:2024-08-23浏览次数:2594次
相关新闻
整合同类新闻,相关新闻一手掌握
-
杭州网站营销推广:软文撰写与推广的终极指南
日期:2024-11-22浏览次数:292次
-
杭州网站优化:流量下降原因及解决方案
日期:2024-11-22浏览次数:284次
-
杭州小程序开发:个人如何打造专属小程序
日期:2024-11-22浏览次数:316次
-
杭州网站建设:中学网站安全升级策略与维护
日期:2024-11-22浏览次数:344次
-
抖音电商助力国货潮牌崛起 双11行业销售额增长超700%
日期:2024-11-22浏览次数:261次
最新新闻
与互联网同行,实时掌握网建行业最新动态
-
2019媒体人工智能发展报告:BAT、科大讯飞、影谱科技等助力媒体智能变革
日期:2019-10-24浏览次数:4681次
-
浅析网站tags标签优化的重要性
日期:2020-01-10浏览次数:4822次
-
杭州网站优化,SEO到底指什么?
日期:2021-01-05浏览次数:3848次
-
高端网站建设公司的备案步骤
日期:2021-06-02浏览次数:3252次
-
做网站,2023襄阳扁平化网站设计三大核心优势
日期:2023-02-10浏览次数:1157次
随机新闻
新闻新动态,您需要的新闻管家
洞悉市场趋势演变让传播回归社会
免费获取网站建设与网络推广方案报价
-
关于我们
杭州帷拓科技有限公司,是一家新型的全案网络开发公司,作为以互联网高端网站建设、APP开发、小程序开发为核心的专业网络技术服务供应商,帷拓科技致力于全面分析市场环境、衡量与预测市场需求、整合区别于行业竞争对手的绝对优势,结合品牌理念深度挖掘项目优势和产品价值,提升客户品牌认知、认可度。
-
我们的客户
帷拓科技历经十年沉淀,与国内外上千家客户达成合作关系,其中稳定合作的公司有:浙江华为、浙江移动、浙江5G产业联盟、浙江省社科院、绿城足球俱乐部、娃哈哈双语学校、健康中国杭州峰会、科雷机电等,帷拓科技始终坚持“帷有专业,才能拓展无限”的服务理念,坚持“认真坚持细节”的优质服务理念,不断完善自身,成就企业,最终实现共赢。
-
我们的业务
帷拓科技主营业务范围包含互联网高端网站建设、APP开发、小程序开发、商城网站建设、公众号运营以及数字营销等,涵盖了服务、房产、数码、服装、物流贸易等行业,根据品牌现状,为每个客户量身定制项目整体服务方案,以敏锐的市场洞察力、创新的市场策划能力,全面把握市场变化,为客户实现从企业到消费者的价值转换。