文件

§彙總反向路由器

在某些情況下,您希望在彼此不依賴的子專案之間共用反向路由器。

例如,您可能有 web 子專案和 api 子專案。這些子專案可能彼此沒有依賴關係,除了 web 專案想要呈現連結到 api 專案(用於進行 AJAX 呼叫),而 api 專案想要呈現連結到 web(在 JSON 中呈現資源的網頁連結)。在此情況下,使用反向路由會很方便,但由於這些專案彼此沒有依賴關係,因此您無法使用。

Play 的路由編譯器提供一個功能,允許共用依賴關係為依賴它的專案產生反向路由,以便這些專案可以共用反向路由。這是使用 aggregateReverseRoutes sbt 設定項目進行設定的,如下所示

lazy val common: Project = (project in file("common"))
  .enablePlugins(PlayScala)
  .settings(
    aggregateReverseRoutes := Seq(api, web)
  )

lazy val api = (project in file("api"))
  .enablePlugins(PlayScala)
  .dependsOn(common)

lazy val web = (project in file("web"))
  .enablePlugins(PlayScala)
  .dependsOn(common)

在此設定中,apiweb 的反向路由將作為 common 專案的一部分產生。同時,apiweb 的正向路由仍會產生正向路由,但不會產生反向路由,因為它們的反向路由已經在它們依賴的 common 專案中產生,因此它們不需要產生這些路由。

請注意,common 專案明確宣告類型為 Project。這是因為它與 apiweb 專案之間透過 dependsOn 方法和 aggregateReverseRoutes 設定有遞迴參考,因此 Scala 類型檢查器需要在遞迴鏈中的某個地方有明確的類型。

下一步:改善編譯時間


在此文件發現錯誤?此頁面的原始程式碼可在此處找到 按此。閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群展開對話。