一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Node.js 給前端帶來了什么?

 春和秋榮 2019-06-26

 在軟件開發(fā)領(lǐng)域,前端工程師曾經(jīng)是一個比較糾結(jié)的職業(yè)。在Web技術(shù)真正發(fā)展起來之前的相當長一段時間里,由于技術(shù)門檻很低,前端工程師行業(yè)一直是魚龍混雜的狀態(tài)。其中很多號稱是Web開發(fā)者的人實際上并沒有什么專業(yè)的前端技能,有些工作就是被當做簡單的力氣活由美術(shù)設(shè)計師順便做做而已。當時很多人甚至并不認為有朝一日會有這么一群人用HTML、CSS和JavaScript這三門技術(shù)謀生——他們想,這怎么可能呢——這些技術(shù)看起來都是如此簡單,隨隨便便混在一起用就哦了,把做這些活看成一種正兒八經(jīng)的職業(yè)簡直是笑話。

隨著技術(shù)發(fā)展,人們對前端工作的看法開始改變了,一些人從美工頁面仔真正轉(zhuǎn)變?yōu)閷I(yè)的前端工程師。JavaScript,這門很多工程師曾經(jīng)把它當做玩具而不屑一顧的腳本語言悄然演變成推動互聯(lián)網(wǎng)發(fā)展的核心驅(qū)動力。伴隨著越來越多的瀏覽器的出現(xiàn)使得用HTML和CSS兼容各種瀏覽器變得越來越難,于是能實現(xiàn)兼容各種瀏覽器的頁面成為了前端工程師的金字招牌,前端職業(yè)開始變得炙手可熱。

兩個獨立的UI層

即使Ajax這種技術(shù)風(fēng)靡全球之后,前端工程師的主要工作曾經(jīng)也僅局限于瀏覽器窗口之內(nèi)。HTML、CSS和JavaScript是前端工程師必須要掌握的三種核心技術(shù),前端同后端的唯一交集僅僅是前端需要確保后端的數(shù)據(jù)能夠以正確合適的格式輸出到瀏覽器上。在某種意義上來說,Web開發(fā)有兩個UI層,一個是在瀏覽器里面我們最終看到的,另一個在server端,負責生成和拼接頁面。因為傳統(tǒng)前端基本上沒有辦法自主決定server端如何處理數(shù)據(jù)拼接生成頁面,因為數(shù)據(jù)如何組織,往往是會受到后端工程師所選擇的技術(shù)框架的影響的,而后端不理解前端的一些需求,所以他們選擇的時候也就很少會從前端方便的角度進行考慮。

圖片描述

在上面這張圖的結(jié)構(gòu)里,瀏覽器里的UI層是完全歸前端工程師管的。服務(wù)器端的UI層則是前后端都關(guān)心的部分,剩下的部分是服務(wù)端的底層,諸如數(shù)據(jù)處理、緩存、權(quán)限控制和其他核心模塊,這些是歸后端管的。我們還是回過頭來看我們所關(guān)心的server端UI層吧,這一層所做的事情通常是拼頁面模板以及處理具體的業(yè)務(wù)交互邏輯。

所以,傳統(tǒng)的前后端分工是由前端負責瀏覽器,而其他瀏覽器之外的東東統(tǒng)統(tǒng)歸由后端負責。前后端的交集server的UI層也是由后端來主導(dǎo)的。這是目前最主流的一種前后端分工方式。

讓Node.js來改變這一切

Node.js一發(fā)布,立刻在前端工程師中引起了軒然大波,前端工程師們幾乎立刻對這一項技術(shù)表露出了相當大的熱情和期待。上一次一種技術(shù)能被整個前端界如此關(guān)注那還是在幾年之前,那時候Ajax這個概念剛剛被提出來。讓JavaScript跑在server端,這個想法簡直太棒了。這下我們不用再去學(xué)那些什么PHP啦、Ruby啦、Java啦、Scala啦或者其他什么對前端來說奇怪的語言,也可以輕松地將我們的領(lǐng)域擴展到server端,多么美好的前景!

我從來不是一個PHP的愛好者,但是我在Yahoo工作的時候,我不得不使用PHP。為了這份工作,我得忍受花費許多額外的時間去修復(fù)由于PHP的傻逼特性導(dǎo)致的坑。對于一直使用Java作為服務(wù)端語言的我來說,對PHP實在是很難適應(yīng)。我相信,也一直堅持認為一種靜態(tài)類型的語言更加適合用來構(gòu)建你的業(yè)務(wù)邏輯的核心部分。因此,雖然我很喜歡JavaScript,但我也不會用它來做所有的事情,比如我絕對不會只用JavaScript來實現(xiàn)一個完整的購物車系統(tǒng)。

對于我來說,Node.js不是一個解決一切問題的銀彈,我不會用它來取代server端所有別的語言模塊。事實上,Node.js可以做到其他后端語言所能做到的幾乎所有的事情,但是我不會這么做。我所認為的比較合適的做法是用Node.js來解決server端UI層的問題,這樣我就可以將這一層從后端的其他部分剝離出來。

圖片描述

(<a href="http://www./">資質(zhì)代辦</a>)

現(xiàn)在越來越多的公司傾向于采用面向服務(wù)(service-oriented)的架構(gòu),由后端提供給前端RESTful的接口,這么做是為了更好的做前后端的依賴分離。如果所有的關(guān)鍵業(yè)務(wù)邏輯都封裝成REST調(diào)用,就意味著在上層只需要考慮如何用這些REST接口構(gòu)建具體的應(yīng)用。那些后端程序員們根本不操心具體數(shù)據(jù)是如何從一個頁面?zhèn)鬟f到另一個頁面的,他們也不用管用戶數(shù)據(jù)更新是通過Ajax異步獲取的還是通過刷新頁面,當然他們更不關(guān)心的是你究竟在用jQuery還是YUI——這與他們根本毫無關(guān)系嘛。后端程序員真正應(yīng)該關(guān)心的難道不應(yīng)該是數(shù)據(jù)如何存儲、如何容錯以及如何保證安全性嗎?

現(xiàn)在我們看看Node.js帶來的好處吧,當后端程序員提供了REST服務(wù)之后,現(xiàn)在我們前端程序員可以使用Node.js來處理server端的UI層啦,我們可以將通過REST調(diào)用拿到的數(shù)據(jù)隨心所欲地進行處理,不管是渲染模板還是直接提供給Ajax,現(xiàn)在我們僅僅用JavaScript一種語言就可以輕松實現(xiàn)這些。至于后端程序員,他們只需要保證數(shù)據(jù)的正確性,無論他們使用任何一種語言來封裝REST調(diào)用,都不會對前端造成影響,這樣前后端的職責不就被更好地劃分了嗎?這樣分工之后前端的領(lǐng)域就從瀏覽器小框框里面擴展到了server的UI層,而這一層本來對于后端來說是一件他們做起來不輕松的零碎活兒。

不!這太聳人聽聞了!

前端工程師想接手server的UI層是不那么容易被后端工程師們理解和接受的,因為這部分工作本來屬于后端工程師的職責。尤其是現(xiàn)在還有很多后端工程師認為JavaScript是一種極簡單的“玩具語言”,他們將會想如此重要的服務(wù)端工作怎么能交給這群看起來不太靠譜的人用如此“不嚴肅”的語言來玩?在我的經(jīng)驗里,這種觀念上的沖突是前后端工程師們在是否引入Node.js這一問題上的最大分歧。Server端UI層是前后端的中間地帶,而之前通常后端程序員們對這個地帶比較有主導(dǎo)權(quán),所以一旦你進入這個本來屬于后端主導(dǎo)的領(lǐng)域,爭議自然是不可避免的。

實際上放棄傳統(tǒng)的角色立場,將server的UI層分給前端,在大型Web架構(gòu)下是很有意義的。不這么做的話,有時候前端想要從后端要到正確的數(shù)據(jù),還不得不關(guān)心后端究竟是用什么語言實現(xiàn)的。過去的分工中,那些原本屬于核心業(yè)務(wù)底層考慮的東西會被暴露給server的UI層,而這些問題往往會不小心影響到前端。前端本來不需要關(guān)注這些問題,因為前后端所關(guān)心的方面根本完全不一樣嘛。如果你理解單一職能、責任分離和模塊化,你就會理解我所說的,甚至?xí)X得以前不把server的UI層分給前端實在是很笨。

只可惜,之前Node.js這樣的東東不存在,所以當時沒有前端合適的技術(shù)讓前端工程師們自己搞定server的UI層。于是后端的同學(xué)們用PHP的人就順手把UI用PHP的模板實現(xiàn)了,同樣的用Java的后端同學(xué)也自然而然地用JSP搞定這個問題。這不是前端的同學(xué)不愿意去做Server的UI,而是因為在之前,沒有一種我們熟悉的技術(shù)讓我們能夠搞定這些事情,但是現(xiàn)在不一樣了,我們有Node.js了。

結(jié)論

我很喜歡Node.js,我喜歡由這項技術(shù)給前端界帶來的更大的發(fā)展?jié)摿?。我并不認為整個后端完全用Node.js來實現(xiàn)會是一個很好的方案,盡管Node.js完全可以做到這一切。我認為目前Node.js最大的價值是能讓前端完全把控整個UI層,不論是瀏覽器的還是Server端的,做到這一點,我們工作的效率能得到很大的提升。我們前端更擅長于決定數(shù)據(jù)以何種方式呈現(xiàn)能帶給用戶更好的體驗,而后端則更加了解如何處理數(shù)據(jù)。在這種新的分工方式下,后端只需要提供合適的數(shù)據(jù)操作接口,前端自己就能構(gòu)建漂亮的、有效率的、可用性高的接口,從而實現(xiàn)用戶所喜歡的各種交互。

使用Node.js來搞定server的UI層也將后端工程師從他們不擅長的領(lǐng)域解放了出來。于是我們得到了一個Web開發(fā)的靈丹妙藥:前后端之間只需要通過數(shù)據(jù)來交互,這種模型使得兩方相互獨立,各自都能夠快速迭代開發(fā),而只要保證數(shù)據(jù)接口不變,前后端彼此之間就不會造成任何影響。

果斷嘗試一下吧,這個方案也許正適合你的團隊。

原文地址
Node.js and the new web front-end


作者: 慕奶姨 
來源:慕課網(wǎng)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩成人高清免费在线| 日本欧美三级中文字幕| 欧美日韩国产欧美日韩| 亚洲视频在线观看你懂的| 久久精品国产亚洲av久按摩| 欧美人禽色视频免费看| 国产精品午夜福利在线观看| 国产一区欧美午夜福利| 亚洲精品中文字幕一二三| 久久精品国产亚洲熟女| 久久精品国产熟女精品| 欧美午夜不卡在线观看| 人体偷拍一区二区三区| 色综合视频一区二区观看| 国产成人免费高潮激情电| 欧美日韩校园春色激情偷拍| 欧美乱码精品一区二区三| 男女一进一出午夜视频| 久热这里只有精品九九| 日韩中文字幕狠狠人妻| 五月婷婷六月丁香亚洲| 日韩不卡一区二区在线| 国产一区二区三区草莓av| 在线免费国产一区二区| 亚洲一区二区欧美在线| 久草国产精品一区二区| 欧美日韩精品综合一区| 国产亚洲精品香蕉视频播放| 国产色第一区不卡高清| 一区二区三区18禁看| 69精品一区二区蜜桃视频| 国产内射一级一片内射高清视频| 九九热九九热九九热九九热| 久久成人国产欧美精品一区二区| 在线日韩欧美国产自拍| 亚洲精品中文字幕熟女| 国产一级二级三级观看| 黄色激情视频中文字幕| 精品国产一区二区欧美| 噜噜中文字幕一区二区| 亚洲国产日韩欧美三级|