是否可以使用Spring / Tomcat / Intellij实时更改反馈?

时间:2014-03-12 20:44:51

标签: spring angularjs tomcat intellij-idea development-environment

我在下一个项目之前有几个星期&我正在寻找/想要简化我们的开发过程,以提供UX& amp;开发人员花费最短的时间来更改验证(例如,Java更改为10秒/ UX / JS更改为1秒)。

基本上,我想要John Lindquist在这个video中显示的内容(在3分钟内通过webstorm& Angular待办事项列表示例进行RT反馈)但我使用Tomcat&弹簧。

我过去几天一直在用我们的堆栈(Tomcat8,Intellij13,Spring4,Angular)研究/玩这个,我只是没有得到它'所以认为这是我在这个领域缺乏知识,我错过了一些东西(因此提出了问题)。

迄今为止我为UX Guys取得的成就

Grunt(使用节点)提供静态资源'(JS / SCSS /模板)和livereload来刷新chrome - 这非常好,非常接近我想要的(来自SCSS / JS / HTML的RT反馈变化)但是最大的问题是节点服务于静态资源而不是TC,因此使用跨源策略(通过thisthis解决) - intellij中的重建成为涉及grunt的混乱 - 用file watchers查看SCSS编译,但它没有凝胶化 - 简而言之,我没有得到静态服务的咕噜声。 TC REST API协同工作。另一种选择是this guy在文件发生变化时使用grunt更新TC资源,但只是不想去那里。

这引导我回到文件观察者,jetbrains实时编辑(网络风暴视频显示的内容)和intellij再次,当谈到静态内容时,我关闭,因为intellij可以在帧停用时更新TC上的资源但是(并且很大)这不是实时的,当你改变资源结构时,你需要刷新页面,但是我们正在处理一个SPA,它会在刷新时失去上下文,这会减慢人们的速度,因为必须回复序列回到发生变化的地方,并且当使用intellij时,他们必须“去激活”##将更改推送到TC(它们在双监视器上,因此关闭intellij与按下按钮部署更改相同)

迄今为止最好的是咕噜咕噜并接受相同的起源问题进行开发但是我错过了一些针对UX用户的东西吗?

迄今为止我为Dev Guys取得的成就

在我们开始之前,不能承担jrebel并且没有Spring Loaded使用intellij和tomcat(尚未)。

在这个阶段,简单地让intellij刷新TC,类更改并在bean定义/方法结构更改时重新启动。我知道的不好,但这是我们用来做的事情。

看看春季启动 - 很有希望,但理想情况下不想让配置自由,但它确实提供了我认为的服务器上的实时更新。

目前Grails已经出局,因此无法在那里受益。

我知道Play允许一些实时更新,但是,我们还没有详细研究过这个问题,并且从当前的堆栈中发生了重大转变。

摘要

在开发方面可能会坚持使用Live Edit并接受刷新/停用问题,因此我们无法实现' John Lindquist在Webstorm中展示的内容,即当使用Tomcat / Intellij / Chrome时资源发生变化时的实时更新 - 或者至少“我不知道”#39;如何实现这个目标?

服务器端 - 我还在努力,继续看看Spring加载和intellij集成,然后看看jrebel,看看我们可以得到什么预算,但同时还有其他选择因为我看到节点/ ruby​​ / grails的人得到它所以我相信它一定是我,我错过了最好的设置,以便在使用Tomcat&和我们的代码更改时获得超快的反馈。弹簧?

2 个答案:

答案 0 :(得分:8)

总之,是的,它是可能的&已经实现了我要实现的目标 - 这是Java EE平台(包括JS / SCSS更改和Spring / Java更改)中的所有发展变化,以“实时”(5/10秒服务器,2秒ux)发生。我已经录制了一些video来展示这一切(请原谅我缺乏戏剧性)..

<强>堆栈

  • AngularJS

  • 通过http proxy/service上下文调用保存静态页面。需要代理有两个原因 - 1是 绕过Cross起源问题&amp; 2 - 使实时静态 资源更改(HTML / JS / SCSS)显示在Chrome中 - 您无法执行此操作 tomcat将资源复制到TC中的web-app文件夹中 没有直接从源提供服务(Intellij可以在帧停用时重新部署,但效果不佳,并且不允许在Chrome中反映即时更改) ..

  • Grunt监控SCSS的变化(我相信你可以使用文件观察者 intellij虽然但是有咕噜声提供静态内容)

  • 实时修改动态更新Chrome。

  • JRebel for Spring / Server端更改为Tomcat(需要许可证 商业用途)

微妙但重要的是Grunt正在做的事情。

答案 1 :(得分:1)

我认为这是Ian解决方案的一个更简单的替代方案:

将应用程序分为三个部分:

  • REST服务(src / main / java)和
  • 网络源文件(src / web,不要将它们包括在最后的战争中)
  • grunt生成的静态文件(src / web / dist,并将它们包含在/的最终战争中)

配置CORS过滤器(无论如何都需要REST服务)[1]

现在是踢球者:

  • 启动tomcat(照例)
  • 从src / web启动您的angularjs网站(使用IntelliJ,它只是Debug index.html)
  • 完成 - 源html / js文件中的所有编辑都会反映在下一次浏览器刷新中(或使用grunt插件使其更多&#34; live&#34;)

[1] https://github.com/swagger-api/swagger-core/wiki/CORS