§Play 应用程序的结构
§Play 应用程序布局
Play 应用程序的布局是标准化的,以尽可能保持简单。在第一次成功编译后,项目结构如下所示
app → Application sources
└ assets → Compiled asset sources
└ stylesheets → Typically LESS CSS sources
└ javascripts → Typically CoffeeScript sources
└ controllers → Application controllers
└ models → Application business layer
└ views → Templates
build.sbt → Application build script
conf → Configurations files and other non-compiled resources (on classpath)
└ application.conf → Main configuration file
└ routes → Routes definition
dist → Arbitrary files to be included in your projects distribution
public → Public assets
└ stylesheets → CSS files
└ javascripts → Javascript files
└ images → Image files
project → sbt configuration files
└ build.properties → Marker for sbt project
└ plugins.sbt → sbt plugins including the declaration for Play itself
lib → Unmanaged libraries dependencies
logs → Logs folder
└ application.log → Default log file
target → Generated stuff
└ resolution-cache → Info about dependencies
└ scala-2.13
└ api → Generated API docs
└ classes → Compiled class files
└ routes → Sources generated from routes
└ twirl → Sources generated from templates
└ universal → Application packaging
└ web → Compiled web assets
test → source folder for unit or functional tests
§app/
目录
app
目录包含所有可执行工件:Java 和 Scala 源代码、模板和已编译的资产源。
app
目录中有三个包,每个包对应 MVC 架构模式的一个组件
app/controllers
app/models
app/views
你可以添加自己的包,例如,app/services
包。
注意:在 Play 中,
controllers
、models
和views
包名只是约定,如果需要可以更改(例如,在所有内容前面加上com.yourcompany
)。
还有一个可选目录称为 app/assets
,用于已编译的资产,例如 LESS 源代码 和 CoffeeScript 源代码。
§public/
目录
存储在 public
目录中的资源是静态资产,由 Web 服务器直接提供服务。
此目录分为三个子目录,用于图像、CSS 样式表和 JavaScript 文件。你应该像这样组织你的静态资产,以保持所有 Play 应用程序的一致性。
在新建的应用程序中,
/public
目录映射到/assets
URL 路径,但你可以轻松更改它,甚至使用多个目录来存放你的静态资产。
§conf/
目录
conf
目录包含应用程序的配置文件。有两个主要的配置文件
application.conf
是应用程序的主要 配置文件routes
是路由器的定义文件。
如果你需要添加特定于你的应用程序的配置选项,最好在 application.conf
文件中添加更多选项。
如果库需要特定的配置文件,最好将其提供在 conf
目录下。
§lib/
目录
lib
目录是可选的,包含未管理的库依赖项,即所有你想要在构建系统之外手动管理的 JAR 文件。只需将任何 JAR 文件放在这里,它们就会被添加到你的应用程序类路径中。
§build.sbt
文件
项目的主要构建声明通常位于项目根目录下的 build.sbt
文件中。
§project/
目录
project
目录包含 sbt 构建定义。
plugins.sbt
定义了该项目使用的 sbt 插件。build.properties
包含用于构建应用程序的 sbt 版本。
§target/
目录
target
目录包含构建系统生成的所有内容。了解这里生成的内容可能很有用。
classes/
包含所有编译后的类(来自 Java 和 Scala 源代码)。classes_managed/
仅包含由框架管理的类(例如,由路由器或模板系统生成的类)。将此类文件夹添加为 IDE 项目中的外部类文件夹可能很有用。resource_managed/
包含生成的资源,通常是编译后的资产,例如 LESS CSS 和 CoffeeScript 编译结果。src_managed/
包含生成的源代码,例如由模板系统生成的 Scala 源代码。web/
包含由 sbt-web 处理的资产,例如来自app/assets
和public
文件夹的资产。
§典型的 .gitignore
文件
生成的文件夹应该被您的版本控制系统忽略。以下是一个 Play 应用程序的典型 .gitignore
文件
logs
project/project
project/target
target
tmp
dist
.bsp
.cache
RUNNING_PID
§默认 sbt 布局
您也可以选择使用 sbt 和 Maven 使用的默认布局。要使用此布局,您必须禁用布局插件并为 twirl 模板设置显式监控
// Copyright (C) from 2022 The Play Framework Contributors <https://github.com/playframework>, 2011-2021 Lightbend Inc. <https://www.lightbend.com>
lazy val root: Project = (project in file("."))
.enablePlugins(PlayScala)
// Use sbt default layout
.disablePlugins(PlayLayoutPlugin)
这将阻止 Play 覆盖默认的 sbt 布局,其外观如下
build.sbt → Application build script
src → Application sources
└ main → Compiled asset sources
└ java → Java sources
└ controllers → Java controllers
└ models → Java business layer
└ scala → Scala sources
└ controllers → Scala controllers
└ models → Scala business layer
└ resources → Configurations files and other non-compiled resources (on classpath)
└ application.conf → Main configuration file
└ routes → Routes definition
└ twirl
└ views → Templates
└ assets → Compiled asset sources
└ css → Typically LESS CSS sources
└ js → Typically CoffeeScript sources
└ public → Public assets
└ css → CSS files
└ js → Javascript files
└ images → Image files
└ test → Unit or functional tests
└ java → Java source folder for unit or functional tests
└ scala → Scala source folder for unit or functional tests
└ resources → Resource folder for unit or functional tests
└ universal → Arbitrary files to be included in your projects distribution
project → sbt configuration files
└ build.properties → Marker for sbt project
└ plugins.sbt → sbt plugins including the declaration for Play itself
lib → Unmanaged libraries dependencies
logs → Logs folder
└ application.log → Default log file
target → Generated stuff
└ scala-2.13
└ cache
└ classes → Compiled class files
└ classes_managed → Managed class files (templates, ...)
└ resource_managed → Managed resources (less, ...)
└ src_managed → Generated sources (templates, ...)
下一步:使用 Play 控制台
发现此文档中的错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?前往 我们的社区论坛 与社区进行对话。