本文將介紹JavaScript的特別之處,爲何要使用JavaScript,以及web開發的其它相關技術的優缺點。javascript
JavaScript是一種腳本語言,爲裝飾網頁而生。它使得網頁能夠作更多的事情。css
除了名字與Java相關外,此語言和Java沒有太多關係,JavaScript的語言規格稱爲ECMAScripthtml
JavaScript中的程序稱爲腳本,它不是一種彙編語言,要運行它,你僅須要寫一段腳本,並把之添加到Html代碼中。java
一些人認爲JavaScript很像Python,也有人認爲它和Ruby或Self很相似,然而JavaScript是一種優雅,特殊並且獨立的語言。程序員
修飾HTML頁面,輸入文本,添加刪除標籤,改變樣式等等;web
監聽事件,並執行相關代碼,如鼠標點擊,移動,鍵盤輸入等等;ajax
像服務器發送請求,在沒有reload的狀況下加載數據(ajax..);數據庫
獲取以及設置cookie,請求數據,輸出信息等等;小程序
..以及更多其它強大的功能;segmentfault
JavaScript是一種快速且強大的通用語言。可是以瀏覽器爲容許環境就使得它有一些安全方面的限制。這是由於你固然也不但願網頁在你的設備上胡做非爲(讀寫你的文件,安裝莫名其妙的軟件..),所以腳本語言具備嚴格的安全限制,你也可以放心的打開一些頁面。
JavaScript的做用大多被限制在一個瀏覽器窗口內
JavaScript不能讀寫硬盤裏的資料,複製文件或者調用其它的程序,它沒有直達系統的權限(一些較新的瀏覽器在安全的範圍內提供這樣的能力);
某一頁裏面的javaScript不能影響其它頁或窗口裏面的頁面,也有例外,當兩個窗口同域時(same domain).
一個擁有JavaScript的頁面可以在當前域內無限制的進行網絡請求,在有安全措施的前提下對其它域進行網絡請求也是可能的。
最酷的地方至少體如今三方面。
與Html/Css的完美整合;
簡單的事情能夠簡潔的完成;
被因此瀏覽器默認支持;
其它任何web開發技術都作不到這三點,並且JavaScript是一門不斷髮展的語言,新的特性也在不斷的被加入,現代的ECMAScript標準在不斷的帶來新特性,新的JavaScript引擎也工做得愈來愈快,愈來愈好。
當你準備學習一種新技術,瞭解該技術的發展趨勢,能使得你的時間投資更具價值。
除了當前的ECMAScript標準增進了語言的自己,瀏覽器開發商也在不斷的採用Html5技術,這是一種相對的標準,更準確的說是一種領先標準,其中包含了許多可能你須要等待不少年才能經過的技術。如下是一些例子:
在保證安全的狀況下,讀寫訪問者硬盤裏的一些文檔;
在瀏覽器內內嵌數據庫,容許在客戶端存取一些數據;
多線程運行;
視頻錄播;
使用硬件加速,繪製2D,3D圖形(相似於現代遊戲);
Html5這個名字可能存在必定的誤導性,正如你可能已經知道的這個新標準並不是僅僅關於Html,也包括更強大的瀏覽器特性;
趨勢在於,JavaScript在加強其自身的能力,變得愈來愈強大,嘗試着達到桌面app的能力;
現代瀏覽器在改善其引擎,已達到更快的JavaScript解釋速度,它們一樣修復着bug,並緊隨着新標準改善本身;
這個趨勢是,JavaScript變得更快更穩定;
一樣值得注意的是新的Html5標準和ECMAScript6標準是兼容老的標準的,這意味着老的頁面也能正確的運行。
不過,誠實說來,Html5也有一些小的問題,即「瀏覽器跑得太快了」,一些特性還只是草案,可是因爲該特性太出色,一些瀏覽器火燒眉毛得就採納了它。所以在使用這些特性時,應該考慮其兼容性問題。
這個趨勢是,新的特性是具備較好的兼容性的除了少數瀏覽器採納的了教超前的特性。
在一些方面,JavaScript是受限的,這就是爲何其它的一些技術會被採用。並且這些技術可以較好的和JavaScript配合使用,當咱們只用JavaScript不能處理一些問題時,咱們可能能夠經過JavaScript + Java或JavaScript + Flash或JavaScript + ActiveX來解決。
你已經知道JavaScript和Java並無太大的關係,Java是一種容許你寫小程序並內嵌到Html頁面中的語言。
一個Java小程序就像一個能夠在瀏覽器中運行的文件,程序員用Java編寫,編譯並在html頁面中連接到它,當瀏覽器打開了一個頁面,將會找到這個連接,引用,下載並執行它(Java環境支持);
Java小程序和JavaScript最大的區別在於它們的能力:
像安裝的程序同樣,Java小程序可以作任何事情,出於安全方面的考慮,一個不安全的操做須要使用者的確認。
Java開發很容易,衆多IDE很是完善;
Java須要更長的時間加載,開始運行佔用資源更多;
運行系統需安裝並開啓Java環境;
Java並無和html整合,它在頁面裏的一個單獨的容器中運行;
flash最初是爲多媒體而生,而且具備跨瀏覽器跨平臺的特性,配合動畫,音頻,視頻它使得web頁面更加生動,flash也有一些其它的有趣的特性。
一段flash電影是一段用ActionScript寫的編譯程序,一般捆綁有圖片和一些其它的資源。
很是適合網絡訪問(sockets, UDP for P2P);
與Html5相比,支持更復雜的多媒體,對圖片,音頻,視頻支持更好,也支持相機和麥克風;
製做flash具備較好的IDE,與瀏覽器的兼容性很是好;
須要預先安裝並容許使用falsh;
Flash並無和html整合,它在頁面裏的一個單獨的容器中運行
Flash具備和JavaScript同樣嚴格的安全限制;
目前,falsh在不少方面的壟斷面臨較大的壓力,好比說Html5原生只是播放視頻,繪製動畫等等,支持Html5的瀏覽器就再也不須要Flash作視頻音頻方面的事情了。
falsh和Java都可以調用JavaScript,反之亦然,所以一個網站一般大多使用JavaScript,在JavaScript力不能及的地方使用Flash或者Java;
ActiveX是一個很是好的可是ie獨享的事物,它容許當用戶訪問時,頁面中整合進用c語言寫的程序。
和html/css具備較好的整合;
用c語言撰寫,功能豐富容許快速;
若是用戶容許,能夠作任意事情;
IE專屬,Chrome在用戶容許的狀況下部分支持;
ActiveX開發比較困難;
windows上的程序可以經過ActiveX整合,所以,一個頁面能夠調用Word,加載一個文檔進入Excel等。
其它瀏覽器容許經過使用NPAPI撰寫插件和拓展。
這些技術的使用範圍相對窄一些。
XUL是一種爲接口而生語言,若是你爲火狐瀏覽器寫拓展,它很是有用,對一些桌面應用來講也頗有用;
Silverlight是微軟基於.net開發的與flash作競爭的產品,在windows上運行較快,也在逐漸改善跨平臺的支持能力,經常使用於內聯網和基於Windows的應用;
VBscript是微軟基於Visual Basic開發的一種相似JavaScript的語言,已通過時,如今再也不開發,和JavaScript比起來,其缺少不少功能;
JavaScript的獨特處體如今它的普遍使用和與Html/Css整合最好。
JavaScript具備最光明的和或多或少兼容的將來;
一個好的JavaScript程序員也應該瞭解一下其它的語言,在特殊的場景下可能會用到它們。