摘要:同構JavaScript應用指的是用JavaScript編寫的應用,能夠同時運行于客戶端和服務器。這也讓在客戶端和服務器之間共享代碼變成一種更普遍自然的選擇。這一趨勢通過庫(如React)共享模版得到了增強。
圍繞Web的格言之一是Java的“一次編寫,到處運行”。不過這個座右銘只適用于Java嗎?我們能否也用它來形容JavaScript?答案是肯定的。
單一頁面應用
多年前,Web是一群由HTML和CSS構建的靜態頁面,沒有太多的交互性。每個用戶行為要求服務器來創建和提供一個完整的頁面。幸于JavaScript的出現,開發者開始創建漂亮的效果。不過這是隨著Ajax的出現才開始的一場革命。Web開發者開始編寫能夠與服務器發送和接收數據的代碼,同時不需要重新加載頁面。
隨著時間的推移,客戶端的“職責”增長了很多,導致了一種新的應用類型,即SPA(單一頁面應用)。在一個SPA中,所有必要的資產都通過單一頁面加載或動態加載恢復,并在必要時添加到頁面中。這樣的例子有Gmail和StackEdit編輯器。
SPA允許更好的互動,因為幾乎所有的操作都在客服端中執行,大限度的保持與服務器通信。不幸的事它也存在一些重大問題,接下來我們討論其中的一些。
性能
因為SPA需要比靜態頁面更多的客服端代碼,增加了下載的數據量。這會導致較慢的初始加載時間,從而產生不好的后果,比如用戶的流失和收入的減少。引用微軟的一篇文章中的一句話:
一份Bing的研究發現一個頁面加載時間增加10ms就是花費站點250美元。
SEO
由于SPA依賴于JavaScript執行,服務器不產生所有的HTML內容。因此網絡爬蟲在索引頁面時會有很多困難(網絡爬蟲是一種按照一定的規則,自動的抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲)。近谷歌改進其網絡爬蟲,讓它接納基于JavaScript的頁面。然而對于Bing、Yahoo以及其他的搜索引擎呢?對所有業務而言良好的索引是至關重要的,因為它通常會帶來更多的訪問和更高的收入。
同構JavaScript應用
同構JavaScript應用指的是用JavaScript編寫的應用,能夠同時運行于客戶端和服務器。因此,你只需編寫一次代碼,在服務器上執行它來實施靜態頁面,同時執行于客戶端以允許快速的交互。所以這種方法在兩個世界中都能取得好的結果,避免了前面描述的兩個問題。
如今有幾種框架可以幫助你開發這類應用,而其中的框架之一可能就是Meteor。Meteor是一個開源的JavaScript框架,基礎構架是Node.JS + MongoDB,專注于實時的Web應用。另一個想提到的項目是Render,一個通過Airbnb的小型庫,允許你同時在客戶端和服務器上運行Backbone.js應用。
越來越多的企業開始對項目采用Node.js,在客戶端和服務器之間共享代碼變成一種更普遍自然的選擇。這一趨勢通過庫(如React)共享模版得到增強。
原文來自:sitepoint
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。