HTML后台

play-bootstrap4-admin — HTML 后台模板

作者 YouXiang-Wang

基于 Play Framework 与 Bootstrap 4 的后台管理仪表盘模板,界面源自 SB Admin 2,包含图表、数据表格等页面。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

1 个预览视图
作者提供的预览
作者提供的预览首屏预览

来自项目 README 的原始预览。

目前有 1 张原始预览,可打开完整图片查看设计细节。

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-03查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

以 Play Framework 实现服务端,采用 MVC 结构与编译期依赖注入

02

界面基于 Bootstrap 4 的 SB Admin 2 后台模板

03

客户端集成 Chart.js、DataTables、jQuery、jQuery-easing 与 Font Awesome

04

使用 sbt-sassify 编译 SCSS 资源,资源由 sbt 统一打包

05

通过 WebJars 管理前端库依赖

模板详细介绍

该项目是用 Play Framework 实现的 Bootstrap 4 后台管理模板,界面基于开源的 SB Admin 2。仓库以 Scala 编写服务端,使用编译期依赖注入与 Macwire 宏组织组件,客户端通过 WebJars 引入 Bootstrap 4、Chart.js、DataTables、jQuery、jQuery-easing 和 Font Awesome,并使用 sbt-sassify 处理 SCSS 资源。

页面结构由 views/main/main.scala.html 定义基础 HTML 与全局 CSS/JS 引用,views/main/layout.scala.html 定义导航、页头页尾等整体布局;conf/routes 集中声明路由,各 Controller 直接返回对应视图。assets 目录存放图片、JS 与 SCSS 源码,由 sbt 在编译时处理。

使用方式为克隆仓库后在根目录执行 sbt run,默认访问 http://localhost:9000/ 查看仪表盘界面;也可用 sbt dist 生成部署包,但需在命令行提供 Application secret 或提前配置。项目采用 Apache-2.0 许可,仓库中的演示图片、字体、图标等第三方素材需单独核对各自许可。

HTML后台

适合你的项目吗?

适用场景

  • 需要一个基于 Play 框架的后台管理界面起步项目
  • 希望参考 Scala 编译期依赖注入与 Macwire 的组件组织方式
  • 需要包含图表与数据表格页面的 Bootstrap 4 后台布局
  • 用于学习 Play 的 ApplicationLoader、路由与资源打包流程

适合人群

  • 熟悉 Scala 与 sbt 的开发者
  • 使用 Play Framework 搭建后台界面的项目
  • 需要 Bootstrap 4 管理仪表盘布局的团队
  • 希望以 WebJars 方式引入前端库的工程

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    克隆仓库后在项目根目录执行 sbt run,默认访问 http://localhost:9000/

  2. 2

    首次编译前需运行 sbt compile 生成路由相关的 Scala 代码

  3. 3

    conf/application.conf 中需设置 play.application.loader = MyApplicationLoader

  4. 4

    使用 sbt dist 生成部署包时需提供 Application secret 或提前配置

  5. 5

    演示图片、字体、图标等第三方素材需按各自许可单独核对

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 Apache-2.0 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发;分发时需随附 Apache-2.0 许可证。
  • 修改过的文件需显著标明改动,并保留相关版权、专利、商标及归属声明。
  • 若原项目附有 NOTICE 文件,分发衍生作品时需保留其中适用的归属声明。
  • 许可包含适用的贡献者专利授权;发起许可所述专利诉讼会终止该专利授权,且不授予商标使用权。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 使用 sbt dist 生成可部署包时,必须在命令行提供 Application secret,或事先在配置中设置好该密钥,否则无法完成部署包生成。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 Apache-2.0 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

no-charge, royalty-free, irrevocable copyright license

许可证原文

用 `sbt dist` 可以生成可以部署的二进制代码(需要在命令行给出 Application secret 或 事先配置)

README 原文
https://github.com/YouXiang-Wang/play-bootstrap4-admin/blob/master/LICENSEhttps://github.com/YouXiang-Wang/play-bootstrap4-admin/blob/master/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较少 · 53 / 100
技术栈
HTML
网站类型
后台
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2019-12-28
截图检查日期
2026-10-03

目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。

目录记录的主要技术栈是 HTML。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-04

查看当时使用的来源资料

SHA-256: f6ccb5eb86b449f0aa989e770a3df3a70a77f44581190f2106702761ae95873b

2026-10-03T19:19:40.618Z

来源文件 / 仓库
# 基于 Play Framework 的 Admin 模版

这是一个用 Play 框架实现的基于 [SB Admin 2](https://github.com/BlackrockDigital/startbootstrap-sb-admin-2) 的管理仪表盘(dashbaord)模版。SB Admin 2 是一个采用 [Bootstrap 4](https://getbootstrap.com/) 的开源模版。

## 1 如何使用

非常简单, Clone 之后在项目根目录运行: `sbt run`。

在 `http://localhost:9000/` 可以看到如下界面:

![admin-dashboard](./docs/admin-dashboard.png)

## 2 项目组成

基于 Play Framework。项目用 [compile-time DI](https://www.playframework.com/documentation/2.8.x/ScalaCompileTimeDependencyInjection) 和 [Macwire Macro](http://di-in-scala.github.io/)。  

客户端基于以下库:

- Bootstrap 4
- Chart.js
- Datatables
- fontawesome-free
- jQuery and jQuery-easing
- Bootstrap Admin temaplate

## 3 sbt 配置

Play Framework 采用了 MVC 结构,其项目结构不同于通常的 Scala 项目结构。sbt 遵循了 convention over configuration 原则,所以首先需要引入 Play 的 sbt plugin。

在项目根目录创建 `project\` 子目录,在此子目录下创建下面二个文件:

- `build.properties`: 设置 sbt 版本: `sbt.version=1.3.4`。
- `plugins.sbt`: 引入 Play 的 `sbt-plugin` 以及 `sbt-sassify`:

```scala
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.0")
addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.13")
```

在根目录创建 `build.sbt`,加入下面内容:

```scala
name := """play-bootstrap4-admin"""

version := "0.0.1"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.13.1"

libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "4.0.3" % Test
libraryDependencies += "com.softwaremill.macwire" %% "macros" % "2.3.3" % "provided"

scalacOptions ++= Seq("-feature", "-deprecation", "-Xfatal-warnings")

// Client side
libraryDependencies += "org.webjars" % "jquery" % "3.4.1"
libraryDependencies += "org.webjars" % "jquery-easing" % "1.4.1"
libraryDependencies += "org.webjars" % "bootstrap" % "4.3.1"
libraryDependencies += "org.webjars" % "datatables" % "1.10.20"
libraryDependencies += "org.webjars" % "chartjs" % "2.8.0"
libraryDependencies += "org.webjars" % "font-awesome" % "5.11.2"
```

## 4 Play 程序

### 4.1 Controllers, Routes and Assets

Play 是个 MVC 框架。Controller 都很简单,直接返回各自的 View。

`views/main/main.scala.html` 定义了基本的 HTML 以及所有页面用到的 CSS 与 JS 资源。 `views/main/layout.scala.html` 则定义了总体布局,包括导航以及页头页尾。

`cong/rotues` 定义了所有路由。

`assets` 目录下面包含了用到个各种资源,包括图片,JS code 以及 SCSS 源代码。sbt 编译时会编译、拷贝和打包这些资源。

### 4.2 程序加载

Play 的文档 [Application entry point](https://www.playframework.com/documentation/2.7.x/ScalaCompileTimeDependencyInjection) 解释了使用编译注入需要了解的加载过程。Play 用 `ApplicationLoader` trait 定义应用的加载。其 `load` 方法的类型为 `Context => Application`。 `Context` 独立于具体应用,包含加载应用所需要的各种 Component。 这里,Component 是采用 [Think Cake Pattern](http://www.warski.org/blog/2014/02/using-scala-traits-as-modules-or-the-thin-cake-pattern/) 创建的包含所需依赖的 trait。 这些 trait 的名字通常用 `Components` 或 `Module` 作为结尾。

Play 提供了 `BuiltInComponentsFromContext` 作为父类帮助实现 `ApplicationLoader`。具体实现的子类需要提供最少二个所需要的模块:处理 Http 请求的处理链 `HttpFiltersComponents` 和定义的所有路由。 创建包含下面内容的 `app/MyApplicationLoader.scala` 文件, 其中包含了配置 Logger 的内容:

```scala
import _root_.controllers.AssetsComponents
import com.softwaremill.macwire._
import play.api.ApplicationLoader.Context
import play.api._
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import router.Routes

class MyApplicationLoader extends ApplicationLoader {
  def load(context: Context): Application = new ApplicationComponents(context).application
}

class ApplicationComponents(context: Context) extends BuiltInComponentsFromContext(context)
  with ApplicationModule
  with AssetsComponents
  with HttpFiltersComponents
{

  // set up logger
  LoggerConfigurator(context.environment.classLoader).foreach {
    _.configure(context.environment, context.initialConfiguration, Map.empty)
  }

  lazy val router: Router = {
    // add the prefix string in local scope for the Routes constructor
    val prefix: String = "/"
    wire[Routes]
  }
}
```

上面用到的 `ApplicationModule` 包含了创建路由需要的所有 Controller instances。
一个 Play Web 应用需要创建所有的路由和所有的 Controller。创建包含下面内容的 `app/GreetingModule.scala` 文件生成所有 Controller:

```scala
import play.api.i18n.Langs
import play.api.mvc.ControllerComponents
import controllers.{Home, UIElements, Utilities, Pages, ChartTable}

trait ApplicationModule {

  import com.softwaremill.macwire._

  lazy val home = wire[Home]
  lazy val uiElement = wire[UIElements]
  lazy val utilities = wire[Utilities]
  lazy val pages = wire[Pages]
  lazy val chartTable = wire[ChartTable]

  def langs: Langs

  def controllerComponents: ControllerComponents
}
```

因为所有 Controller 的 Constructor 需要一个 `ControllerComponents` 类型的参数,这里需要给出抽象方法定义,否则会编译错误。具体的值,则在 mixin 这个 Component 的时候生成。

刚创立上面二个文件时,`import router.Routes` 和 `wire[Routes]` 在 IDE 里面会报告错误。原因是 Play 在编译初期需要从路由的定义文件 `conf/routes` 产生相关 Scala 代码。运行 `sbt compile` 产生所需的路由代码。

还需要指定加载程序,在 `conf/application.conf` 加入下面内容:`play.application.loader = MyApplicationLoader`。

现在可以运行 `sbt run` 检查生成的网站。用 `sbt dist` 可以生成可以部署的二进制代码(需要在命令行给出 Application secret 或 事先配置)。
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。