我开始使用 Play 框架,我尝试了一些示例,我想知道它对页面刷新的确切作用:它是重新编译所有文件还是只重新编译那些被修改的文件?
问问题
449 次
3 回答
2
它只会在您修改后重新编译相关文件。Play官网是这样说的:
在开发模式下运行服务器
In this mode, the server will be launched with the auto-reload feature enabled,
meaning that for each request Play will check your project and recompile required sources.
If needed the application will restart automatically.
附带说明一下,Play 使用 JNotify 来监视文件系统中的更改。
这是 JNotify 的链接:http: //jnotify.sourceforge.net/
于 2013-07-11T11:55:27.723 回答
2
您可以阅读这篇解释 Play 热重载如何工作的文章:http: //jto.github.io/articles/play_anatomy_part2_sbt/
基本上,在文件更改时,SBT(Play 中使用的构建工具)会识别要重新编译的内容并在您的实例中重新插入新代码。
请注意,它仅适用于无状态环境,因为它不会丢弃或重新启动旧对象。在无状态的世界中,每个请求都会创建它需要的所有对象,并且不会从外部保留任何内容。如果你在 Play 中使用 websockets,你可能会遇到一些奇怪的行为,因为 websockets 是有状态的(你必须打开一个新的 socket 来获取更改)。
于 2013-07-11T11:25:25.177 回答
1
Play 仅在您第一次打开浏览器时编译整个项目。这意味着您第一次在浏览器中运行它时加载速度可能会有点慢。我不确定 play 如何识别上次编译中修改的文件,但要回答您的问题,它只会编译修改后的文件。
于 2013-07-11T11:18:37.317 回答