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ファイルがあります。まず、モジュール化の方向性は正しいですか? 次に、モジュール固有のアセットをどのように達成できますか? <head>page

どんな指針も素晴らしいでしょう。

4

1 に答える 1

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、特性のようなものを作成するつもりだと思います。モジュール化のアプローチは問題ないようです。ページに任意の数のモジュールを含めるには、引数としてだけでなく、文字列 (またはシンボル、またはその他の必要なもの) キーによって識別されるさまざまなモジュールを含む に渡すと思います。そうすれば、ビューで、使用しているモジュールのすべてのアセットを取得し、定義したキーで検索して、各プレースホルダーに何を描画するかを知ることができます。getAssetsgetBodyviews.html.indexsideBarMap[String, PageService]Map("header" -> HeaderService, "sidebar" -> SidebarService)

于 2013-03-05T10:00:27.097 に答える