Play 2.0 文檔 - 入門 -- 針對Scala開發者

安裝 Play 2.0

準備工做

    運行Play框架,須要JDK6或以上版本。

    若是你使用MacOS,已內建支持Java。若是你使用Linux,確保你安裝了SUN JDK或OpenJDK(非gcj,大多數Linux發佈版默認安裝的版本)。若是你使用的是Windows,只需下載並安裝最新的JDK安裝包。

    確保java和javac在你的環境變量中(你能夠經過shell命令行中執行java -version和javac -version檢查)。

    下載二進制包

    下載 Play 2.0 二進制包並解壓到具備讀寫權限的目錄。(運行play將會在 play 目錄中寫入一些文件,所以避免解壓到/opt,/usr/local等你須要特殊寫權限的目錄。)

    添加play腳本於環境變量中

    一般,你應該將框架的安裝目錄加入系統環境變量中。在UNIX系統中,相似:
export PATH=$PATH:/path/to/play20
    Windows中,你也須要相應的設置到全局環境變量中。
    在UNIX中,保確play腳本具備可執行權限。
   
    檢查play命令是否可用
  
$ play help
    若是安裝正常,你將會看到以下基本幫助信息:


新建應用

使用 play 命令新建應用   

    新建應用最容易的方式就是使用 play new 命令。
   
    它將詢問一些信息:javascript

  • 應用名稱(僅用於顯示,名稱將會用於稍後的一些信息)
  • 應用的模版,你能夠選擇基於Java的模版或基於Scala的模版,或者默認模版。

    注意,此時選擇的模版不意味着你將來你不能更換其它語言。例如你能夠選擇默認Java模版而將來使用Scala開發。
    一旦應用建立,你能夠再次使用play命令進入 Play2.0 控制檯。

    不安裝Play而新建項目
   
    你也能夠用 sbt 新建項目,而沒必要安裝Play。
        但首先得安裝 sbt 0.11.2。
    僅需爲新項目新建一個目錄,並使用兩步配置你的 sbt
        在project/plugins.sbt,添加:
java

// The Typesafe repository
resolvers += "Typesafe repository " at "http://repo.typesafe.com/typesafe/releases/"
// Use the Play sbt plugin for Play projects
addSbtPlugin("play" % "sbt-plugin" % "2.0")

確保替換上圖的 2.0 爲你想使用的確切版本。若是你想使用snapshot版本,你須要特別的resolver:git

// Typesafe snapshots
resolvers += "Typesafe Snapshots " at "http://repo.typesafe.com/typesafe/snapshots/"

在project/Build.scala中:github

import sbt._
import Keys._
import PlayProject ._
object ApplicationBuild extends Build {
val appName = "My first application "
val appVersion = "1.0"
val appDependencies = Nil
val main = PlayProject (
appName , appVersion , appDependencies , mainLang = SCALA
)
}


你能夠在該目錄中啓動:sbtajax

sbt將加載項目和解析依賴。shell

解剖 Play 2.0 應用結構數據庫

標準應用佈局瀏覽器

Play應用的標準佈局保持儘可能簡潔。一個標準的應用佈局看起來像這樣:緩存


app                      → Application sources
 └ assets                → Compiled asset sources
    └ stylesheets        → Typically LESS CSS sources
    └ javascripts        → Typically CoffeeScript sources
 └ controllers           → Application controllers
 └ models                → Application business layer
 └ views                 → Templates
conf                     → Configurations files
 └ application.conf      → Main configuration file
 └ routes                → Routes definition
public                   → Public assets
 └ stylesheets           → CSS files
 └ javascripts           → Javascript files
 └ images                → Image files
project                  → sbt configuration files
 └ build.properties      → Marker for sbt project
 └ Build.scala           → Application build script
 └ plugins.sbt           → sbt plugins
lib                      → Unmanaged libraries dependencies
logs                     → Standard logs folder
 └ application.log       → Default log file
target                   → Generated stuff
 └ scala-2.9.1              
    └ cache              
    └ classes            → Compiled class files
    └ classes_managed    → Managed class files (templates, ...)
    └ resource_managed   → Managed resources (less, ...)
    └ src_managed        → Generated sources (templates, ...)
test                     → source folder for unit or functional tests

    app/目錄

    app包含了全部的可執行工件:Java和Scala源代碼,模版和將被編譯的assets源文件。
    app目錄中有三個標準包目錄,表明MVC的每類工件模式:
        app/controllers
        app/models
        app/views

    你固然也能夠定義自已的包,如:app/utils。服務器

        注意,Play 2.0 中,控制器,模型和視圖的包名已無硬性限制,能夠定製了(如以com.yourcompany開頭)。
   
    有個可選的app/assets目錄用於存放待編譯的Less和CoffeeScript源文件。
   
    public/目錄
   
    靜態資源存放的目錄,可被Web服務器直接處理。

    目錄被分爲三個標準的子目錄,images,stylesheets,javascript。你應該像這樣組織你的靜態資源,保持一致性。

   
        剛剛新建的應用,/public將映射給 /assets URL路徑,但你能夠輕易的改變亦或使用幾個不一樣的子目錄來存放。
   
    conf/ 目錄
   
    conf目錄包含應用的配置文件。有兩個主要的配置文件:

        application.conf 應用的主配置文件,包含標準的配置參數
        routes 路由定義文件
   
    若是想爲應用添加可選配置項,能夠向application.conf添加。
    若是某個庫須要特別的配置文件,確保它位於conf目錄下。
   
    lib/ 目錄

    lib目錄是可選的,包含脫管的庫依賴,如那些脫離構建系統,想手動管理的JAR文件。放入該目錄下,它們會自動
加入類路徑中。
   
    project/ 目錄

    project 包含了sbt構建定義符:

        plugins.sbt 定義項目使用的插件
        Build.scala 項目構建腳本

    target/ 目錄

    target目錄包含了全部由構建系統生成的文件。可據此得知生成了那些文件:

        classes/ 包含全部編譯後的類文件(包括Java和Scala)。
        classes_managed/ 僅包含由框架管理的class文件(如路由和模版引擎生成的文件)。將它作爲一個外部類文件
                                     夾加入你的IDE項目中,將會頗有用。
        resources_managed/ 包含生成的資源文件,特別是如Less CSS 和 CoffeeScript的編譯結果。
        src_managed/ 包含編譯的源文件,如被模版引擎生成的Scala源文件。
   
    .gitignore文件

    編譯生成的文件應該被你的版本控制系統忽略。參照以下的.gitignore配置:
   
logs
project/project
project/target
target
tmp

    使用play2.0控制檯
   
    啓動控制檯

    play 2.0 擁有一個基於 sbt 的開發控制檯,能夠管控play應用的整個開發週期。
    要啓動控制檯,進入一個已存在的play項目,運行play腳本:
   
$ cd /path/to/any/application
$ play

   
  
     獲取幫助


    輸入 play help 獲取基本幫助信息:
[My first application] $ help play

    以開發模式運行項目

    以開發模式運行當前項目,輸入 run :
[My first application] $ run

    開發模式中,服務器將以自動重載特性啓動,意味着每次請求,Play將從新檢查項目並編譯必要的文件。若有必要,應用將自動重啓。

    若有任何編譯錯誤,將在瀏覽器中直接顯示。 


   
    想中止服務器,輸入Ctrl+D,將退回到Play控制檯。
    
    編譯

    在Play 2.0 中,你也能夠不用啓動服務器而進行預編譯。使用 compile 命令:
[My first application] $ compile

    啓動交互控制檯

    輸入 console將進入Scala交互控制檯,測試你的Scala代碼:

[My first application] $ console

調試

啓動控制檯的時候,你也能夠請求Play啓動一個JPDA調試端口。稍後能夠用Java debugger鏈接。使用play debug命令:

$ play debug

JPDA端口就緒時,JVM將打印調試日誌:

Listening for transport dt_socket at address: 9999

注意:使用 play debug ,JPDA將socket綁定於9999端口。你也能夠設置JPDA_PORT環境變量改變端口,如使用set JPDA_PORT=1234。

    使用sbt特性

    Play控制檯也不過是一個日常的sbt控制檯,所以你能夠使用sbt特性,如解發執行.
    如運行 ~compile

[My first application] $ ~ compile

    編譯行爲將會在每次你改變源文件的時候觸發。
    若是使用 ~run

[My first application] $ ~ run

    編譯行爲將在開發服務器啓動後觸發。
    相似的你也能夠運行 ~test,便於你每次修改源文件後自動測試。
   

[My first application] $ ~ test

    直接使用 play 命令

    你也能夠直接使用play命令,無須啓動play控制檯。如輸入play run:

$ play run
[info] Loading project definition from myFirstApp/project
[info] Set current project to My first application

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on port 9000...

(Server started, use Ctrl+D to stop and go back to the console...)


    應用將直接啓動。當輸入Ctrl+D後,將退回到OS的控制檯。

    強制清理

    若是某些東西出錯,你認爲sbt緩存已經錯誤,能夠在OS命令行中使用 clean-all 命令,清理全部生成的目錄。

$ play clean-all

    配置你喜歡的IDE

    使用Play開發是簡單的。你甚至不須要一個特別的IDE,Play自動編譯和刷新修改過的文件,僅使用一個簡單的文本編輯器也何嘗不可。
    然而,使用一個先進的Java或Scala IDE,能夠提升生產力,如自動完成,重構和調試。

    Eclipse

    生成配置文件

    Play針對生成eclipse配置文件單獨提供了一個命令。將一個Play項目轉成Eclipse項目,使用 eclipsify 命令:

[My first application] $ eclipsify

    你還需經過File/Import/General/Existing project導入Eclipse工做區:

    你能夠使用 play debug run 啓動應用,稍後使用JPDA 啓動器在任何的啓動會話中鏈接。中止調試會話不會致使服務器中止。

    提示:你能夠經過 ~run 運行應用,可以使改變的文件直接編譯。這種方式,能夠監聽view目錄下的模版,並自動編譯改變的文件。若是你使用正常的 run 運行,你則須要每次刷新瀏覽器。

    若是你作了比較重要的更新,如改變類路徑,使用 eclipsify 從新生成配置文件。(還須要刷新eclipse工程)

    提示:在團隊協做中,不要提交eclipse配置文件!

    生成的配置文件包含了框架安裝路徑的絕對引用。這與你的本地安裝環境密切相關。團隊協做中,每一個開發者必須自行維護他的Eclipse配置文件。

    IntelliJ
   
    生成配置文件

    Play爲生成Intellij IDEA工程配置單獨提供了一個命令。將一個Play項目轉成IDEA模塊,使用 idea 命令:

[My first application] $ idea

    稍後你須要將應用導入工程(File->New Module->Import existing Module)
    提示:There is an Intellij IDEA issue regarding building Java based Play2 apps while having the scala plugin installed. Until itʼs fixed, the         recommended workaround is to disable scala plugin.

    調試,首先添加調試配置:
        打開 Run/Debug 配置對話框,點擊 Run -> Eclipse 配置
        添加遠程配置,選擇 Remote
        配置:
            Set a name
            Transport : Socket
            Debugger mode: Attach
            Host: localhost
            Port: 9999
            Select module you imported

        關閉對話框 - 單擊 Apply

    以調試模式啓動play

$ play debug

    將打印:

Listening for transport dt_socket at address: 9999

    設置一些斷點。運行該應用(必須在終端中運行 play debug)。最後,訪問http://localhost :9000。IntelliJ將在斷點處中斷。

    若是你作了比較重要的更新,如改變類路徑,使用 idea 從新生成配置文件。

    Netbeans
   
    生成配置文件
   
    現階段,Play未提供內置的Netbeans項目生成支持。但你能夠經過Netbeans sbt插件生成一個Netbeans Scala工程。
    首先編輯 plugins.sbt 文件:

```
// Comment to get more information during initialization
logLevel := Level.Warn

resolvers ++= Seq(
DefaultMavenRepository,
「Typesafe Repository」 at 「http://repo.typesafe.com/typesafe/releases/",
」remeniuk repo「 at 」http://remeniuk.github.com/maven"
)

addSbtPlugin(「play」 % 「sbt-plugin」 % 「2.0-RC2」)

libraryDependencies += 「org.netbeans」 %% 「sbt-netbeans-plugin」 % 「0.1.4」
```

    運行:

$ play netbeans

示例應用

    在Play2.0發行包中,提供了一些使用Java和Scala開發的示例應用。這是查看代碼和示例的很好起點。

    示例應用程序位於你的Play安裝目錄的 samples/ 子目錄下。

    Hello World

   這是一個最基本的應用,展現了Play的一些特性:

        編寫控制器和actions
        路由和解析路徑
        Linking to public assets.
        使用模版引擎
        表單驗證

    電腦庫存

    這是一個基本的CRUD示例,底層使用JDBC鏈接。它展現了:
        訪問JDBC數據庫,在Java中使用Ebean,在Scala中使用Anorm。
        分頁表格和CRUD表單。
        集成CSS框架(Twitter Bootstrap)。

    Twitter Bootstrap 須要一個有別於Play2.0提供的默認表單助手的不一樣表單佈局,所以該示例還演示了集成自定義表單構造的示例。
   
    表單

  

一個假設的表單應用,展現了表單的不一樣使用用例. 它演示了 :
        編寫包含驗證的複雜表單
        處理表單的動態重複值


    ZenTasks
   
    該示例展現了基於ajax的應用。這會是一個持續改進的項目,咱們計劃在後續版本中加入新特性。目前你能夠學到:
        集成受權與驗證
        使用Ajax與JavaScript解析路由
        集成編譯 - LESS CSS 和 CoffeeScript

    CometClock


    這是一個很是簡單的Comet演示,推送從服務器端給瀏覽器推送clock事件,使用forever-frame技術。他演示了怎樣:
        建立Comet鏈接
        使用 Akka actors (使用Java版本)
        編寫自定義 Enumerators (Scala版本).

    WebSockets 聊天室

    一個聊天室應用,使用WebSocket構建。採用BOT方式在同一聊天室會談,他演示了:

  • WebSocket 鏈接
  • 高級Akka應用.


    Comet 監測

    一個監測Play服務器性能的手機移動應用 . 他過演示了 :

        Enumerators 和 Enumeratees的高級應用

相關文章
相關標籤/搜索