Play 2.0 中文资料 - 剖析 Play 2.0 应用

标准的应用目录布局

Play 应用的目录布局是标准化的,这样可保持尽量的简单. 一个标准的 Play 应用看起来如下:

app/ 目录

app 目录饮食了所有的执行构件: Java 和 Scala 的源代码, 模板和需编译的资源文件.

在 app 目录中有三个标准包, 它们各自对应着 MVC 构架模式的每一类部件:

  • app/controllers
  • app/models
  • app/views

你当然可以在其中加入自己的包, 如 app/utils 包.

注: 在 Play 2.0 中, controllers, models 和 views 三个包的命名是比较合理的, 如果需要你也可以更改这些包名 (比如给包名都加上前缀 com.yourcompany).

其中有一个可选的目录叫做 app/assets 用于存放须编译的资源文件, 像 LESS 源文件CoffeeScript 源文件 .

public/ 目录

存放在 public 目录中的资源文件是静态的, 它们直接被 Web 服务器所使用(Unmi 注: 无需预处理).

这个目录分成三个标准的子目录,分别用于存放图片文件, CSS 样式表文件和 JavaScript 文件. 你应该像这样组织你的静态资源文件以保持所有的 Play 应用的一致性.

在新创建的应用中, /public 目录被映射在了 /assets URL 路径上, 不过你可以很轻易的改变这一映射规则, 甚至是使用数个存放静态资源的目录.
Unmi 注: Play 完成 /assets URL 到 /public 的映射是通过在 routes 路由文件中加入以下配置实现的:

conf/ 目录

conf 目录包含了应用的配置文件. 这儿有两个主要的配置文件:

  • application.conf, 应用的主配置文件, 里面包含了标准的配置参数
  • routes, 路由定义文件.

假如需要为应用添加特别的配置项, 较好的办法是在直接在 application.conf 文件中加入更好的配置项.

Unmi 注: 如果你确实有必须写一个独立的配置文件,而且里面的配置项也比较多,可以在 application.conf 用 @include.extra=extra.conf 引入进来,这样可读性要比全堆在 application.conf 一个文件中要高。

如果某个库需要自己的配置文件, 尽量也放在 conf 目录中.

lib/ 目录

lib 目录是可选的, 它包含了不受管理的库依赖. 所有的无法用构建系统需手工管理的 JAR 包. 只需丢到这个目录中去,它们就会被添加到应用的 classpath 中去.

project/ 目录

project 目录饮食了 sbt 构建定义文件:

  • plugins.sbt 定义了项目所用到的 sbt 插件
  • Build.scala 定义了你的应用的构建脚本.

target/ 目录

target 目录包含了一切由构建系统生成的文件. 它让你知晓构建时都产生了些什么是很有用处的.

  • classes/ 包含了所有编译后的类文件 (来自于 Java 和 Scala 源文件的).
  • classes_managed/ 仅仅包含了由框架管理而生成的类 (比如由路由和模板系统生成的类). 在你的 IDE 项目中, 这有助于你以外部类目录的方式添加一个类目录.
  • resource_managed/ 包含生成的资源文件, 比如说由编译像 LESS CSS 和 CoffeeScript 产生的目标文件.
  • src_managed/ 包含产生的源文件, 如由模板系统生成的 Scala 源文件.

基本的.gitignore 文件

自动产生的目录应该让版本控制系统忽略掉的. 这是一个 Play 应用基本的.gitignore 文件:

Unmi 注: 也就是说上面那些文件或目录不应该加到版本服务器上, 只需要保留在每个开发者本地机器上即可。这个是 play new 为你生成的给 Git 用的 .gitignore 文件, 用 SVN 等别的版本管理服务时请作相应的忽略操作。

用 Play 2.0.4 创建的项目的 .gitignore 文件内容行数比较多,是:

本文链接 https://yanbin.blog/play2-0-tutorials-cn-anatomy-application/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments