一個基於 Vue 的 SSR 框架

Vapperjs - 一個基於 Vue 的 SSR 框架

vapper

基於Vue的服務器端渲染框架

Vapper是基於Vue的服務器端render(SSR)框架,其核心目標是簡單,靈活和功能強大。

主要特點

  • 簡約至上

使用Vapper開發SSR應用程序的經驗就像開發SPA應用程序一樣。無需學習多餘的概念。Vapper允許您以非常直觀和一致的方式預取數據。

  • 靈活而強大

Vapper允許您有選擇地啟用SSR和對路由級別的控制。Vapper還允許您同時使用SSR,Fallback SAP,預渲染等。

  • 插件架構

Vapper的插件體系結構使其非常可擴展。如果您已經編寫了Vue-cli3插件,您將熟悉Vapper的插件創作。Vapper通過插件支持cookie,預渲染,Apollo等。

必要的webpack配置

實際上,VueSSR 的原理非常簡單,我們需要兩種webpack配置:server config和用於client config在何處生成資源,用於生成發送到瀏覽器並生成資源。server configserver bundleclient configclientManifest

這些webpack配置與應用程序的webpack配置類似SPA,可以SSR稍作調整即可使用,因此,Vapper它不會單獨管理所有webpack配置,而僅管理必要的webpack配置,因此Vapper可以與Vue-CLI和Poi。這樣做的好處是Vue-CLI或Poi的功能間接成為的能力Vapper。

Vapper提供了兩個用於集成Vue-CLI和Poi的軟件包:

  • @ vapper / configer-vue-cli
  • @ vapper / configer-poi

如下圖所示:

Vapperjs - 一個基於 Vue 的 SSR 框架

除了使用Vue-CLI或Poi作為webpack管理工具之外,您還可以使用自己的webpack配置。Vapper的Builder模塊僅要求您公開getServerConfig和getClientConfig方法:

class MyOwnConfiger {
getServerConfig () {
return {...} // Return server configuration
}
getClientConfig () {
return {...} // Return client configuration
}
}

有關詳細信息,請參閱:Write Configer

路由級別控制

Vapper考慮到以下情況,的另一個設計目標是儘可能地靈活:

Vapperjs - 一個基於 Vue 的 SSR 框架

我們的要求是,當用戶訪問時/home,我們想要執行服務器端渲染(SSR);當用戶訪問時/foo,我們希望將SPA頁面發送給用戶;當用戶訪問時/bar,我們希望將預渲染的內容發送給用戶。您可能已經注意到,這要求我們具有路由級別的控制並Vapper具有此功能,如以下路由規則所示:

Vapperjs - 一個基於 Vue 的 SSR 框架

我們可以使用該@vapper/plugin-prerender插件來支持預渲染並指定需要預Vapper渲染的路由,然後html在構建時將這些路由渲染到文件中。當用戶請求到達時,Vapper會將其html作為靜態資源發送給用戶。

錯誤處理

發生錯誤時,我們有兩種選擇:

Vapperjs - 一個基於 Vue 的 SSR 框架

  1. 向用戶顯示錯誤頁面
  2. 退回到SPA模式,而不是顯示錯誤頁面

Vapper使您可以靈活控制錯誤的處理方式。發生錯誤時,可以向用戶顯示錯誤頁面。您還可以退回到該SPA模式,以便在發生非致命錯誤時,用戶仍然可以使用我們的應用。

您需要知道的一件事是:當Vapper項目中沒有啟用路由時SSR,它就是一個SPA應用程序。

數據預取

Vapper 提供了一種更直觀,功能更強大的數據預取方法:

Vapperjs - 一個基於 Vue 的 SSR 框架

插件架構

的插件架構Vapper非常靈活。它借鑑了Vue-CLI的插件架構。您可以擴展CLI命令,添加服務器中間件,並使用掛鉤函數來參與的整個生命週期Vapper。

事實上,很多的核心特徵Vapper是在用自己的插件機制,如寫Fallback SPA,micro-caching等等。此外,Vapper可逐步支持通過插件所需的功能,官方插件如下:

  • @vapper/plugin-fs-routes
  • @ vapper / plugin-cookie

您可以查看插件開發以瞭解如何編寫插件。

開源地址:

https://github.com/vapperjs/vapper

更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。


分享到:


相關文章: