2013-03-04 80 views
0

我是新玩框架,我試圖將我的應用程序分成多個較小的模塊。例如,我想要一個header模塊和一個sidebar模塊。玩框架模塊:模塊特定的資產

現在,我已經創建了這些模塊和一個page模塊,它將使每個模塊都處於正確的位置。

這裏的模塊代碼示例:

package controllers 

import play.api.templates._ 

object SidebarService { 

    def getHTML() : Html = { 
    views.html.sidebar(name = "variable", repeat = 5) 
    } 
} 

注意,它返回一個Html對象。

這裏還有一個page模塊

package controllers 

import play.api._ 
import play.api.mvc._ 

object Application extends Controller { 

    def index = Action { 
    var sideBar = SidebarService.getHTML() 
    Ok(views.html.index(sideBar)("Your new application is ready.")) 
    } 

} 

這工作得很好的例子,但我如何獲得特定模塊資產一點點困惑被列入page模塊,例如sidebar模塊具有特定的css和javascript文件,這些文件將被page模塊的<head>標籤「包含」(並縮小)。首先,我正朝着模塊化的正確方向前進嗎?其次,我如何完成特定於模塊的資產?

任何指針都會很棒。

回答

1

關於納入特定模塊的資產,我想你總是可以這樣做:

package controllers 

import play.api.templates._ 

object SidebarService { 

    def getAssets : Html = { 
    // your <link> and <script> tags here 
    } 

    def getBody : Html = { 
    views.html.sidebar(name = "variable", repeat = 5) 
    } 
} 

我想你會作出類似PageService性狀與getAssetsgetBody爲抽象方法。你的模塊化方法似乎沒問題。爲了讓頁面擁有任意數量的模塊,我想我會作爲參數傳遞給views.html.index不僅sideBar,但可能是Map[String, PageService]包含由字符串(或符號或任何其他你想要的東西)標識的各種模塊,例如Map("header" -> HeaderService, "sidebar" -> SidebarService)。這樣一來,在視圖中,您可以獲取所使用模塊的所有資產,並通過您定義的鍵查找每個佔位符中繪製的內容。