除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中
Posted
技术标签:
【中文标题】除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中【英文标题】:Js changes are not reflecting in the browser unless we redeploy the war file 【发布时间】:2016-05-05 14:49:55 【问题描述】:我使用 IntelliJ 开发了一个 Spring Boot Web 应用程序。对于每一个 Js 和 html 更改,我都必须重新部署 war 文件才能使更改反映在浏览器上。有什么方法可以在不重新部署的情况下即时反映更改?
【问题讨论】:
【参考方案1】:自动更新浏览器代码的最简单方法是将Grunt 与watch 和livereload 一起使用。当您保存对文件的更改时,它将自动推送到浏览器。不需要浏览器插件。
下面的plunk 演示了一个最基本的用法。将文件放到任何目录中,然后运行
npm install -g grunt-cli
npm install
grunt serve
它将启动一个服务于 index.html 的网络服务器(连接)。对 index.html 所做的任何更改都会自动发送到浏览器。 Connect 还配置为将任何对 /api/
的请求中继到另一个 HTTP 服务器(通常是您的本地 Jetty 实例)。
我包含了一个典型的配置,您将把 javascript 放在 app/scripts
下,将 CSS 放在 app/styles
下,将图像放在 app/images
下。对其中任何一个的更新也将被推送到浏览器。
【讨论】:
【参考方案2】:如果您使用的是 springboot 版本 >= 1.3,您可以使用包含嵌入式 liveReload 服务器的 spring-boot-devtools 模块。从那里你只需要一个支持 liveReload 扩展的浏览器。
Maven POM
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
分级
dependencies
compile("org.springframework.boot:spring-boot-devtools")
【讨论】:
【参考方案3】:您可以像 nginx 一样实现实时缓存。为 css 和 ui 相关更改创建单独的项目,并链接到 nginx 的 assets 文件夹。然后你必须启动那个 nginx 服务器。因此,当您更改文件时,无需一次又一次地重新启动服务器。 欲了解更多信息https://www.nginx.com/blog/scaling-web-applications-nginx-part-ii-caching-monitoring/#caching
【讨论】:
以上是关于除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中的主要内容,如果未能解决你的问题,请参考以下文章
除非选择了项目,否则Visual Studio不会保存构建更改
SPRING BOOT 手动 War 文件部署到 Tomcat 并重新启动服务器,不创建数据库