我第一次遇到例如Ruby的Sinatra框架或PHP的Zend框架时,我想知道Java中是否有足够的东西,这一切看起来都很臃肿.虽然周围有无数的框架,但到目前为止我还没有找到任何框架,我认为这对于我想要实现的架构是完美的.
我想设计一个对Javascript很重要的Web应用程序,在客户端上实现大多数应用程序逻辑,Java后端或多或少只是用作数据存储或执行复杂的计算.
我确实在这里查看了相关的问题,但我找不到完美的答案,每个建议的解决方案都有一个不符合要求的怪癖.
所以这就是我要寻找的,一个具有以下功能的开源框架:
基本上这意味着MVC框架为我做路由并为视图提供模板支持,但其余的是完全模块化的,没有魔力.是否有任何简约框架可以提供这种(或者至少是模块化的,以便以这种方式配置)?
Dan*_*ath 15
如何玩框架?
约定优于配置
Play只有很少的配置文件.其大多数结构是按惯例.例如,基本结构如下:
|
+---/app - All executable artifacts go here (java files, conf files and view templates).
| |
| +---/model - Your model Java classes.
| |
| +---/view - Your view templates.
| |
| +---/controller - Your controller classes
|
|---/conf - Contains all configuration files for the application. Initially contains application configuration and routing table.
|
|---/lib - Libraries your appliaction needs. Added automatically to classpath.
|
|---/log
|
|---/public - Public stuff are your static assets that your server gives directly
|
|---/test
|
|---/tmp - All your temporarily compiled .class files are here
Run Code Online (Sandbox Code Playgroud)
除了web.xml之外没有XML配置
Play没有XML配置,包括没有web.xml.它有一个路由文件.请参阅下面的示例,它用于路由.
纯Java(没有Scala,没有Groovy,......)
它是纯Java,但您可以通过插件使用Scala或Groovy.
- 自然的REST风格的URL,例如/ news/2011/7月(没有.do,没有.jsp,...)
- REST感知
从网站:
Play is a real "Share nothing" system. Ready for REST, it is easily scaled by running multiple instances of the same application on several servers.
实际上,以类似Rest的方式进行路由非常简单:
# Play 'routes' configuration file…
# Method URL path Controller
GET / Application.index
GET /about Application.about
POST /item Item.addItem
GET /item/{id} Item.getItem
GET /item/{id}.pdf Item.getItemPdf
Run Code Online (Sandbox Code Playgroud)
一旦你习惯了玩一下,就不难猜出哪个会去哪里.
- 它不应该强迫我在应用服务器上部署(例如EJB应该是可选的)
它没有.实际上,您可以通过保存文件进行部署.EJB是完全可选的.war
,.ear
也是其他形式的部署.
像Rails中的代码生成将是很棒但不是强制性的
我认为它不会产生太多的代码,但我不是100%的代码.它会自动创建所有必需的文件夹并实例化一个基本的示例页面.我不知道Rails是否会产生任何其他东西......
MVC会很好,但是
- 我希望能够选择M部分,自己选择持久性库(没有捆绑).
- 没有自动生成的视图代码,HTML,Javascript和CSS
- 集成的模板语言会很好,但它应该是简约的(简单的控制流,
请参阅Play中的MVC
.html
,.css
,.js
和其他文件来创建动态页面.我有基于Groovy模板语言的内置模板语言,例如
You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !
其他优点:
缺点:
归档时间: |
|
查看次数: |
7653 次 |
最近记录: |