偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

從腳本到主流,JavaScript的扶正之路

開發(fā) 前端
說到很流行的編程語言,可能要數(shù)JavaScript,Java和Python了。但是向上追溯幾年、十年、甚至是20年,在2000年的時候你絕不會相信,如今JavaScript將成為世界上很受歡迎的語言之一。那時候的JavaScript不僅無法完成專業(yè)語言所能做到的各個功能,甚至也沒有被設(shè)計(jì)成一種嚴(yán)肅的編碼工具。

 說到很流行的編程語言,可能要數(shù)JavaScript,Java和Python了。但是向上追溯幾年、十年、甚至是20年,在2000年的時候你絕不會相信,如今JavaScript將成為世界上很受歡迎的語言之一。那時候的JavaScript不僅無法完成專業(yè)語言所能做到的各個功能,甚至也沒有被設(shè)計(jì)成一種嚴(yán)肅的編碼工具。本文我們一起來致JavaScript發(fā)展的那些歲月。

[[325203]]

概述

1995年,網(wǎng)景通信公司Netscape意識到,需要給瀏覽器一個簡便可用的瀏覽器動態(tài)腳本程序以便于Microsoft的IE做市場競爭。于是在結(jié)束與Sun Microsystems戰(zhàn)略合作伙伴的之前,利用最后一段時間,讓Sun的Brendan Eich在不到10天時間內(nèi)創(chuàng)造了一個新的語言,并將它嵌入了Netscape 2瀏覽器中。

 

從腳本到主流,JavaScript的扶正之路

 

并且當(dāng)時為了蹭Java的熱度,他們將該語言叫做JavaScript。但是實(shí)際上和Java語言沒有半毛錢的關(guān)系。Java和JavaScript這兩個類似的名稱引起了很多人多年的困惑,至今還是個個問題。(JavaScript現(xiàn)在是甲骨文的商標(biāo)名稱,隨意使用可能會有版權(quán)問題。)

第一章 伊始:滾動按鈕時代

在JavaScript誕生的頭五年中,它是不便使用Java (Applet)編程的人們的一個白板工具。其擁躉包括業(yè)余愛好者,以及急于做簡單完成任務(wù)的人。還有Web設(shè)計(jì)師一群新生技術(shù)工種,其工作是使網(wǎng)頁用戶界面看起來更加時尚和圖形化。他們想要的東西比標(biāo)簽更精致,比GIF的旋轉(zhuǎn)的地球儀更現(xiàn)代。

在專業(yè)領(lǐng)域,這是JavaScript的主要工作,創(chuàng)建UI膠水,將過度設(shè)計(jì)的網(wǎng)頁粘合在一起。當(dāng)你需要一個交互式按鈕,一個彈出菜單,一個圖像跨過動態(tài)效果時,你會用到 JavaScript。

 

從腳本到主流,JavaScript的扶正之路

 

不久之后,JavaScript開始被大量使用于創(chuàng)建類似效果:每當(dāng)鼠標(biāo)經(jīng)過時,就將一個圖像換成另一個。

盡管認(rèn)為開發(fā)人員會使用代碼來自動執(zhí)行發(fā)光按鈕,然后將其代碼分發(fā)到網(wǎng)頁上似乎有些瘋狂,但這是每個人都一遍又一遍地做的事情(今天,CSS提供了這種裝飾,它使用樣式設(shè)置和動畫而不是預(yù)先生成的圖像文件,以更易于維護(hù)的方式來做到了這一點(diǎn)。)。很少有人期望JavaScript會走得更遠(yuǎn)。而且,許多編碼人員更樂于使用服務(wù)器端編程語言,讓它們按需提供正確的JavaScript腳本。 JavaScript可以為應(yīng)用程序中的業(yè)務(wù)邏輯提供支持的想法就像用Excel宏替換數(shù)據(jù)庫存儲過程一樣荒唐。

第二章 限制:沙盒的囚徒

今天,當(dāng)人們批評JavaScript時,通常是由于其語言本身的局限性:補(bǔ)補(bǔ)修修的面向?qū)ο蠊δ?,弱類型安全,笨拙的DOM模型,==與===的混淆等等。但JavaScript并非天生就是如此。畢竟,有許多丑陋的編程語言,也都是因?yàn)樵谡_的時間出現(xiàn)正確的領(lǐng)域而變得重要。(比如BASIC,COBOL,SQL和PHP)JavaScript是當(dāng)時所有Web瀏覽器中唯一支持的語言,伴隨著Web正占領(lǐng)世界的同時,它肯定在正確的時間出現(xiàn)在了正確的位置。

JavaScript的真正限制是沙盒,嚴(yán)格控制的環(huán)境,可將代碼固定在適當(dāng)?shù)奈恢?。沙箱將JavaScript與桌面世界隔離開來。例如,JavaScript代碼無法直接訪問文件系統(tǒng),顯示器或任何硬件。更嚴(yán)重的是,它切斷了JavaScript與Web服務(wù)器上所有內(nèi)容的聯(lián)系,例如存儲用戶列表和產(chǎn)品目錄的數(shù)據(jù)庫以及運(yùn)行業(yè)務(wù)邏輯的服務(wù)器端代碼。JavaScript被迫獨(dú)自戰(zhàn)斗的一線,但是也是整日忙忙碌碌而無所事事,只能旋轉(zhuǎn)Web頁面上的按鈕。

第三章 反叛:Ajax和XMLHttpRequest

然而幸運(yùn)的是微軟并沒有對JavaScript產(chǎn)生多大的敵意,也在IE中保留了它。并打算以"擁抱,擴(kuò)展和撲滅"的理念消耗競爭對手。

當(dāng)時Microsoft的一個團(tuán)隊(duì)正在研究一種使Outlook的Web前端響應(yīng)速度更快的方法。他們正在構(gòu)建一個名為Outlook Web Access的產(chǎn)品,看起來像這樣:

 

從腳本到主流,JavaScript的扶正之路

 

微軟團(tuán)隊(duì)的目標(biāo)是相對適度的。他們想開發(fā)一個在瀏覽器中運(yùn)行的高效電子郵件閱讀器。最重要的是,他們不想每隔幾秒鐘刷新一次整個頁面。取而代之的是,他們采用的是一種允許網(wǎng)頁在后臺靜默檢查新郵件的技術(shù)。這個目標(biāo)現(xiàn)在看來似乎并沒有啥大不了,但請記住那個年代Gmail還沒有出現(xiàn)呢,谷歌也才剛剛出現(xiàn),沒有啥名氣。

微軟團(tuán)隊(duì)使用一種被稱為XMLHttpRequest的ActiveX組件創(chuàng)建了一些管道。 XMLHttpRequest的基本思想很簡單:它為JavaScript代碼提供了一種進(jìn)行Web請求的方法。就像瀏覽器可以聯(lián)系網(wǎng)絡(luò)服務(wù)器并發(fā)出請求(例如,"嘿,請給我一個頁面!")一樣,JavaScript代碼也可以使用XMLHttpRequest對象發(fā)出自己的請求(例如,"嘿,請?jiān)俳o我發(fā)送一些郵件")。

 

從腳本到主流,JavaScript的扶正之路

 

突然之間,潘多拉魔盒被打開了,Web頁面開始可以調(diào)用Web服務(wù)器的所有資源:

需要數(shù)據(jù)庫中的一些數(shù)據(jù)嗎?調(diào)用服務(wù)器并查詢。

服務(wù)器需要執(zhí)行計(jì)算,安全測試,超級機(jī)密驗(yàn)證檢查嗎?也請調(diào)用服務(wù)器。、最重要的是,在后臺進(jìn)行調(diào)用時,頁面顯示不會受到影響。

但是XMLHttpRequest也有很多問題。首先,它的名稱很奇怪,大小寫不一致,導(dǎo)致區(qū)分大小寫的語言(例如JavaScript)很頭痛。

其次,就像它名字表明的一樣請求發(fā)送和接收使用XML消息?,F(xiàn)實(shí)情況是,消息幾乎可以是任何東西,普通文本,HTML塊或序列化為JSON的JavaScript對象。但是比較大的問題當(dāng)屬的XMLHttpRequest的的支持技術(shù)。它是用ActiveX構(gòu)建的,這樣它只支持在Windows計(jì)算機(jī)上運(yùn)行,​​只能在Internet Explorer中運(yùn)行。

這些怪癖都沒有阻止它。在短短的幾年內(nèi),其他瀏覽器都提供了自己的XMLHttpRequest實(shí)現(xiàn)-代碼中的相同對象,但沒有ActiveX麻煩。

盡管微軟創(chuàng)建了XMLHttpRequest,但是并沒有在自己的Web開發(fā)得到充分利用它。甚至在,他們后續(xù)的公共Web的電子郵件系統(tǒng)Hotmail中也沒有使用。

相反,是谷歌首先利用XMLHttpRequest技術(shù)開發(fā)出了讓世界震驚的Web產(chǎn)品。谷歌首先在2004年使用開發(fā)了公共Web郵箱Gmail;

 

從腳本到主流,JavaScript的扶正之路

 

接著,次年又開發(fā)出了Google Maps。

 

從腳本到主流,JavaScript的扶正之路

 

這兩個偉大的產(chǎn)品開始讓XMLHttpRequest和Ajax技術(shù)大放異彩而流行于世。

第四章 扶正:通往現(xiàn)代的道路

XMLHttpRequest是改變JavaScript進(jìn)程的關(guān)鍵要素。但是,此后還有很多拐點(diǎn)。

多年以來,JavaScript語言一直處于凍結(jié)狀態(tài)。市場領(lǐng)先的IE瀏覽器要伴隨著操作系統(tǒng)升級而升級,版本迭代非常緩慢。開發(fā)人員被迫要編寫大量的腳本檢查不同IE瀏覽器版本來進(jìn)行適配。

 

從腳本到主流,JavaScript的扶正之路

 

在2006年,開發(fā)人員通過使用jQuery框架,獲得了形式上的統(tǒng)一解決方案。盡管jQuery在今天已經(jīng)過時了,但是10年前,如果把真正的時間用在構(gòu)建功能而非解決瀏覽器兼容性的問題上時,這是必不可少的工具。

 

從腳本到主流,JavaScript的扶正之路

 

谷歌在2008年發(fā)布了一個名為V8的新JavaScript引擎。

 

[[325205]]

 

如果說jQuery的出現(xiàn)為Web開發(fā)人員提供了廣泛的兼容性,而V8則為他們提供了出色的性能。而且由于V8引擎是一個單獨(dú)的開源組件,因此其他項(xiàng)目也可以使用它。后來,因此,而衍生了諸如Node.js和Electron之類偉大項(xiàng)目。

 

從腳本到主流,JavaScript的扶正之路

 

2008年下半年,W3C推出第一個HTML5的工作草案。HTML5本身并不是關(guān)于JavaScript的,而是與一波新的JavaScript API配對使用的。突然之間,開發(fā)人員有了用于存儲本地?cái)?shù)據(jù),管理瀏覽器歷史記錄,使用音頻和運(yùn)行后臺任務(wù)的工具。網(wǎng)絡(luò)功能和桌面功能之間的差距再次縮小。

 

從腳本到主流,JavaScript的扶正之路

 

第五章 涅槃:現(xiàn)代的JavaScript

JavaScript的成功是否是其在瀏覽器中享有特權(quán)的必然結(jié)果?還是需要運(yùn)氣和完美時機(jī)?

我覺得很多是為了兼顧和均衡。根據(jù)經(jīng)濟(jì)學(xué)定理,為了防止一家獨(dú)大,各大公司之間互相讓利權(quán)衡后的結(jié)果。

結(jié)果是JavaScript被迫贏得了成功。在JavaScript的一生中,從來沒有很多人喜歡。剛開始大家支持Java applet,接著是Flash,還有微軟版的Silverlight。JavaScript面對了這些挑戰(zhàn)者,并(被)擊敗了所有他們。

JavaScript的未來是一條迅速分支的道路?,F(xiàn)在JavaScript有在Web服務(wù)端運(yùn)行的(Node.js),也有桌面應(yīng)用程序(Node.js和Electron)。也有了諸如TypeScript的更高級先進(jìn)方言,它們可以編譯為JavaScript,從而為開發(fā)人員提供了一種在不違反規(guī)范的前提下舒適開發(fā)的方法。將來借助WebAssembly可能還會完全擺脫語言限制,為開發(fā)人員提供一種通過JavaScript引擎來使用他們想要的任何高級語言的方法。

JavaScript盡管有很多不是之處,但是他確實(shí)天(各大經(jīng)濟(jì)巨頭)選之子。Brendan Eich將JavaScript放入Netscape Navigator中,而我們正想法設(shè)法整個世界裝入瀏覽器。這就是現(xiàn)代的Web,以及將來物聯(lián)網(wǎng)。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2024-12-26 08:00:38

2011-04-01 09:29:52

MySQLMongoDB

2015-06-15 09:29:56

聯(lián)想互聯(lián)網(wǎng)

2023-01-04 11:04:32

2022-06-29 10:11:19

CIOIT領(lǐng)導(dǎo)者

2010-11-22 09:36:37

Perl腳本SolarisLinux

2013-09-04 09:35:46

2013-09-11 09:57:00

2022-06-08 16:55:56

服務(wù)器Redis架構(gòu)

2013-09-16 11:28:16

碼農(nóng)極客

2017-10-27 15:48:06

JavaScript前端全端

2023-01-01 14:22:17

2019-06-18 09:09:31

C端B端產(chǎn)品設(shè)計(jì)

2024-10-17 11:18:59

2009-01-03 08:55:04

Java2008NetBeans

2012-01-11 13:29:08

云計(jì)算

2017-04-07 11:15:49

原型鏈原型Javascript

2017-12-25 11:15:06

JavaArray數(shù)組

2024-02-04 09:13:24

基礎(chǔ)設(shè)施代碼DevOps

2020-11-17 07:14:50

技術(shù)總監(jiān)
點(diǎn)贊
收藏

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