文件

§Play 2.3 的新功能

此頁面重點介紹 Play 2.3 的新功能。如果您想了解遷移到 Play 2.3 所需進行的變更,請查看 Play 2.3 遷移指南

§Activator

您會注意到 Play 2.3 的第一件事是 play 指令已變更為 activator 指令。Play 已更新為使用 Activator,以便我們可以

在未來,Activator 將獲得更多功能,而這些功能將自動使 Play 和其他使用 Activator 的專案受益。Activator 是開源的,因此社群可以協助其演進。

§Activator 命令

使用 play 命令可用的所有功能仍然可以使用 activator 命令。

新的 activator 命令和舊的 play 命令都是 sbt 的包裝器。如果您願意,您可以直接使用 sbt 命令。但是,如果您使用 sbt,您將錯過 Activator 的多項功能,例如範本 (activator new) 和網路使用者介面 (activator ui)。sbt 和 Activator 都支援所有常見的主控台命令,例如 testrun

§Activator 發行版

Play 以 Activator 發行版形式發行,其中包含 Play 的所有相依性。您可以從 Play 下載 頁面下載此發行版。

如果您願意,您也可以從 Activator 網站 下載 Activator 的最小版本 (1MB)。在下載頁面上尋找「mini」發行版。Activator 的最小版本僅在需要時下載相依性。

由於 Activator 是 sbt 的包裝器,如果您願意,您也可以直接下載和使用 sbt

§建置改進

§sbt-web

Play 2.3 最大的新功能是導入 sbt-web。總之,sbt-web 允許將 HTML、CSS 和 JavaScript 功能從 Play 的核心分解到純 sbt 外掛程式系列中。對您來說有兩個主要優點

§自動外掛程式

Play 現在使用 sbt 0.13.5。此版本帶來一個名為「自動外掛程式」的新功能,本質上允許大幅減少建置檔案的設定導向程式碼。

§資源管道和指紋

sbt-web 為 Play 帶來高度可設定資源管道的概念,例如

pipelineStages := Seq(rjs, digest, gzip)

上述將按順序執行 RequireJs 最佳化器 (sbt-rjs)、摘要器 (sbt-digest) 然後是壓縮 (sbt-gzip)。與許多 sbt 任務不同,這些任務將按宣告順序一個接一個執行。

Play 2.3 的一項新功能是支援資產指紋辨識,其原理類似於 Rails 資產指紋辨識。資產指紋辨識的結果是,我們現在在提供服務時使用遠端快取過期功能。其最終結果是,由於瀏覽器現在能夠採用積極快取策略,因此您的使用者在造訪您的網站時,將能體驗到更快的下載速度。

§預設 ivy 快取和本機儲存庫

Play 現在使用預設 ivy 快取和儲存庫,位於使用者家目錄中的 .ivy2 資料夾中。

這表示 Play 現在能與其他 sbt 建置更好地整合,不需要多次快取人工製品,並允許共用本機發佈的人工製品。

§Java 改進

§Java 8

Play 2.3 已使用 Java 8 進行測試。您的專案將能順利使用 Java 8;除了確保您的 Java 環境已設定為 Java 8 之外,不需要執行任何特殊作業。有一個新的 Activator 範例可供 Java 8 使用

https://www.lightbend.com/activator/template/reactive-stocks-java8

我們的文件已獲得改善,其中包含一般 Java 範例,以及適用的 Java 8 範例。查看一些 使用 Java 8 的非同步程式設計範例

如需使用 Java 8 和 Play 轉為 Reactive 的完整概觀,請查看此部落格:https://www.lightbend.com/blog/go-reactive-with-java-8

§Java 效能

我們致力於改善 Java 效能。與 Play 2.2 相比,簡單 Java 動作的處理量已增加 40-90%。以下是主要的最佳化

這些變更中的一些也改善了 Scala 效能,但 Java 獲得最大的效能提升,也是我們工作的重點。

感謝 YourKit 提供 Play 團隊授權,讓這項工作得以實現。

§Scala 2.11

Play 2.3 是 Play 的第一個版本,針對多個 Scala 版本進行交叉建置,包括 2.10 和 2.11。

您可以透過在 build.sbtBuild.scala 檔案中設定 scalaVersion 設定,來選擇您想要使用的 Scala 版本。

對於 Scala 2.11

scalaVersion := "2.11.1"

對於 Scala 2.10

scalaVersion := "2.10.4"

§Play WS

§獨立的函式庫

WS 用戶端函式庫已重構為其自己的函式庫,可以在 Play 外部使用。現在您可以擁有多個 WSClient 物件,而不再只能使用 WS 單例。

Java

WSClient client = new NingWSClient(config);
Promise<WSResponse> response = client.url("http://example.com").get();

Scala

val client: WSClient = new NingWSClient(config)
val response = client.url("http://example.com").get()

每個 WS 用戶端都可以使用自己的選項進行設定。這允許不同的 Web 服務對逾時、重新導向和安全性選項有不同的設定。

現在也可以存取底層的 AsyncHttpClient 物件,這表示支援多部分表單和串流主體上傳。

§WS 安全性

WS 用戶端有 設定,可進行全面的 SSL/TLS 設定。WS 用戶端設定現在預設更安全。

§Actor WebSockets

已整合一種方法,使用 actor 來處理 websocket 互動,適用於 Java 和 Scala,例如使用 Scala

Java

public static WebSocket<String> socket() {
    return WebSocket.withActor(MyWebSocketActor::props);
}

Scala

def webSocket = WebSocket.acceptWithActor[JsValue, JsValue] { req => out =>
  MyWebSocketActor.props(out)

§結果重組已完成

在 Play 2.2 中,引入了許多新的結果類型,並將舊的結果類型標示為不建議使用。Play 2.3 完成了這項重組。請參閱 遷移指南 中的結果重組以取得更多資訊。

§Anorm

Play 2.3 的 Anorm 包含各種修正(類型安全性、選項剖析、錯誤處理…)和新的有趣功能。

§HTTPS 的自訂 SSLEngine

Play 伺服器現在可以使用 自訂的 `SSLEngine`。這在需要自訂時也很有用,例如在客戶端驗證的情況下。

下一頁:遷移指南


在此文件發現錯誤?此頁面的原始碼可以在 這裡 找到。閱讀 文件指南 後,歡迎貢獻拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。