您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)JavaScript的扶正之路是怎樣的,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
說到很流行的編程語言,可能要數(shù)JavaScript,Java和Python了。但是向上追溯幾年、十年、甚至是20年,在2000年的時(shí)候你絕不會(huì)相信,如今JavaScript將成為世界上很受歡迎的語言之一。那時(shí)候的JavaScript不僅無法完成專業(yè)語言所能做到的各個(gè)功能,甚至也沒有被設(shè)計(jì)成一種嚴(yán)肅的編碼工具。
概述
1995年,網(wǎng)景通信公司Netscape意識(shí)到,需要給瀏覽器一個(gè)簡便可用的瀏覽器動(dòng)態(tài)腳本程序以便于Microsoft的IE做市場競爭。于是在結(jié)束與Sun Microsystems戰(zhàn)略合作伙伴的之前,利用最后一段時(shí)間,讓Sun的Brendan Eich在不到10天時(shí)間內(nèi)創(chuàng)造了一個(gè)新的語言,并將它嵌入了Netscape 2瀏覽器中。
并且當(dāng)時(shí)為了蹭Java的熱度,他們將該語言叫做JavaScript。但是實(shí)際上和Java語言沒有半毛錢的關(guān)系。Java和JavaScript這兩個(gè)類似的名稱引起了很多人多年的困惑,至今還是個(gè)個(gè)問題。(JavaScript現(xiàn)在是甲骨文的商標(biāo)名稱,隨意使用可能會(huì)有版權(quán)問題。)
第一章 伊始:滾動(dòng)按鈕時(shí)代
在JavaScript誕生的頭五年中,它是不便使用Java (Applet)編程的人們的一個(gè)白板工具。其擁躉包括業(yè)余愛好者,以及急于做簡單完成任務(wù)的人。還有Web設(shè)計(jì)師一群新生技術(shù)工種,其工作是使網(wǎng)頁用戶界面看起來更加時(shí)尚和圖形化。他們想要的東西比
在專業(yè)領(lǐng)域,這是JavaScript的主要工作,創(chuàng)建UI膠水,將過度設(shè)計(jì)的網(wǎng)頁粘合在一起。當(dāng)你需要一個(gè)交互式按鈕,一個(gè)彈出菜單,一個(gè)圖像跨過動(dòng)態(tài)效果時(shí),你會(huì)用到 JavaScript。
不久之后,JavaScript開始被大量使用于創(chuàng)建類似效果:每當(dāng)鼠標(biāo)經(jīng)過時(shí),就將一個(gè)圖像換成另一個(gè)。
盡管認(rèn)為開發(fā)人員會(huì)使用代碼來自動(dòng)執(zhí)行發(fā)光按鈕,然后將其代碼分發(fā)到網(wǎng)頁上似乎有些瘋狂,但這是每個(gè)人都一遍又一遍地做的事情(今天,CSS提供了這種裝飾,它使用樣式設(shè)置和動(dòng)畫而不是預(yù)先生成的圖像文件,以更易于維護(hù)的方式來做到了這一點(diǎn)。)。很少有人期望JavaScript會(huì)走得更遠(yuǎn)。而且,許多編碼人員更樂于使用服務(wù)器端編程語言,讓它們按需提供正確的JavaScript腳本。 JavaScript可以為應(yīng)用程序中的業(yè)務(wù)邏輯提供支持的想法就像用Excel宏替換數(shù)據(jù)庫存儲(chǔ)過程一樣荒唐。
第二章 限制:沙盒的囚徒
今天,當(dāng)人們批評(píng)JavaScript時(shí),通常是由于其語言本身的局限性:補(bǔ)補(bǔ)修修的面向?qū)ο蠊δ?,弱類型安全,笨拙的DOM模型,==與===的混淆等等。但JavaScript并非天生就是如此。畢竟,有許多丑陋的編程語言,也都是因?yàn)樵谡_的時(shí)間出現(xiàn)正確的領(lǐng)域而變得重要。(比如BASIC,COBOL,SQL和PHP)JavaScript是當(dāng)時(shí)所有Web瀏覽器中唯一支持的語言,伴隨著Web正占領(lǐng)世界的同時(shí),它肯定在正確的時(shí)間出現(xiàn)在了正確的位置。
JavaScript的真正限制是沙盒,嚴(yán)格控制的環(huán)境,可將代碼固定在適當(dāng)?shù)奈恢?。沙箱將JavaScript與桌面世界隔離開來。例如,JavaScript代碼無法直接訪問文件系統(tǒng),顯示器或任何硬件。更嚴(yán)重的是,它切斷了JavaScript與Web服務(wù)器上所有內(nèi)容的聯(lián)系,例如存儲(chǔ)用戶列表和產(chǎn)品目錄的數(shù)據(jù)庫以及運(yùn)行業(yè)務(wù)邏輯的服務(wù)器端代碼。JavaScript被迫獨(dú)自戰(zhàn)斗的一線,但是也是整日忙忙碌碌而無所事事,只能旋轉(zhuǎn)Web頁面上的按鈕。
第三章 反叛:Ajax和XMLHttpRequest
然而幸運(yùn)的是微軟并沒有對(duì)JavaScript產(chǎn)生多大的敵意,也在IE中保留了它。并打算以"擁抱,擴(kuò)展和撲滅"的理念消耗競爭對(duì)手。
當(dāng)時(shí)Microsoft的一個(gè)團(tuán)隊(duì)正在研究一種使Outlook的Web前端響應(yīng)速度更快的方法。他們正在構(gòu)建一個(gè)名為Outlook Web Access的產(chǎn)品,看起來像這樣:
微軟團(tuán)隊(duì)的目標(biāo)是相對(duì)適度的。他們想開發(fā)一個(gè)在瀏覽器中運(yùn)行的高效電子郵件閱讀器。最重要的是,他們不想每隔幾秒鐘刷新一次整個(gè)頁面。取而代之的是,他們采用的是一種允許網(wǎng)頁在后臺(tái)靜默檢查新郵件的技術(shù)。這個(gè)目標(biāo)現(xiàn)在看來似乎并沒有啥大不了,但請(qǐng)記住那個(gè)年代Gmail還沒有出現(xiàn)呢,谷歌也才剛剛出現(xiàn),沒有啥名氣。
微軟團(tuán)隊(duì)使用一種被稱為XMLHttpRequest的ActiveX組件創(chuàng)建了一些管道。 XMLHttpRequest的基本思想很簡單:它為JavaScript代碼提供了一種進(jìn)行Web請(qǐng)求的方法。就像瀏覽器可以聯(lián)系網(wǎng)絡(luò)服務(wù)器并發(fā)出請(qǐng)求(例如,"嘿,請(qǐng)給我一個(gè)頁面!")一樣,JavaScript代碼也可以使用XMLHttpRequest對(duì)象發(fā)出自己的請(qǐng)求(例如,"嘿,請(qǐng)?jiān)俳o我發(fā)送一些郵件")。
突然之間,潘多拉魔盒被打開了,Web頁面開始可以調(diào)用Web服務(wù)器的所有資源:
需要數(shù)據(jù)庫中的一些數(shù)據(jù)嗎?調(diào)用服務(wù)器并查詢。
服務(wù)器需要執(zhí)行計(jì)算,安全測試,超級(jí)機(jī)密驗(yàn)證檢查嗎?也請(qǐng)調(diào)用服務(wù)器。、最重要的是,在后臺(tái)進(jìn)行調(diào)用時(shí),頁面顯示不會(huì)受到影響。
但是XMLHttpRequest也有很多問題。首先,它的名稱很奇怪,大小寫不一致,導(dǎo)致區(qū)分大小寫的語言(例如JavaScript)很頭痛。
其次,就像它名字表明的一樣請(qǐng)求發(fā)送和接收使用XML消息?,F(xiàn)實(shí)情況是,消息幾乎可以是任何東西,普通文本,HTML塊或序列化為JSON的JavaScript對(duì)象。但是比較大的問題當(dāng)屬的XMLHttpRequest的的支持技術(shù)。它是用ActiveX構(gòu)建的,這樣它只支持在Windows計(jì)算機(jī)上運(yùn)行,只能在Internet Explorer中運(yùn)行。
這些怪癖都沒有阻止它。在短短的幾年內(nèi),其他瀏覽器都提供了自己的XMLHttpRequest實(shí)現(xiàn)-代碼中的相同對(duì)象,但沒有ActiveX麻煩。
盡管微軟創(chuàng)建了XMLHttpRequest,但是并沒有在自己的Web開發(fā)得到充分利用它。甚至在,他們后續(xù)的公共Web的電子郵件系統(tǒng)Hotmail中也沒有使用。
相反,是谷歌首先利用XMLHttpRequest技術(shù)開發(fā)出了讓世界震驚的Web產(chǎn)品。谷歌首先在2004年使用開發(fā)了公共Web郵箱Gmail;
接著,次年又開發(fā)出了Google Maps。
這兩個(gè)偉大的產(chǎn)品開始讓XMLHttpRequest和Ajax技術(shù)大放異彩而流行于世。
第四章 扶正:通往現(xiàn)代的道路
XMLHttpRequest是改變JavaScript進(jìn)程的關(guān)鍵要素。但是,此后還有很多拐點(diǎn)。
多年以來,JavaScript語言一直處于凍結(jié)狀態(tài)。市場領(lǐng)先的IE瀏覽器要伴隨著操作系統(tǒng)升級(jí)而升級(jí),版本迭代非常緩慢。開發(fā)人員被迫要編寫大量的腳本檢查不同IE瀏覽器版本來進(jìn)行適配。
在2006年,開發(fā)人員通過使用jQuery框架,獲得了形式上的統(tǒng)一解決方案。盡管jQuery在今天已經(jīng)過時(shí)了,但是10年前,如果把真正的時(shí)間用在構(gòu)建功能而非解決瀏覽器兼容性的問題上時(shí),這是必不可少的工具。
谷歌在2008年發(fā)布了一個(gè)名為V8的新JavaScript引擎。
如果說jQuery的出現(xiàn)為Web開發(fā)人員提供了廣泛的兼容性,而V8則為他們提供了出色的性能。而且由于V8引擎是一個(gè)單獨(dú)的開源組件,因此其他項(xiàng)目也可以使用它。后來,因此,而衍生了諸如Node.js和Electron之類偉大項(xiàng)目。
2008年下半年,W3C推出第一個(gè)HTML5的工作草案。HTML5本身并不是關(guān)于JavaScript的,而是與一波新的JavaScript API配對(duì)使用的。突然之間,開發(fā)人員有了用于存儲(chǔ)本地?cái)?shù)據(jù),管理瀏覽器歷史記錄,使用音頻和運(yùn)行后臺(tái)任務(wù)的工具。網(wǎng)絡(luò)功能和桌面功能之間的差距再次縮小。
第五章 涅槃:現(xiàn)代的JavaScript
JavaScript的成功是否是其在瀏覽器中享有特權(quán)的必然結(jié)果?還是需要運(yùn)氣和完美時(shí)機(jī)?
我覺得很多是為了兼顧和均衡。根據(jù)經(jīng)濟(jì)學(xué)定理,為了防止一家獨(dú)大,各大公司之間互相讓利權(quán)衡后的結(jié)果。
結(jié)果是JavaScript被迫贏得了成功。在JavaScript的一生中,從來沒有很多人喜歡。剛開始大家支持Java applet,接著是Flash,還有微軟版的Silverlight。JavaScript面對(duì)了這些挑戰(zhàn)者,并(被)擊敗了所有他們。
JavaScript的未來是一條迅速分支的道路。現(xiàn)在JavaScript有在Web服務(wù)端運(yùn)行的(Node.js),也有桌面應(yīng)用程序(Node.js和Electron)。也有了諸如TypeScript的更高級(jí)先進(jìn)方言,它們可以編譯為JavaScript,從而為開發(fā)人員提供了一種在不違反規(guī)范的前提下舒適開發(fā)的方法。將來借助WebAssembly可能還會(huì)完全擺脫語言限制,為開發(fā)人員提供一種通過JavaScript引擎來使用他們想要的任何高級(jí)語言的方法。
JavaScript盡管有很多不是之處,但是他確實(shí)天(各大經(jīng)濟(jì)巨頭)選之子。Brendan Eich將JavaScript放入Netscape Navigator中,而我們正想法設(shè)法整個(gè)世界裝入瀏覽器。這就是現(xiàn)代的Web,以及將來物聯(lián)網(wǎng)。
以上就是JavaScript的扶正之路是怎樣的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。