§彙總反向路由器
在某些情況下,您希望在彼此不依賴的子專案之間共用反向路由器。
例如,您可能有 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)
在此設定中,api
和 web
的反向路由將作為 common
專案的一部分產生。同時,api
和 web
的正向路由仍會產生正向路由,但不會產生反向路由,因為它們的反向路由已經在它們依賴的 common
專案中產生,因此它們不需要產生這些路由。
請注意,
common
專案明確宣告類型為Project
。這是因為它與api
和web
專案之間透過dependsOn
方法和aggregateReverseRoutes
設定有遞迴參考,因此 Scala 類型檢查器需要在遞迴鏈中的某個地方有明確的類型。
下一步:改善編譯時間
在此文件發現錯誤?此頁面的原始程式碼可在此處找到 按此。閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?前往 我們的社群論壇 與社群展開對話。