成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[轉(zhuǎn)]Node.js給前端帶來了什么

BearyChat / 768人閱讀

摘要:兩個獨立的層即使這種技術(shù)風靡全球之后,前端工程師的主要工作也都是局限于瀏覽器窗口之內(nèi)的。這是目前最主流的一種前后端分工方式帶來的改變一發(fā)布,立刻在前端工程師中引起了軒然大波,前端工程師們幾乎立刻對這一項技術(shù)表露出了相當大的熱情和期待。

轉(zhuǎn)載自:http://www.w3ctech.com/topic/37

原 文: https://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/

在軟件開發(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ā)展,JavaScript這門語言在悄然改變?nèi)藗儗η岸斯ぷ鞯目捶ǎ屢恍┤藦拿拦ろ撁孀修D(zhuǎn)變?yōu)檎嬲那岸斯こ處?。JavaScript,這門很多工程師曾經(jīng)把它當做玩具而不屑一顧的腳本語言竟然演變成了推動互聯(lián)網(wǎng)發(fā)展的核心驅(qū)動力。伴隨著越來越多的瀏覽器的出現(xiàn)使得用HTML和CSS兼容各種瀏覽器變得越來越難,于是能實現(xiàn)兼容各種瀏覽器的頁面成為了前端工程師的金字招牌,前端職業(yè)開始變得炙手可熱。

兩個獨立的UI層

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

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

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

Node.js帶來的改變

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

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

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

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

現(xiàn)在我們看看Node.js帶來的好處吧,當后端程序員提供了REST服務之后,現(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層,而這一層本來對于后端來說是一件他們做起來不輕松的零碎活兒。

不!這太聳人聽聞了!

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

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

只可惜,之前Node.js這樣的東東不存在,所以當時沒有前端合適的技術(shù)讓前端工程師們自己搞定server的UI層。所以后端的同學們用PHP的人就順手把UI用PHP的模板實現(xiàn)了,同樣的用Java的后端同學也自然而然地用JSP搞定這個問題。這不是前端的同學不愿意去做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ù)接口不變,前后端彼此之間就不會造成任何影響。

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

博客地址:http://wangyh.net

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78786.html

相關(guān)文章

  • 從 JavaScript 到 TypeScript - 模塊化和構(gòu)建

    摘要:不過,相對于靜態(tài)類型檢查帶來的好處,這些代價是值得的。當然少不了的模塊化標準,雖然到目前為止和大部分瀏覽器都還不支持它。本身支持兩種模塊化方式,一種是對的模塊的微小擴展,另一種是在發(fā)布之前本身模仿的命名空間。有一種情況例外。 TypeScript 帶來的最大好處就是靜態(tài)類型檢查,所以在從 JavaScript 轉(zhuǎn)向 TypeScript 之前,一定要認識到添加類型定義會帶來額外的工作量...

    Jonathan Shieber 評論0 收藏0
  • 實踐中的電商前端優(yōu)化

    摘要:前端優(yōu)化已經(jīng)是一個被寫爛的題材了。前端模板方案有很多。重繪是瀏覽器性能優(yōu)化的一個重點,特別是針對的優(yōu)化。如果你對前端性能優(yōu)化有自己的想法,歡迎騷擾我。 前端優(yōu)化已經(jīng)是一個被寫爛的題材了。 雖千萬人吾往矣,這里我僅分享我的一些實踐經(jīng)驗。 歡迎一起交流 歡迎關(guān)注我的個人公眾號,不定期更新自己的工作心得。 showImg(https://segmentfault.com/img/remote...

    Michael_Ding 評論0 收藏0
  • 實踐中的電商前端優(yōu)化

    摘要:前端優(yōu)化已經(jīng)是一個被寫爛的題材了。前端模板方案有很多。重繪是瀏覽器性能優(yōu)化的一個重點,特別是針對的優(yōu)化。如果你對前端性能優(yōu)化有自己的想法,歡迎騷擾我。 前端優(yōu)化已經(jīng)是一個被寫爛的題材了。 雖千萬人吾往矣,這里我僅分享我的一些實踐經(jīng)驗。 歡迎一起交流 歡迎關(guān)注我的個人公眾號,不定期更新自己的工作心得。 showImg(https://segmentfault.com/img/remote...

    Dongjie_Liu 評論0 收藏0
  • 實踐中的電商前端優(yōu)化

    摘要:前端優(yōu)化已經(jīng)是一個被寫爛的題材了。前端模板方案有很多。重繪是瀏覽器性能優(yōu)化的一個重點,特別是針對的優(yōu)化。如果你對前端性能優(yōu)化有自己的想法,歡迎騷擾我。 前端優(yōu)化已經(jīng)是一個被寫爛的題材了。 雖千萬人吾往矣,這里我僅分享我的一些實踐經(jīng)驗。 歡迎一起交流 歡迎關(guān)注我的個人公眾號,不定期更新自己的工作心得。 showImg(https://segmentfault.com/img/remote...

    lakeside 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<