在scalajs-react
's router 的文档中,@japgolly警告该库的用户,以“/”斜杠开头的 URL 需要额外的服务器配置。
为了允许没有 的漂亮 URL #
,到目前为止,我尝试在 Playroutes
文件中编写一个包罗万象的路由,如下所示:
# Home page
GET / com.xyz.controllers.Application.index(path: String = "")
...
# Catch-all route
GET /*path com.xyz.controllers.Application.index(path: String)
与匹配的索引路径Application.scala
def index(path: String = "") = Action {
Ok(views.html.index("Title"))
}
最后是RouterConfigDsl
在前端声明使用的路由:
def create = Router(BaseUrl.until_#, RouterConfigDsl[Loc].buildConfig { dsl =>
import dsl._
( emptyRule
| staticRoute(root, DashboardLoc) ~> render(filler("Dashboard"))
| staticRoute("purchase-orders", PurchaseOrdersLoc) ~> render(filler("Purchase Orders"))
| staticRoute("dashboard", DashboardLoc) ~> render(filler("Dashboard"))
| staticRoute("items", ItemsLoc) ~> render(ItemGallery())
| staticRoute("customers", CustomersLoc) ~> render(filler("Customers"))
| staticRoute("sales-orders", SalesOrdersLoc) ~> render(filler("Sales Orders"))
| staticRoute("preorders", PreordersLoc) ~> render(filler("Pre-orders"))
).notFound(redirectToPage(DashboardLoc)(Redirect.Replace))
.setTitle(l => s"XYZ | ${l.name}")
}.renderWith(layout))
在本地运行,我有应用程序自动重定向到DashboardLoc
atlocalhost:9000/dashboard
并且其他静态路由在 Web 应用程序中单击它们时工作,但在重新加载时失败。