国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

瀏覽器:一個家族的奮斗

企業動態
也許有一天,所有的桌面應用都消失了,全部變成了在瀏覽器中運行的程序,那將是我們瀏覽器家族榮耀的頂峰,我們期待著這一天早日到來。

我是你們每天都要使用的瀏覽器,自從90年代誕生以來,我們這個大家族變得非常的繁榮,在過去的幾十年中,我們一直兢兢業業地幫助你們人類去探索外部的互聯網世界。隨著互聯網和移動互聯網的發展,我們家族終于登上了成功的巔峰:幾乎占據了全球每一臺電腦和手機。

大家只看到表面的光鮮,可是誰知道我們家族在背后充滿血和淚的不懈努力呢?

[[213320]]

1起步:從簡單到混亂

最初的時候,我們瀏覽器家族的工作很簡單,就是從遠端的服務器下載HTML頁面到本機,然后按照和你們人類的約定,把充滿標簽的HTML文本轉換成你們容易閱讀的頁面。例如當我們遇到<table>這樣的標簽,我們就展示一個表格,遇到<p>我們就會換行顯示一個新的段落,看到<img>就知道要顯示一個圖片等等。

由于HTML的結構很簡單,我們展示起來也不難,工作相對比較輕松。

可是你們人類很快就不滿足了,嚷嚷著說要看漂亮的頁面,漂亮的布局,就像報紙雜志那樣,分欄、圖文混排......

于是有不少人盯上了<table>這個標簽,這個標簽本來的目的是為了顯示數據用的,像這樣:

[[213321]]

但是這些人發現,既然表格能把頁面分成一塊一塊的,那完全可以來做頁面布局啊!比如這個單元格可以作為頁面的頭,那個做左邊欄,右邊欄......等等。

這個口子一開,立刻成星火燎原之勢,再加上那些所見即所得的網頁編輯器(如DreamWeaver,FrontPge)推波助瀾,表格布局大行其道。

這可苦了我們瀏覽器家族,我們經常發現HTML中那些令人恐怖的表格,一個套著一個,我見過最極端的有上百個表格套在一起,組成超級無敵的頁面。為了把這些表格解析、展示出來,我們都是戰戰兢兢、如履薄冰,生怕出什么差錯。

有時候,程序員會忘記寫一些標簽的閉合標簽,例如</a></td>,我們還得猜測、推理、論證,最后展示出來的東西你們還不滿意:這是什么玩意兒,連個HTML都顯示不對!

我們家族的IE同學在這方面的研究可以說是登峰造極,他非常擅長處理這種亂七八糟的情形,他的縱容成功地讓你們把HTML越寫越亂!

2CSS來拯救

終于有一天這樣的HTML頁面連你們人類都看不懂了,你們吵了半天,放了一個“損招”出來:把結構和展示分開!

HTML只負責文檔的結構,一個叫做CSS的東西來控制這個結構到底展示成什么樣子。

在CSS中,程序員只需要用聲明的方式說,這個表格寬度是1px,字體是11px,邊框顏色是#666666,然后你們就不管了,具體怎么實現全部扔給了我們:

  1. table.gridtable {  
  2.     font-family: verdana,arial,sans-serif;  
  3.     font-size:11px;  
  4.     color:#333333;  
  5.     border-width: 1px;  
  6.     border-color: #666666;  
  7.     border-collapse: collapse;  

對于你們來說變簡單了,可是對我們瀏覽器來說就太難了。我們得老老實實地去解析HTML(這HTML有可能還不規范),形成一顆叫做DOM(DocumentObjectModel)的樹,這還不算,還要去解析CSS,形成另外一個叫做CSSOM(CSSObjectModel)的樹,然后把兩棵樹合并成一個“渲染樹”這才能在界面上繪制出來。

現在的CSS都已經出到第三個版本了,可是我們家族還有不少人沒法完整的支持這個規范,尤其是一些老舊的瀏覽器,可見這是多么不容易啊。

3誤入歧途

我們家族也走過一段彎路,那是一段不堪回首的瀏覽器插件的歷史。

當時有人提出HTML+CSS太簡單了,瀏覽器中的頁面沒法和當時的桌面應用相媲美,能不能用擴展一下啊?

最早的嘗試來自于JavaApplet,這也是Java賴以成名,從此走上第一大編程語言的絕技。那幫瘋狂的家伙們竟然在我們這單薄的小身板里安裝了一個Java虛擬機,用于從服務器端下載Java代碼、運行,展示出漂亮的動畫效果。

剛開始的時候我們努力地支持,但是它運行起來慢如蝸牛、丑陋無比。我們那些可愛的用戶也不答應,不去安裝或者禁止使用這傻大笨粗的Java虛擬機,于是JavaApplet就慢慢地銷聲匿跡了。

與此同時,一個叫做流氓插件的毒瘤也迅速地向我們襲來,在你瀏覽網頁的時候,這些流氓靜悄悄地潛入我們的身體,他們傳播病毒、彈出廣告、窺探用戶隱私,并且難于卸載,讓我們痛不欲生。后來數字公司推出了一個保鏢,殺了一個回馬槍,這次把流氓給清除了出去。

當然不能一棍子打死,插件中也有良民,比如Flash,這小子可是風光了好多年,收到了人民群眾的廣泛喜愛,當年出現了很多的Flash小動畫,小視頻,小游戲,我至今還記得有好事者竟然用Flash去做《鹿鼎記》動畫,也不知道他做完沒有。

Flash極為火爆,我們讓他在我們家族寄宿了20多年,直到移動互聯網時代的崛起,尤其是喬布斯的推波助瀾,這才慢慢退出歷史舞臺。

4重裝上陣:JavaScript

向我們家族里安裝插件的嘗試并不成功,但是我們還是想和桌面應用競爭,讓瀏覽器應用有著桌面應用的體驗,這時候有個叫JavaScript的屌絲自告奮勇,說自己可以在瀏覽器中執行代碼,提高頁面的動態性。

剛開始的時候我們并不待見他,本來解析HTML,CSS就夠我們受的了,我們竟然還要去執行JavaScript代碼。尤其煩人的是,JavaScript還可能對DOM進行修改,比如讓某個元素隱藏。唉,我們只好把畫好的元素重新渲染,重新繪制。

不僅是控制界面,JavaScript還要執行邏輯,剛開始的時候我們覺得這小子沒啥用處,無非就是做點簡單的判斷,像什么表單中用戶名不能為空了,密碼和確認密碼兩個輸入框的值必須得相等之類。

后來有人搞了一個叫做AJAX的東西出來,從此發展出一堆類似JQuery、Bootstrap、ExtJS這樣的類庫,瀏覽器中的頁面可用性越來越高,體驗越來越好。

最后隨著前端框架(Angular,Backbone,React等)出現,我們家族在瀏覽器中完全實現了界面的展示和頁面的調整,成功地做了前后端分離,把端服務器做的生意給搶過來一大部分,把他們氣得夠嗆。

5替人類保存數據

HTML來負責結構,CSS負責展示,JavaScript負責行為,這是我們每天要做的三件大事,還有一件重要的事情就是存儲數據。

想當年,人類把HTTP設計成一個沒有狀態的協議,即使是同一個人,在極短的時間內訪問同一個服務器,服務器也會認為這是完全兩個不同的請求,根本不知道是同一個人發出的。

當有成千上萬的人都來訪問同一個服務器的時候,服務器怎么才能把大家區分開呢?要是不區分開,服務器端怎么才能實現購物車的功能?服務器怎么才能記住這個褲子是張三買的,那個羽絨服是李四買的?

后來人類出了一個損招:當用戶使用我們訪問服務器的時候,會給每個用戶都建立一個會話,每個會話都有一個獨一無二的ID。這個ID服務器端會保存,同時也會發回到我們瀏覽器這邊,讓我們暫存起來,美名其曰小餅干(cookie),聽起來不錯,但是這個小餅干卻不能吃。

當用戶訪問同一網站的時候,我們還得把這個cookie向服務器發送過去,服務器通過cookie取到那個會話ID,于是就知道是誰在訪問它了。

我們保存了這個小餅干,但是大家覺得這個小餅干能保存的數據量太小,于是我們就在瀏覽器中又開辟了兩塊巨大的空間,給JavaScript那小子提供了接口,讓他把字符串存儲到瀏覽器中。

這兩塊空間一個叫localStorage,一個叫sessionStorage。他們倆的用法非常相似,例如:

  1. localStorage.setItem("username","Andy");  
  2. alert("username="+localStorage.getItem("username")); 

這樣以來用戶就可以放心地在我們這里存儲大量的數據了。只不過這個sessionStorage和cookie類似,表示的是一個會話的概念,所以一般來說,頁面一旦關閉,存儲的數據就會消失。

但是這個localStorage就不同了,只要你不把數據刪除,它會一直存在。這引起了我們家族有些人的強烈抗議:如果JavaScript那小子忘記刪除,那垃圾豈不越來越多?

沒辦法,只有拜托各位程序員了,對于無用的數據,及時刪除吧。

6向多媒體和游戲進軍

要讓瀏覽器變成一個和桌面應用相媲美的平臺,僅僅有展示頁面和存儲數據的能力是不夠的。我們決定增加對視頻和音頻的支持,這一次直接撕去了插件的偽裝,“赤裸裸”地在HTML中加了<video>和<audio>這兩個新標簽,從此以后,家族的每個成員都得想辦法去播放音頻和視頻了:

  1. <videosrc="movie.mp4"width="320"height="240"controls="controls"

你的瀏覽器不支持video標簽

  1. </video>  
  2. <audiosrc="song.mp3"controls="controls">你的瀏覽器不支持audio標簽</audio> 

我們在手機上的瀏覽器兄弟們更加地努力,他們還支持直接調用手機的攝像頭去拍攝照片,這實在是太方便了。

既然都能支持音頻、視頻、攝像頭了,何不更進一步,在瀏覽器中搞一把實時通信?

不用額外安裝插件或者第三方軟件,在兩個瀏覽器之間就能進行語音或者視頻的聊天,這個想法確實是挺激動人心的,我們把它稱為WebRTC。不過這個想法的實現比較困難,雖說我們家族的Chrome再不遺余力地推動,但是要讓我們家族在所有的平臺上(Windows,Android,iOS,mac)都實現了還需要繼續努力。

此外我們還一直惦記著游戲這個令人垂涎三尺的大市場,絕對不能放過!于是我們添加了<canvas>的標簽,意思是畫布,這樣JavaScript那小子就可以在畫布上去繪制路徑、各種形狀、添加圖片......總而言之,程序員終于可以寫出一個只依賴瀏覽器就可以運行的游戲了,完全不用什么Flash。

看看下面這兩個簡單的小游戲,如果我不告訴你,估計你都不知道這完全是HTML+JavaScript做出來的吧:

水果忍者

[[213322]]

中國象棋

7讓服務器從被動變為主動

你們人類原來指定的HTTP協議都是從我們這里向服務器端發出請求,然后服務器響應,一個請求,一個響應,嚴格對應。

后來大家發現這樣不好,服務器一直處于被動的地位,服務器端的數據有了變化(例如股票又漲了)后,瀏覽器如果不主動訪問的話是不知道的,所以瀏覽器只好一遍遍不厭其煩地發送請求: 

瀏覽器:股票漲了沒有? 服務器:沒有

瀏覽器:股票漲了沒有? 服務器:沒有

瀏覽器:股票漲了沒有? 服務器:沒有

......

瀏覽器:股票漲了沒有? 服務器:漲了 

這種方式叫做輪詢,效率極為低下。

能不能讓服務器向我們主動地推送數據呢?股票一漲,立刻就向瀏覽器推送,瀏覽器即刻展示。

我們和服務器做了多次談判,終于建立了這么一個辦法:雙方建立連接以后就不要斷開了,一直保持住,我們可以通過這個通道向服務器發送數據,服務器也可以主動向我們推送數據。

這個技術,我們把它稱為Websocket。

8總結

CSS,JavaScript,本地存儲,多媒體和游戲,WebSocket......這只是我們家族提供的一部分服務,還有很多其他的服務例如HTML標簽的語義化:我們提供了很多諸如<article>,<section>,<nav>,<aside>,<header>,<footer>這樣的標簽來幫助你們人類更好的定義網頁的結構。

這樣的東西非常非常的多,我想你應該明白我們家族的不斷努力了吧,如果你一邊聽我講一邊在思考,也許會悟出我們的使命:不斷提升應用程序在Web端的體驗。

也許有一天,所有的桌面應用都消失了,全部變成了在瀏覽器中運行的程序,那將是我們瀏覽器家族榮耀的頂峰,我們期待著這一天早日到來。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-12-19 14:53:18

2012-09-03 10:24:16

果粉瀏覽器

2009-05-27 08:54:15

瀏覽器平臺Chrome

2019-12-02 13:46:35

瀏覽器前端開發

2021-06-02 06:14:50

Nyxt瀏覽器

2011-04-14 15:55:35

WPF.NET

2022-06-20 09:01:56

Plasmo開源

2020-07-06 08:23:11

開源瀏覽器操作系統

2014-08-18 14:58:25

微軟IE

2022-06-13 06:33:04

瀏覽器瀏覽器插件

2010-06-08 09:49:28

Safari 5

2011-12-23 15:20:54

傲游瀏覽器新聞

2021-08-06 16:52:10

瀏覽器HTTPS通信

2012-04-25 14:06:45

HTML5

2016-09-21 12:34:10

Chrome瀏覽器插件

2009-05-04 09:13:12

K-MeleonCCF瀏覽器

2023-12-21 11:12:31

Node.js.NET開源庫

2013-06-14 17:16:44

WP開發Windows PhoWP應用

2010-04-05 21:57:14

Netscape瀏覽器

2010-01-08 12:14:44

ibmdwAndroid
點贊
收藏

51CTO技術棧公眾號

最近2019年好看中文字幕视频| 欧美国产日韩激情| 91亚洲精品视频在线观看| 欧美日韩国产一区二区三区地区| 乱子伦视频在线看| 国产剧情一区二区三区| 亚洲国产欧美不卡在线观看| 亚洲一区久久| 久久综合福利| 国产精品外国| 欧美精品亚洲精品| 玖玖玖国产精品| 日韩欧美一区二区三区四区五区 | 综合激情网...| 久久精品福利视频| 成人毛片免费| www国产91| 国内精品视频| 久久久之久亚州精品露出| 北条麻妃在线一区二区免费播放| 欧美成年人在线观看| 亚洲日本va中文字幕| 欧美日韩成人黄色| 日韩在线你懂的| 国产精品一区二区3区| 99精品在线观看| 国产精华一区二区三区| 久久精品一区二区国产| 中国女人做爰视频| 91美女在线视频| 成人av影视| 欧美性猛交xxxxx免费看| 国产高清在线观看| 日韩精品中午字幕| 澳门av一区二区三区| 久热精品视频在线| 亚洲日产av中文字幕| 国产在线精品一区免费香蕉| 欧美va亚洲va日韩∨a综合色| 国产精品国色综合久久| 狂野欧美一区| 亚洲熟妇无码另类久久久| 18涩涩午夜精品.www| 国产综合视频一区二区三区免费| 日韩三级免费观看| 六九午夜精品视频| 国产成人精品一区二区| 一区在线免费观看| 欧美做暖暖视频| 国产精品高清亚洲| 无遮挡动作视频在线观看免费入口| 精品剧情在线观看| 日本免费一区二区视频| 国产自产女人91一区在线观看| 久久精品欧洲| 欧洲熟妇精品视频| 日韩欧美精品网站| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 国产欧美一区二区三区视频| 国产一区二区三区久久| 精品一区二区三区无码视频| 亚洲天堂中文字幕| 91麻豆免费在线视频| 日韩视频免费在线观看| 久久一级电影| 久久久久久久久久伊人| 亚洲成av人综合在线观看| 狠狠躁少妇一区二区三区| 欧美亚洲另类激情另类| 亚洲免费婷婷| 香艳视频网站| 日韩成人免费视频| 久久在线视频| av网站手机在线观看| 日本精品一区二区三区高清| 国产一区二区三区影视| 亚洲一区二区三区久久| 99久免费精品视频在线观看| 飘雪影院手机免费高清版在线观看| 亚洲网站在线观看| 国产一区日韩欧美| 成人免费视频77777| 日韩精品视频免费| 欧美69wwwcom| 伊人国产在线视频| 亚洲美女又黄又爽在线观看| 五月激情综合| 久久久久久久久久久久91| 精品国产乱码久久久久久夜甘婷婷| 国产不卡一区| 无码人妻丰满熟妇区96| 欧美成人激情免费网| 久久国产成人精品| av视屏在线播放| 日韩高清有码在线| 黄色亚洲在线| 成年人免费看的视频| 国产亚洲精品久久久久久牛牛| 欧美韩国一区| 黄色毛片av| 中文字幕一区二区三区电影| 一区二区高清| 久草福利在线| 国产精品久久久av| 国产精品狼人久久影院观看方式| 亚洲综合在线电影| 日韩资源av在线| 欧美在线观看18| 97人人精品| 在线观看污污视频| 欧美影院在线播放| 国产亚洲成aⅴ人片在线观看| 日本综合视频| 国产精品av免费观看| 亚洲大胆人体av| 青青国产91久久久久久| av色图一区| 国产精品麻豆免费版| 欧美日韩在线一区| 99成人在线视频| 免费看成年人视频在线观看| 日韩av电影手机在线观看| 中文字幕一区不卡| 亚洲乱码一区| 亚洲一级免费在线观看| 久久av资源网站| 2020国产精品| jazzjazz国产精品麻豆| 成人女性文胸| 日韩免费观看av| 一级做a爱片久久| heyzo久久| 亚洲成人影院少妇| 国产精品初高中精品久久| 91成人在线精品| 亚洲理伦在线| 超碰在线最新网址| 免费在线精品视频| 日韩在线视频网站| 国产欧美一区二区精品忘忧草 | 自拍偷拍精选| 欧美一区二区三区免费观看| 亚洲私人黄色宅男| 精品国产一区二区三区小蝌蚪| 超碰在线94| 国产伦精品一区二区三区四区免费| 欧美少妇xxx| 老汉av免费一区二区三区| 国产美女精品写真福利视频| av日韩一区二区三区| 欧美激情喷水视频| 亚洲最快最全在线视频| 欧美午夜精品| 中老年在线免费视频| 欧美黄色一级片视频| 国产精品69av| 欧美性极品少妇| 免费久久精品视频| 91九色成人| 最新在线地址| 欧美精品成人一区二区在线观看 | 韩国福利在线| 亚洲精品不卡| 久久亚洲欧美日韩精品专区| 亚洲美女偷拍久久| 亚洲高清毛片| 精品视频在线一区二区在线| jizz大全欧美jizzcom| 亚洲最大av网站| 日韩av在线免费播放| 中文在线一区二区| 亚洲一级影院| 国产亚洲精彩久久| 毛片网站大全| 日本在线一区| 久久久久久久影院| 在线看一区二区| 国产精品资源在线| 欧洲美女日日| 蜜桃av.网站在线观看| ckplayer中文字幕| 日韩影视精品| 91av在线影院| 日韩欧美激情一区| 欧美激情一区二区| 亚洲人成在线影院| 成人51免费| 免费网站免费进入在线| 男人操女人免费| 精品国产免费久久久久久尖叫 | 成人免费看黄| 在线色视频观看| 国产美女永久无遮挡| 国产日韩精品在线观看| 亚洲欧美制服丝袜| 日韩欧美大尺度| 久久精品视频在线免费观看| 亚洲伦理一区| 日韩大尺度在线观看| 亚洲天堂手机|