2011-08-13 70 views
5

有沒有一個骨架斯卡拉Web框架?我基本上需要的基本功能如:一個簡單的Scala web框架?

  • 路由。
  • GET/POST/PUT參數處理。
  • A 簡單模板引擎(基於內容替代)。
  • 序列化(JSON,YAML)

因爲它太適合我,因爲我想在生成的HTML的完全控制,我不喜歡電梯,意思是我希望能寫100 %的HTML/CSS/JS代碼。

有沒有這樣的框架?或者是否有可能使用Lift以 HTML在幕後生成?或者我會更好地編寫一個正常的servlet嗎?

回答

7

也許你想要類似ScalatraUnfiltered?在另一個筆記中,如果您不想放棄在Lift應用程序中對HTML/CSS/JS的任何控制,您就不必放棄。

+0

謝謝@ ethan-jewett糾正我的文盲! ;-) – pr1001

+0

電梯+1。它*可以爲你做很多事情,但它不必 – Dylan

+0

未經過濾的看起來非常適合於搜索操作。 – AndreasScheinert

0

本來不是Scala框架,但是我用Jetty + JAX-RS + Scala + Freemarker祝你好運。這些都是相當經過戰鬥測試的技術,並且Scala集成沒有問題。爲了適應Freemarker理解Scala系列產品和屬性,一個小墊片是必要的,但沒有什麼具有挑戰性。

1

兩個以上的框架,你要考慮:

  • 遊戲是一個簡單的REST框架,在日益普及,並有一個很好的Scala interface。它的模板相對簡單地轉換成Scala函數。幾個月前,使用JSON包(如lift-json)將數據解包到案例類中存在困難,因爲Play具有用於快速開發的自定義類加載器。不確定此問題是否已解決。斯卡拉公司Typesafe使用Play for their site。 Play與Akka集成,Akka的一位開發者之一Viktor Klang推薦玩一段時間。

  • 稍微遠一點的路徑,有Spray。我不能說詳細信息,但Wiki看起來很有趣。在我看來,Spray看起來是圍繞Akka整合設計的。我不認爲它帶有模板引擎,但它可能與Scalate接口(請參閱mailing list discussion)。

+2

我不會打電話播放「裸機」,它是數百兆字節。 –

+0

我不會說它簡單。這非常複雜。 – rightfold

0

Scalatra是斯卡拉善良的相當光禿禿的骨頭。易於配置,易於處理裸HTTP的東西。它類似於斯卡拉的sinatra。 Scalatra也具有良好的Maven支持,並且與傳統的java servlets共存。

2

彼得給出了一個很好的答案......我會稍微擴展一下。

Lift爲您提供了大量的控制和訪問原始HTTP請求以及在HTTP級別之上提供大量抽象。這是您選擇Lift要做多少或多少的選擇。

您可以使用Lift的RestHelper構建基於REST的應用程序。請參閱http://simply.liftweb.net/index-Chapter-5.html Lift的RestHelper可爲您提供絕大多數基於MVC /路由的方法,其優勢在於您的應用程序的最前沿是類型安全和訪問控制。但是使用Scala的模式匹配提取器,可以確保交付給應用程序業務邏輯的參數已經實現並檢查訪問控制。此外,Lift的REST支持將與其他Web框架一樣簡潔或更簡潔。

就Lift的HTML處理而言,只要您希望將HTML生成爲有效的DOM而不是一系列的Strings,就可以控制HTML的創建。

大多數Web框架強制您在撰寫HTML時發出字符串。正確的HTML轉義字符串取決於開發人員。開發人員必須確保結束標記正確排列。有了Lift,你可以免費得到這種東西。

您可以使用MVC風格的Lift應用程序提供HTML。請參閱https://github.com/dpp/hoisted(這是支持http://liftweb.net的代碼)

在Lift應用程序的「標準」配置中,當且僅當您使用某種構造時,Lift會對HTML進行一些後處理。因此,如果您將<head>標籤放在HTML頁面的正文中,Lift會將該<head>標籤的內容移動到頁面的頭部。如果您包含對Lift的Comet支持的調用,Lift會在頁面上插入JavaScript來進行長輪詢。但是這些功能是可選的,只有在您使用Lift中的某些功能時纔會發生。

我希望這可以幫助您瞭解使用Lift的好處。