為什么Dart比JavaScript更酷
分享 2012.01.12 瀏覽次數(shù):8535次
為什么Dart比JavaScript更酷
標簽:Dart JavaScript 網(wǎng)站設計
導讀:Google是家充滿創(chuàng)新力的公司。他們不喜歡Javascript了,于是自己推出了Dart。不負眾望,Dart在今年的編程語言排行榜中成了一匹黑馬,一經(jīng)發(fā)布便竄到了排行榜107位,次月居然到了63,速度驚人。作為新的結構化Web編程語言,它真的能代替JavaScript嗎?本文作者將 Dart與JavaScript進行對比,現(xiàn)CSDN研發(fā)頻道對此文進行簡譯,與開發(fā)者們共同探討。
根據(jù)原文編譯的內容如下:
Dart 是Google推出的新的結構化Web編程語言。我對它一見鐘情。有人對我說,你需要深度剖析JavaScript,否則你無權評論它的優(yōu)缺點。坦誠的說,我算不上一位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開發(fā)者常說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開發(fā)人員使用JavaScript時,他們經(jīng)常嘗試著去編寫代碼,就像編寫Java代碼一樣。有構造函數(shù)和類等元素。當然,這不是JavaScript的編程方式。它是基于以一切項目為標準。
5. Inheritance(繼承)
Rauschmayer 博士發(fā)表過一篇優(yōu)秀的博文,他在博客中解釋了為什么JavaScript inheritance很簡單。但值得注意的是:他的建議不是JavaScript inheritance的唯一途徑。Frameworks Prototype和jQuery創(chuàng)建了“擴展”方法。Rauschmayer博士使用__proto__,你可以使用prototype keyword ,當然,你也可以實現(xiàn)自己的擴展機制,簡單復制每個屬性。用Google搜索“javascript object extends”彈出的所有結果,有各種各樣的方法,只為實現(xiàn)一個目標:擴展。
Dart里有classes概念和“extends”關鍵詞,非常簡單。
6. Global namespace (全域名空間)
在 JavaScript中你需要注意,不要攪亂全域名空間,老實說,這個很容易。如果錯過了“this”或“var”變量,導致每個腳本都能訪問它,這是非??膳碌模M量別搞亂這些。這里要感謝Stoyan Stefanovs Book JavaScript Patterns使我認識到保持域名空間清潔的重要性?,F(xiàn)在我感覺好多了,同時也易于控制。
在Dart里擴展了“library”范圍,意味著你有一個關鍵的“library”僅對外開放的部分。此外,每一個Dart腳本能獨立執(zhí)行,有一個活動區(qū)域。使用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,或者也可以采用以下數(shù)組:
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(數(shù)組初始化)
看看這個代碼:
var a1 = new Array(1,2,3,4,5);
var a2 = new Array(5);
a1有5個元素的數(shù)組:[1,2,3,4,5]
a2具有5個元素的數(shù)組:[undefined,undefined,undefined,undefined,undefined]
而Dart就更加簡潔:
List a1 = [1,2,3,4,5];
List a2 = new List(5);
同樣的,a1包含5個不同的元素數(shù)組,a2包含5個元素數(shù)組。此外,你還可以獲得一個不錯的功能“removeRange”可支持排序。
10. undefined和null
當使用JavaScript時你需要學習很多,該類型值:undefined。它可被重寫。你可以通過各種方案獲得,例如:假如你調用返回,但不返回任何數(shù)值,在鏈接的頁面上,你可以看到如何處理一個可能被覆蓋未定義的值。Null可以通過undefined在多種方案下調用。
而Dart只需要一個null。
結束語:
當然,JavaScript也有很多好的部分,比如一些不錯的模式,但目前來說,使用Dart也能實現(xiàn)這些功能。我認為Dart更優(yōu)雅,更容易閱讀?;蛟S,JavaScript的一些鐵桿開發(fā)者不這么認為,沒關系,只要喜歡你可以繼續(xù)使用JavaScript。但我想,Dart或許會在另一面成為主流。
更多有關杭州網(wǎng)站建設資訊:12個免費用戶界面網(wǎng)站建設原型的 PSD 設計稿 返回公司新聞。
-
杭州網(wǎng)站設計公司:品牌網(wǎng)站開發(fā)助力企業(yè)成長
日期:2024-12-20瀏覽次數(shù):448次
-
杭州網(wǎng)站建設公司:商城網(wǎng)站建設的六大關鍵步驟
日期:2024-12-18瀏覽次數(shù):518次
-
杭州網(wǎng)站制作:醫(yī)院網(wǎng)站設計與域名備案的復雜性探討
日期:2024-12-18瀏覽次數(shù):522次
-
杭州網(wǎng)站制作公司:打造安全可靠的醫(yī)院網(wǎng)站
日期:2024-12-11瀏覽次數(shù):731次
-
杭州網(wǎng)站設計公司:數(shù)據(jù)庫在高端網(wǎng)站制作中的關鍵作用
日期:2024-12-11瀏覽次數(shù):701次
相關新聞
整合同類新聞,相關新聞一手掌握
-
揭陽網(wǎng)站建設制作-做網(wǎng)站
日期:2023-02-08瀏覽次數(shù):1645次
-
揭陽app開發(fā)后,應該如何運營?
日期:2021-02-24瀏覽次數(shù):1884次
-
直播類揭陽app開發(fā)有哪些方式?
日期:2021-02-24瀏覽次數(shù):2023次
最新新聞
與互聯(lián)網(wǎng)同行,實時掌握網(wǎng)建行業(yè)最新動態(tài)
-
2020年開發(fā)APP是否還有足夠的前景?
日期:2020-06-08瀏覽次數(shù):4654次
-
移動端株洲網(wǎng)頁設計有什么優(yōu)勢?
日期:2020-10-22瀏覽次數(shù):2105次
-
杭州網(wǎng)站建設,院系網(wǎng)站如何提升特色?
日期:2021-01-23瀏覽次數(shù):4421次
-
寵物APP開發(fā)的功能
日期:2021-02-22瀏覽次數(shù):1851次
-
杭州營銷推廣主要有三種方法,你了解嗎?
日期:2021-08-19瀏覽次數(shù):3980次
隨機新聞
新聞新動態(tài),您需要的新聞管家
洞悉市場趨勢演變讓傳播回歸社會
免費獲取網(wǎng)站建設與網(wǎng)絡推廣方案報價
-
關于我們
杭州帷拓科技有限公司,是一家新型的全案網(wǎng)絡開發(fā)公司,作為以互聯(lián)網(wǎng)高端網(wǎng)站建設、APP開發(fā)、小程序開發(fā)為核心的專業(yè)網(wǎng)絡技術服務供應商,帷拓科技致力于全面分析市場環(huán)境、衡量與預測市場需求、整合區(qū)別于行業(yè)競爭對手的絕對優(yōu)勢,結合品牌理念深度挖掘項目優(yōu)勢和產(chǎn)品價值,提升客戶品牌認知、認可度。
-
我們的客戶
帷拓科技歷經(jīng)十年沉淀,與國內外上千家客戶達成合作關系,其中穩(wěn)定合作的公司有:浙江華為、浙江移動、浙江5G產(chǎn)業(yè)聯(lián)盟、浙江省社科院、綠城足球俱樂部、娃哈哈雙語學校、健康中國杭州峰會、科雷機電等,帷拓科技始終堅持“帷有專業(yè),才能拓展無限”的服務理念,堅持“認真堅持細節(jié)”的優(yōu)質服務理念,不斷完善自身,成就企業(yè),最終實現(xiàn)共贏。
-
我們的業(yè)務
帷拓科技主營業(yè)務范圍包含互聯(lián)網(wǎng)高端網(wǎng)站建設、APP開發(fā)、小程序開發(fā)、商城網(wǎng)站建設、公眾號運營以及數(shù)字營銷等,涵蓋了服務、房產(chǎn)、數(shù)碼、服裝、物流貿易等行業(yè),根據(jù)品牌現(xiàn)狀,為每個客戶量身定制項目整體服務方案,以敏銳的市場洞察力、創(chuàng)新的市場策劃能力,全面把握市場變化,為客戶實現(xiàn)從企業(yè)到消費者的價值轉換。