SPA ( Single Page Apps ) 兩大隱憂
不友善的SEO
由於程式只跑在 client-side,所以 server 並沒有提供爬蟲需要的 HTML 資料。
效率(Performance)
由於要等整包 client-side 的 js 內下載完之後,才會在瀏覽器 render html,所以第一次的開啟速度會很慢。
目前各框架提供的解決方案就是做 Server Side Rendering
,那現在不只有 client-side,多了一個 Server Side,它們要做的事基本是一樣的,所以共用的地方會很多,所以就提出了 universal web application
的概念。
Isomorphic ( universal ) JavaScript
一開始看到這個字的時候(之後又更名為 universal),很容易以為這是一個新的框架,但其實它是只一個概念,而有很多框架去實踐了這個概念,例如fluxible
,可以在新舊文章穿插看到這兩個字眼,其實是在講同件事。
我們來看看 http://isomorphic.net/javascript 上對於這個字的定義
JavaScript applications which run both client-side and server-side. Isomorphic JavaScript frameworks are the next step in the evolution of JavaScript frameworks. These new libraries and frameworks are solving the problems associated with traditional JavaScript frameworks.
一個 JavaScript 的應用程式,可以同時跑在 client-side 和 server-side,Isomorphic JavaScript frameworks 是 JavaScript frameworks 下一階段的演化,這些新的 libraries 和 框架解決了傳統 JavaScript frameworks 的問題。
tips
- isomorphic : 同構
- universal : 通用