感歎JavaScript的重要性越來越大了

來源:互聯網
上載者:User

JavaScript是門指令碼語言,但好歹也是門語言,而且有強大特性的語言。

JavaScript與Java有關係,不過只保留了基本關鍵字的相似,遠不如C#與Java關係緊密。

C#3.0以後,已經越來越不像Java了,越來越多的動態元素加入進來,JavaScript十幾年前實現的,不斷成了C#新版本的賣點。比如擴充方法,C#實現得很巧妙,但比起Javascript來,就顯得彆扭了。我們要擴充一個String類型的format方法,就可以,不必額外在一個靜態類裡寫。

String.prototype.format = function() { this.replace(/\{(\d+)\}/g, function(m, i){ return args[i]; }) }

JavaScript有委託,有事件,有異常處理,物件模型也很豐富。雖然不能繼承,不過對象都可以無限擴充,有無繼承也沒那麼多的意義了。

瀏覽器市場競爭日趨白熱化,不管是IE9,FireFox 4還是Chrome X,競爭的焦點都是速度,速度的核心自然是Script執行速度。

一堆指令碼源碼在別人機器上解釋執行,沒法不開源。開始網站的指令碼都很少,但隨著客戶體驗要求的提高,指令碼得也越來越龐大複雜。很快大家發現,儘管代碼都發布在網上了,也沒什麼嘛。現在流行JS壓縮技術,更沒人看了。於是代碼開源運動興起了,JavaScript是開創者。

從創立至今,微軟從未被對手真正打敗過,卻三次敗給了JavaScript,承認了JS在Web前端的獨霸地位。第一次是微軟在Asp.Net中忍痛拋棄了親生孩子--VBScript,全面支援JS;第二次是匆忙發布Ajax Extensions系列組件;第三次VS2008中整合了JQuery和代碼提示為標誌,Asp.Net大有融入富用戶端之趨勢。

不過十五年了,JavaScript還沒有一個被廣泛認可的開發環境,真不知道GMail那幾十萬行代碼是怎麼寫出來的。有好用的工具他們也不會公布,只能繼續指望微軟了。不過十幾年都這麼過來了,沒有也就那麼的吧。

有些人很仇視JavaScript,接觸過不少做過兩年以Web開發還沒寫過超過一百行JS代碼的人,轉行吧兄弟。

對編程新手來說,JavaScript是入門的不二選擇,門檻為零,實用性強,易學難精,比其它語言好處太多了,既能調動起有潛力入門者的興趣,又能適時讓沒有興趣者知難而退,不致以後濫竽充數。以後我寫程式了,就辦編程學習班,先教JavaScript,目標超過北大青島。

“這我也能實現”,上網看到一個複雜的JS效果時常常這麼想,可真要寫起來,就頭疼了。DOM操作的複雜性,瀏覽器安全色性很大地降低了寫JS的樂趣,於是JavaScript Framework如雨後春筍般湧現。

短短兩年時間,JQuery就脫湧而出,笑傲群雄。當時第一次聽說它,就覺得這名字很正點。有個叫得響的名字,才是成功的第一步。

可惜JavaScript當年一念之差,被認作Java的小弟,從此再難翻身,在編程熱門排行榜位置不上不下。雖然功能不斷增強,又出現了眾多架構,也改變不了只能在瀏覽器這一畝三分地裡折騰的命運。面試時人家問你會什麼語言最善長,你敢說JavaScript嗎?

不過要是瀏覽器將來喧賓奪主,取代或部分取代作業系統的話,那情況就完全不同了。待瀏覽器升華之時,正是JavaScript出頭之日。那時,Java可能早就進了博物館,JavaScript正躲藏在瀏覽器不為人知的角落,偷笑著與自己越來越像的C#。

在前端開發上,大家都沒有統一的想法。首先是架構選擇,現在看來,除了那種只有幾個頁面的小網站,毫無疑問應該以JQuery這樣的成熟架構為主,自己寫的擴充為輔。很多項目負責人不想用JQuery,可能網站連GZip不支援或者不設定,現在都什麼年代了?再者儘管掌握很容易,畢竟要學習,一談到學習很多Senior人士就不玩了。

JQuery本身也有問題,所有功能都在一個檔案裡,其實可以分成幾個小一點檔案,就像命名空間一樣劃分。再者更新太快,瀏覽器甚至JS核心想嵌入它,還是很遙遠的事。

JavaScript也沒有太好的開發平台,用來教新手入門很方便,代碼一多,就覺得亂得不得了。大家越用越不爽,一些複雜的效果,其實JavaScript完全做得來,也被Flash,將來還有SilverLight搶走了。HTML5標準快出台了,我曾預測會很大程度上代替Flash甚至SilverLight。但現在看來,JavaScript在開發上的弱點會制約HTML5的新特性的應用,也會嚴重影響HTML5的普及。在HTML5下,能做的事情就更多了,但編寫起來應該會更不爽,結果Flash和SilverLight活得更滋潤(這兩個互掐就不算了),各自的語言、架構、IDE、粉絲一個不少,Web前端開發延續分裂格局。

除非,JavaScript自己改變,既能解釋執行又能編譯執行,定義類型可動態,又可靜態,這點很重要,這樣才能進行類型推斷,智能提示,微軟也好,開源方也好才有興趣做真正為JavaScript量身打造的IDE。對語言模式、規範的研究將為JS語言注入新的活力。但這變化太革命性,沒可行性,這麼多瀏覽器,這麼多廠商,怎麼一致,誰能協調的了。除非有革命性的事件,上文說了,就是瀏覽器取代作業系統,案頭變成頁面,這雖然有可能,但太遙遠。

何況將來案頭變成頁面,未必就是HTML,我看更可能是RIA。但Flash沒這雄心,喬布斯說Adobe的人太懶得變化,又不開源。JavaFx太嫩了,Sun公司又被吞併了,未來沒媽的孩子-苦。SilverLight同樣嫩,出身太硬,有賊心有賊膽。儘管現在Flash還佔絕對優勢,不過一旦時勢有變,RIA應用進入案頭,只見銀光灑滿天。

若微軟強勢逆推SilverLight,是因早已預見到這一天,那就更有點可怕了。

回過來說JavaScript,可以預見,它在程式設計語言榜第十的地位,它的生態環境短期內不會有什麼變化。JS執行的速度越來越快,開發中的困擾依舊。

當然,您要是精通JavaScript,也是很令人佩服的,薪水應該也不會低。然而比起C/PHP/Java/C#這些語言說,唯寫前端,真得是比較沒前途。所以,我也沒動力向精通的門檻邁進了,所以繼續接受困擾,快習慣了,趁習慣麻木前記錄下來,不然以後連思考都沒了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.