自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript實現(xiàn)HTML5重要語言

開發(fā) 前端
過去幾年間,我對JavaScript的態(tài)度有了徹底的改變。JavaScript已經(jīng)“長大成人”了。我敢保證很多JavaScript開發(fā)人員都不會 認同我前面的說法,他們會說JavaScript一直都是一個十分強大、成熟,深得人心的語言。

很長時間以來,JavaScript在我眼里都是編程語言中的二等公民。早先,它經(jīng)常是很多安全問題的發(fā)源地,就像是膠水一樣,它能把HTML應(yīng)用與樣式 粘到一塊,可沒有人拿它來正正規(guī)規(guī)地編寫程序;這樣的情形太普遍了。而Java、Ruby、Python,這些才是真正能用來編寫程序的語言。

過去幾年間,我對JavaScript的態(tài)度有了徹底的改變。JavaScript已經(jīng)“長大成人”了。我敢保證很多JavaScript開發(fā)人員都不會 認同我前面的說法,他們會說JavaScript一直都是一個十分強大、成熟,深得人心的語言。或許他們說得沒錯,事實上只要是一門完整的編程語言,就能拿來編寫程序,也包括BASIC這種濫東西。而一門語言真正有用,必須一方面自身具備很強的表達能力,另一方面還要有眾多的庫和開發(fā)工具。顯 然,JavaScript的表達能力早就沒有問題了,即便是創(chuàng)建對象的方式有點不好讓人接受,其實問題也不大。直到最近,一些極其重要的扭轉(zhuǎn)局面的技術(shù)出 現(xiàn)了:jQuery、JSON、Node.js和HTML5?;蛟SJavaScript以前就是一門完善的語言了,但卻是這些重要的相關(guān)技術(shù)(以及其他一 些沒有在這里提及的),讓JavaScript成為了每一個開發(fā)人員都知道的語言。如果明年你要學一門新語言的話,那一定就是JavaScript。

潛力無限的Node.js

[[90179]]

說Node.js潛力無限的意思,就是它有可能引發(fā)Web開發(fā)的革命。 Node.js是一個框架,用于構(gòu)建高性能Web應(yīng)用——即使是巨量的請求也能應(yīng)對如流。雖然Node本身作為一個底層框架,能夠用于構(gòu)建任何應(yīng)用,但它 還是最適合構(gòu)建Web服務(wù)器。它的異步事件驅(qū)動模式與傳統(tǒng)的請求-響應(yīng)模式相比,無疑更適合Web應(yīng)用。

有兩方面因素更讓人看好Node。首先,Google在提升JavaScript性能方面掀起了一場革命。這句話的意思并不是說你隨時隨地都可以用上*** 的JavaScript引擎(盡管這也是我們一個美好的期望)。但可以肯定的是,Google在其他競爭對手還沒有上心的情況下,真的把 JavaScript性能當成了一回事兒。如此一來,就把Mozilla、Apple、Microsoft、Opera,還有其他瀏覽器開發(fā)商逼到了性能 競賽的跑道上。結(jié)果導致我們現(xiàn)在使用的JavaScript引擎較之幾年前快了不知道有多少倍,完全有能力運行復雜的大型Web應(yīng)用。

其次,Node有著龐大的開發(fā)人員基礎(chǔ)。不管大家在服務(wù)器端使用的是什么語言,但在客戶端卻鮮有不使用JavaScript的。有的人可能是“剪刀加漿 糊”式的東拼西湊,有的人則可能用JavaScript做出了高超的Ajax應(yīng)用,而有的人甚至實現(xiàn)了全功能的應(yīng)用程序,像Twitter或Gmail。 可不管怎么說,JavaScript開發(fā)人員的數(shù)量無疑是非常龐大的。而Doug Crockford等作者更是極力宣傳所有人都應(yīng)該把JavaScript當成一門嚴肅正經(jīng)的編程語言來看待——盡管它還有不少缺點。

當時當下,編寫Node應(yīng)用相對還是個“粗”活兒,畢竟它只是一個底層庫。想象一下單純使用JavaScript寫代碼,對,就是這種感覺,Node當前 還是一個beta版的格局,與Rails或Django這樣成熟的Web開發(fā)框架還沒法比。這種狀況無疑會改變。一些輕量級的框架,比如Express,已經(jīng)出現(xiàn)了;我堅信更多基于Node的全功能框架將繼續(xù)不斷涌現(xiàn)。

前面提到過一些幾乎完全在瀏覽器中運行的高級Web應(yīng)用。那些都已經(jīng)不算什么新鮮事兒了,Gmail多大了?Google Maps貴庚了?不過,用JavaScript編寫在瀏覽器中運行的應(yīng)用的客戶端無疑是越來越有吸引力了。HTML5則繼續(xù)推高了人們對這一趨勢的期許。

HTML5就是JavaScript

我不知道已經(jīng)說過多少次了,HTML5實際上并沒有多少與HTML有關(guān),它其實就是JavaScript。HTML本身有什么變化?不過一些新標簽而已, 況且哪個新標簽都不難理解。HTML5的威力在于讓你能用JavaScript來創(chuàng)建這些標簽。假如沒有后臺代碼通過Canvas來創(chuàng)建動畫、游戲,或者 通過它來實現(xiàn)一些數(shù)據(jù)的可視化,這個標簽也沒有大用處。從瀏覽器開始支持Canvas開始,我已經(jīng)看到了Asteroids(行星游戲)的上百個實現(xiàn),那都是開發(fā)人員為熟悉這個新特性所做的練習。有的比較粗糙一些,而有的則極其精美。這些完全都要歸功于JavaScript。

由此可見,HTML5并不是以尖括號為特征的標簽語言的一次大的改進,其實質(zhì)是賦予了JavaScript更強大的能力。WebGL庫 (當前還羽翼未豐)支持在HTML5的畫布中繪制實時的3D圖形。HTML5的地理位置支持在瀏覽器中實現(xiàn)LBS(Location Based Service)應(yīng)用——這都是手機的基本配置。而持久存儲以及離線功能則為開發(fā)能與桌面應(yīng)用媲美,但卻在瀏覽器中運行的全功能應(yīng)用奠定了基礎(chǔ)。目前,就 連增加多點觸摸事件的實驗性的庫也已經(jīng)出現(xiàn)了。凡此種種,無一不是實實在在的JavaScript特性。HTML5只是為這些高級功能的發(fā)揮提供了舞臺。

退一步講,不依賴于HTML5的瀏覽器端開發(fā)庫也取得了長足的進步。長久以來,JavaScript一直都是在HTML中實現(xiàn)動態(tài)效果的不二之選??蓛蓚€問題遲遲得不到解決:一是瀏覽器兼容性問題,二是直接操作DOM太麻煩。jQuery讓這兩個問題霎那間消失得無影無蹤,這個庫已經(jīng)成為現(xiàn)代基于瀏覽器的客戶端開發(fā)的基本配置。不過,并非只有jQuery。Protovis、還有D3,都可以讓你直接在瀏覽器中創(chuàng)建復雜的交互性數(shù)據(jù)可視化效果,有史以來***次讓瀏覽器成為了展示數(shù)據(jù)的一個重要媒介。

JavaScript與數(shù)據(jù)庫,編譯器與語言

就連數(shù)據(jù)庫里都開始廣泛使用JavaScript了!當前如火如荼的NoSQL運動的三只領(lǐng)頭羊:CouchDB、MongoDB和Riak,都是“文檔數(shù)據(jù)庫”。它們保存的不是表,而是文檔。這幾個數(shù)據(jù)庫所謂的“文檔”,其實就是JSON文 檔,而不是Word或Excel。(Riak除了JSON文檔,還支持XML和純文本。)JSON已經(jīng)成為一種被廣泛采用的數(shù)據(jù)交換格式(所有現(xiàn)代的編程 語言幾乎全都有解析JSON的庫),不過請注意,JSON實際上不就是一種序列化JavaScript對象的格式嘛!因此,雖然你可以在任何語言中使用 JSON,但在JavaScript開發(fā)中使用它則是再自然不過的事了。況且,JSON 這個格式成為一種跨語言的標準,而不是Python、Ruby或Java等語言的序列化格式,這個事實本身足以說明JavaScript將在更加廣闊的舞 臺上大顯身手。還不僅僅如此,上述三個數(shù)據(jù)庫都內(nèi)置了支持JavaScript查詢的能力。未來幾年,更多的人都將會驚訝地發(fā)現(xiàn),JavaScript和 JSON還會內(nèi)置到其他應(yīng)用程序中!

JavaScript時代的大幕才剛剛拉開。在今年的JSConf上,一個核心主題就是“JavaScript到JavaScript的編譯器”,也被人們看成是未來的一個主要趨勢。Google在“編譯生成JavaScript代碼”方面是首開先河者。據(jù)我所知,GWT(Google Web Toolkit)應(yīng) 該是通過編譯(從Java代碼)生成JavaScript代碼的***個框架。以前我對GWT并沒有太重視,只是覺得它是一個致力于拯救那些Java程序員 的框架,好讓他們不必因為(學習)編寫JavaScript而浪費時間??墒?,GWT在編譯過程中對JavaScript做了那么多的優(yōu)化,簡直是太神 了。Closure就是一個“JavaScript到JavaScript的編譯器”,能夠?qū)崿F(xiàn)同樣級別的優(yōu)化。Traceur,這是幾個星期前才冒出來的一個框架,通過它能夠試驗JavaScript的新特性,換句話說,它可以把帶有實驗性語言特性的JavaScript代碼編譯成可以在所有現(xiàn)代平臺中運行的JavaScript代碼。

***,我們也開始看到了當初Java大旗下JVM語言的蓬勃景象:很多語言都在致力于編譯成JavaScript!其中有一些語言比較有意思,像Coffeescript和Kaffeine, 它們在風格上酷似JavaScript,但更關(guān)注彌補JavaScript的一些不夠完善的地方。是不是覺得JavaScript的對象模型特有意思,可 怎么看怎么有點笨笨滴,有木有?是不是一想到基于原型創(chuàng)建一個實際的對象都需要反反復復地定義這定義那,就望而卻步了,有木有?Coffeescript 對此作了明顯的改進。除了完善對象模型,Coffeescript 還添加了類似列表解析(list comprehensions)的新特性,去掉了大部分花括號。就像在Python中一樣,要使用縮進來區(qū)分代碼塊。

未來的Web服務(wù)器、取之不盡的客戶端庫、HTML5、數(shù)據(jù)庫,乃至基于JavaScript的語言——我現(xiàn)在一睜眼看到的就是JavaScript!假 如你曾經(jīng)對JavaScript敬而遠之,今年可是該學習它了。沒有任何理由,真的,再不學,恐怕你就沒機會跟上時代了!

原文鏈接:http://www.html5cn.org/article-3214-1.html

【編輯推薦】

  1. HTML5分裂成兩個標準
  2. 一張圖告訴你HTML 5 的歷史
  3. HTML 5和Flash是一場無止境的爭論
  4. Google推薦的15條HTML 5代碼軍規(guī)
  5. 開發(fā)者和老板都要知道的HTML5的那些事
責任編輯:張偉 來源: HTML5中國
相關(guān)推薦

2018-03-05 17:29:52

SparkApache SparSpark 2.3

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2011-05-25 09:34:30

HTML5cssjavascript

2012-11-05 11:20:31

HTML5FaceBook

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2015-07-24 17:08:24

2009-10-29 09:53:02

2011-08-05 09:29:02

2013-10-21 15:24:49

html5游戲

2011-05-13 17:36:05

HTML

2009-07-30 17:59:43

標記語言XHTML2HTML5

2012-12-03 13:53:38

IBMdW

2012-01-04 00:10:52

ibmdw

2018-05-30 08:54:00

離線存儲HTML5

2017-01-03 18:09:33

HTML5本地存儲Web

2011-05-12 15:42:16

HTML5

2011-05-13 17:41:40

2011-01-14 17:53:33

HTML5cssweb

2023-03-16 09:00:00

HTML5HTML語言

2019-02-21 22:27:34

5G
點贊
收藏

51CTO技術(shù)棧公眾號