成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

重思JavaScript的JavaScript

移動開發
一個只花了10天就開發完成的腳本語言,自從誕生開始,就一直成為人們爭論的焦點。盡管這樣,它在編程語言中地位仍然無法動搖,全世界有幾百萬學習者和粉絲。

最近,我和許多程序員一樣,對JavaScript進行重新探討。事實上,JavaScript是一個非常有能力的語言,但使用新JavaScript一年后,我得出的結論卻是JavaScript仍然很爛。我并不是在討論其古怪的比較運算。而是從更深的層次去思考。與此同時,還會提供一些解決方案供你選擇。


 

[[106567]]


 

直奔主題

13歲時,父親送給我第一本編程書籍——JavaScript初學者編程。讓我興奮的是,我發現電腦并不單單是由電線和發條所組成,里面的代碼清晰明了。我覺得我基本上理解它了,實際上也差不多。終究,代碼除了人類理性思想的形式化還能是什么?

說實話,我當時希望遇到的是Java,我甚至在谷歌上搜索:“JavaScript和Java是同一種語言嗎?”當然不是。所以Java成為了我學習的第二門語言,不過我母親和繼父不希望在家庭電腦里安裝軟件,所以我無法安裝Java編譯器。我清晰地記得,在把代碼上傳到一個在線編譯器之前,得反復檢查代碼,然后等待、下載jar包……

我當時認為,JavaScript是一個非常嚴肅的語言。在Notepad里新建一個HTML文件,然后在IE里打開,就這樣開始了。沒有類、沒有私有和公有方法,沒有final變量。當時,我甚至不知道什么叫“過度設計”,但它準確地描述了我印象中的Java:

  • 無需編譯
  • 無處不在的開發平臺
  • 沒有高級語言特性
  • 查看源文件

為什么這么偉大的語言還會討人厭?

Ad-hoc地獄

下面是一些問題:設計之匆忙、初衷僅僅實現簡單的網頁互動、JavaScript繼承完全缺乏設計指導,一切都是ad-hoc:

  1. 沒有OOP:JavaScript確實存在基本的對象模型,但幾乎無人知道它是如何工作的。
  2. 沒有標準庫:從論壇上復制粘貼代碼不好玩。
  3. 沒有模塊系統:不斷查找下載鏈接和很長的源文件。
  4. 缺乏語言資源:沒有高品質的資源(幾乎沒有一本像樣的書籍)意味著你只能從論壇或博客上獲得一些非官方的參考。

既然JavaScript有這么多缺陷,到底是什么讓它如此流行?

復興

JavaScript崛起的背后可能與谷歌V8引擎息息相關。JavaScript突然變得很快,真正地快速。所以人們開始硬著頭皮使用它來編寫Web應用程序。

然而,Node.js推出了一些更吸引人的基準,允許代碼在客戶端和服務器端重用,很像MeteorDerby。因此,情況開始好轉:

  1. 下載按鈕變得更大
  2. Node.js kind of sort of standardized an import system
  3. 人們可以編寫更好的庫
  4. 優秀的資源開始出現

然而:

  1. 仍然沒有采用OOP
  2. 客戶端和服務端的JavaScript仍然沒有關聯
  3. 文檔甚至是高知名度項目文檔也很糟糕

為什么?

我認為現代JavaScript仍然較爛的根源是其處在一個特定的社區氛圍中,該氛圍一直強調:JavaScript是一門非常好的語言,但卻一直被人誤解。不,JavaScript只是一個提早誕生且沒有先例可循的語言。停止包庇并且開始把JavaScript作為一個平臺去擁抱,作為一個編譯目標。

文檔

人們可以盡情嘲笑Java,但當我看Java文檔時,我可以非常明確地知道哪個對象可以創建、每個方法里的參數、需要拋出的異常等。最好的事情莫過于使用JavaScript庫作為精選示例代碼。這幾乎是不可能寫出正確的軟件,除非你閱讀庫源碼。甚至連如此完整的JavaScript項目Express也存在令人生厭的API文檔(Ember他們那些非常優秀的API文檔可能是反例)。

語法糖

JavaScript社區很快就拋棄了語法糖。語法糖是極富創造力的。將重復邏輯代碼抽象出來,可以通用,幫助程序員以更好的方式編寫代碼。

  • 讓代碼更加簡潔
  • 有助于表達代碼背后的意思,而不是算法。我已經知道了數組迭代算法,好吧,謝謝你,但是請你不要告訴我這些,我只想知道你要做的東西。

作為一名編碼人員,你的主要觀眾不是電腦,而是其他程序員,也包括將來的自己。書寫冗長的for循環很爽,但說實話,for (var i=0; i<arr.length; i++)與for e in arr 比起來,人們更愿意讀后者。順便說一下,這里的JavaScript版的循環比CoffeeScript速率要慢,你知道為什么嗎?

JSLint

如果程序員使用JavaScript尚未感到痛苦,那JSLint成功做到了這點,而且非常“成功”! 想象一下,在某個編碼的新兵訓練營里,想要對JavaScript進行尷尬的懲罰,然后在其身上進行拔毛,這好比是拿著牙刷在刷廁所。事實上,我寧愿從牦牛身上拔毛。這是原文中的例子,小編的理解是JSLint的出現是給JavaScript挑刺的,而這樣還不如直接在JavaScript身上拔毛。


 

[[106568]]


 

更值得注意地是,作為程序員,我們應該尋找自動化,難道你不希望自己可以自動化JSLint嗎?當然,你可以。CoffeeScript可以***的生成linted代碼,正如Jeremy。

OOP

JavaScript對象模型還是不夠成熟,原型(Prototype)繼承是一個低級別的功能,可以創建一些非常有意義的對象模型,但卻無法基于本身進行構建。

這也可能是JavaScript API為什么會那么糟糕的原因,當你所使用的語言甚至沒有類時,該如何記錄面向對象代碼呢? 最重要的是,當我們甚至不知道實例化對象時,JavaScript開發人員該如何實行互操作?

有什么可選項嗎?

年復一年,筆記本逐步成為主流、政壇也發生了不少的變化,而JavaScript仍然保持不變。你愿意等一些基本特性多少年?在這篇悲觀論調的文章里,讓我們先看看下面這個列表:

  1. Mozilla發布了自己JavaScript1.7或1.8,前者是在6年半之前發布的,且不向后兼容,但并無人使用且永遠不會有,同樣也適用于后者。
  2. ECMAScript Harmony。最近,由于設計委員會的原因,發布新版ECMAScript將會有一個極其緩慢和痛苦的過渡過程,特別是它有一些特效是與JavaScript不兼容的。沒有解決方案,除非你愿意再等數十年。

下面列出一些可選項

  1. CoffeeScript語法非常漂亮且支持類。我認為CoffeeScript并未結束,只不過是剛剛華麗地開啟。
  2. TypeScript一種編譯到JavaScript的語言,可以在JavaScript中構建并且添加了靜態類型。個人而言,我是它的大粉絲。正如Mohamed Mansour和Dave Hodder在評論中指出的那樣,TypeScript正在進一步實施ECMAScript的一些建議,也許ECMAScript最終會從TypeScript中借鑒可選的靜態類型。
  3. Google Dart一個全新的語言,附帶JavaScript編譯器和一些JavaScript互操作,但整體上并未整合到JavaScript生態系統中。
  4. HaXe這是一個高級語言,可以編譯JavaScript、Flash、NekoVM、PHP、C++、C#和Java(不久后),雖然我從未使用過,但它真的令人印象深刻。

總結

***,我敢押注,最終的獲勝者肯定是編譯為JavaScript的語言。雖然我們還沒真正準備好這樣的過渡,但是所取得的進展仍是有目共睹的。盡管也存在些偏離,但他們正在替未來的Web發展鋪平道路。不管最終哪門語言會勝出,我都想強調一下我的主要觀點:JavaScript目前仍然存在許多不足,我們需要擁抱一個新語言并且推進它。

責任編輯:冰凝兒
相關推薦

2024-11-28 10:09:06

2012-08-10 10:15:50

HTML5

2011-10-20 15:56:07

Dart

2011-05-25 14:23:55

Javascriptthis

2014-03-11 23:10:35

JavaScriptJS

2015-08-11 09:46:26

JavaScriptDOM編程重排

2013-04-07 09:57:45

CouchbaseMySQLNoSQL

2009-07-14 14:12:14

Javascript

2014-01-03 09:13:39

JavaScriptthis

2012-12-18 10:03:22

JavaScriptWebJS

2018-01-03 13:06:13

JavaScript成本開發

2013-05-08 10:36:07

JavaScriptJS詳解JavaScrip

2021-04-07 10:12:05

Javascript對象拷貝開發

2009-06-09 22:07:24

Javascript缺

2011-08-10 10:27:47

思杰XenServer 6

2015-07-20 16:41:16

MongoDBJavaScript

2021-05-14 00:00:15

JavaScript開發代碼

2011-05-25 10:03:00

JavaScriptwith

2019-11-06 09:52:01

JavaScript單線程非阻塞

2011-07-19 13:29:50

JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久中文字幕三级久久日本 | 久久久国产一区二区三区 | 99精品一区二区三区 | a在线免费观看视频 | 欧美日本久久 | 国产在线看片 | 亚洲高清在线播放 | 91在线视频播放 | 亚洲精品一二区 | 毛片一级片 | 国产乱码精品一区二三赶尸艳谈 | 福利视频一二区 | 国产精品久久亚洲7777 | 日韩视频在线观看一区二区 | av电影手机在线看 | 日本欧美视频 | 999精品视频 | 久久久久精| 亚洲 欧美 日韩在线 | www.色综合| 一区二区精品 | 国产精品永久免费观看 | 亚洲资源在线 | 97视频在线观看免费 | 国产综合精品 | 91在线观看 | 懂色中文一区二区三区在线视频 | 99免费在线观看 | 欧美日韩a| 日日操夜夜操视频 | 精品在线一区二区三区 | 久久视频免费看 | 成人欧美一区二区 | 日韩精品一区二区三区中文在线 | 久久影院一区 | 中文字字幕一区二区三区四区五区 | 99av成人精品国语自产拍 | 国产一二三区精品视频 | 男人av在线播放 | 久久毛片 | 一区二区视频 |