= 应用入口 (War 包场景)

== 核心原理

image::system-design/application-entry/001.png[,100%]

<1> 应用入口 URL
<2> 用户登录页面
<3> 后端处理, 返回视图。 通过查看 io.sc.platform.mvc 模块的源码，在 resources/template 目录中没有 io.sc.platform.mvc.frontend.html 模版文件，该模版文件通过以下步骤生成
<4> io.sc.platform.mvc.frontend 是前端模块， public/index.html 文件就是首页模版文件
<5> 构建前端，构建后的前端文件位于 dist/public/io.sc.platform.mvc.frontend 目录中
<6> 将前端模块打包成 jar时, 将前端模块中的 dist/public/io.sc.platform.mvc.frontend/index.html 文件复制成 resources/template/io.sc.platform.mvc.frontend.html 文件

== index.html 解析

image::system-design/application-entry/002.png[,100%]

该 index.html 文件需要加载 configure.js 文件，该文件包含前端运行时的最核心配置信息，主要包括:

. webContextPath: 应用上下文路径
. apiContextPaths: 默认后端 API 请求的服务地址前缀

[source,javascript]
----
<script src="/configure.js" th:src="@{/configure.js}"></script>
----

[TIP]
<script> 的写法, 既包含 src 属性也包含 th:src 属性。
在纯前端发布模式下: src 属性生效, th:src 属性被忽略;
在 war 发布模式下: th:src 生效且覆盖 src 属性

在 war 包情景下, 加载 /configure.js 文件，该文件如何获得?

image::system-design/application-entry/003.png[,100%]

