個人名字叫JavaScript,你也能夠喊我Js。在說個人故事以前,我以爲有必要先介紹下個人大哥HTML,和大嫂CSS。沒錯,那個叫Java的傢伙不是個人親戚,咱們隔着好幾條街區呢。(來自知乎的神回覆:Java和Javascirpt就比如「雷鋒」和「雷峯塔」的關係)segmentfault
我大哥算是整個家族的元老級人物,在上世紀90年代初,它被一幫科學家創造出來爲了方便他們看文檔、傳論文。連這幫締造者本身都沒想到,我大哥的出如今以後改變了整個世界。服務器
起初,我大哥的日子仍是蠻逍遙的。它用本身強大的能力將文字和圖片構建成一個個文檔(Document),並放在服務器上供你們去訪問瀏覽。科學家們吃着火鍋唱着歌就把本身的論文發表在了網絡上,大哥也以爲找到了一份錢多事少離家近的工做,一切看起來都很美好。網絡
然而人怕出名豬怕壯,不久,大哥的名聲就傳出了學術界,愈來愈多的人經過HTML大哥向世界展現他們自個兒,還給大哥構建出的文檔起了個時髦的名字:網頁。性能
人類是很貪婪的,平淡無奇的網頁很快就讓他們厭倦了,「文檔標題是否是能夠變大一些?」,「是否是能夠調整不一樣段落的字體顏色?」⋯⋯很顯然,他們但願本身的網頁看起來更加不同凡響。因而,HTML大哥一次次的被賦予更增強大的能力,新的功能雖然在必定程度上知足了人類的需求,但這也給大哥留下了後遺症,它所構建的網頁逐漸變的臃腫不堪。字體
就在大哥人生最低潮的時候,個人大嫂走進了它的生活(1996年)。若是要用一個字形容個人CSS大嫂,那就是——美。自從它來到咱們家,大哥構建的網頁要換字體、變顏色、加邊框、添背景⋯⋯這些活通通被大嫂一手攬了過去。爲這事,大哥樂了好些日子,以前的頹態也一掃而空了。自此,大哥又過上了只負責賺錢養家,由嫂子負責貌美如花的幸福生活。網站
直到有一天,大哥接到一項特殊的任務,一位年輕的爸爸想給本身患有抑鬱症的孩子製做一個網站,但願網頁裏的天空天天均可以更換一種顏色。聽起來很合理的訴求卻難到了我大哥,它和大嫂展開了討論:搜索引擎
「Dear,讓咱們幫幫他們,好嗎?」,大嫂懇切的說道。spa
「我也很想這樣作,可是,Sweetie,你是知道的,我和你的能力僅限於構建靜態網站,只要訪問相同的網址,返回的頁面內容始終是不變的。」索引
「嗯⋯⋯要麼,咱們去問問隔壁鎮上的老C頭(你們都這樣稱呼資歷較老的C語言)吧,它見多識廣,指不定能有好主意」。大哥補充說道。進程
兩天後,它們見到了正在和C++下棋的老C頭,聽完大哥的敘述,老C頭沉思片刻:「這個好辦,不要讓用戶直接訪問你了,我和C++都有判斷當前日期的能力,讓用戶請求先到達咱們生成的程序,你只須要告訴咱們網頁長什麼樣子,咱們在須要改變顏色的地方作點處理,再從新拼接成正確的頁面返回就好了。」C++老爹在一旁連連點頭。
按照老C頭說的辦法,有心的爸爸很快製做出了天空顏色會變的動態網頁,他從孩子臉上看到了久違的笑容。
(猿知原味注:老C頭闡述的方法是最先的動態網頁實現方案——CGI技術。除了C/C++以外,CGI程序還能夠用PERL、Java、Python、Shell等進行編寫)
動態網頁很快成爲了一種潮流,衆多站點加入了訪問計數、表單提交等須要網站服務器端進行邏輯處理的功能。這一下老C頭可不樂意了,和C++老爹抱怨起來:
「以前我就是想幫個忙,怎麼幫着幫着還把我本身套進來了?做爲一名紳士,你知道讓我去輸出那一大堆亂七八糟的HTML字符串是件多麼粗魯的事嗎?」
「別提了,老C頭,都怨你出的餿主意,每一個請求過來我都得用一個新的進程來處理,這麼些年來你們一直稱讚個人性能高,這回怕是要晚節不保了。」
「你的性能高?那意思是個人性能不高嘍?」
「這還用說嘛,看咱們的名字不就很清楚了麼?」
「@#&%$⋯⋯」
兩個倔老頭又陷入了平常的爭論當中。好在沒過多久,一個叫PHP的傢伙誕生了,它的出現完全消除了老C頭的滿腹牢騷,由於這傢伙迅速接過老C頭的活,成爲了開發動態網站的主流。
我和PHP的關係還不錯,一方面是由於咱們年紀至關(1995年),另外一方面PHP和我大哥是老鐵,它常常來我家串門,來和大哥討論某個動態頁面應該如何構建,哪些部分屬於應由大哥負責的靜態內容,哪些部分屬於須要它來標記的動態內容。
總之啊,PHP和咱們這一家子相處的算是其樂融融。
(猿知原味注:PHP相較CGI,不只更好地組織了Web頁面的內容,提升了開發效率和可維護性,並且執行效率也比CGI更高。在這以後,ASP和JSP等網站動態腳本語言也相繼誕生)
故事講到這,終於輪到我出場了。在我出生以前,一個網站全部邏輯層面的任務都會由我大哥承包給老C頭、PHP等它們那幫跑在服務器上的傢伙。好比你要註冊一個郵箱,帳號輸入時一不當心將@敲成了#,只有當註冊帳號被髮送到服務器上通過那些傢伙校驗以後才能發現錯誤,它們再將錯誤信息返回到你面前又須要花費一些時間,在那個還在用28.8kbit/s的"貓"上網的年代,這段被浪費的時間極可能長達好幾十秒。
個人出現大大改善了這種糟糕的上網體驗。我徹底運行在客戶端(關於這一點,最近幾年我彷佛有些跑偏),那些不必交給服務器的邏輯運算通通由我負責。有了我以後可把我大哥樂壞了,它不再用由於一個簡單的表單驗證去麻煩它的PHP老弟,或者去面對老C頭鄙夷的眼神了。自此,我算是在這個家裏站穩了腳跟。
時間過的很快,一晃就跨過了千禧之年,在那先後,大哥帶着我接了不少有趣的活,有在車庫裏建立的搜索引擎,有在大學宿舍裏建立的社交網站⋯⋯同它們同樣,我要講的故事也剛剛開始。