Spring/Tomcat/Intellij 是否可以实现实时变更反馈?

2024-02-19

距离下一个项目还有几周时间,我正在寻找/想要简化我们的开发流程,以便为 UX 和开发人员提供最短的更改验证时间(例如 Java 更改 10 秒/UX/JS 1 秒)变化)。

基本上,我想要约翰·林德奎斯特在这部电影中展示的内容video https://www.youtube.com/watch?v=wCVwdvufTds(在 3 分钟内使用 webstorm 和 Angular 待办事项列表示例进行 RT 反馈)但我使用 Tomcat 和 Spring。

过去几天我一直在用我们的堆栈(Tomcat8、Intellij13、Spring4、Angular)研究/玩这个,但我只是没有“明白”,所以我认为这是我在这方面缺乏知识,我错过了一些东西(因此出现了SO问题)。

迄今为止我为用户体验专家取得的成就

Grunt http://gruntjs.com/(使用节点)提供“静态资源”(JS / SCSS /模板)并livereload刷新chrome - 这非常好,非常接近我想要的(来自SCSS / JS / HTML更改的RT反馈)但大问题是节点正在服务静态资源而不是 TC,因此使用跨源策略(通过解决)this https://stackoverflow.com/questions/21581258/grunt-connect-task-and-middleware-access-control-allow-origin and this https://spring.io/guides/gs/rest-service-cors/)- intellij 中的重建变得混乱,涉及 grunt - 查看 SCSS 编译文件观察者 http://www.jetbrains.com/webstorm/webhelp/file-watchers.html但它没有凝胶化) - 简而言之,我没有得到 grunt 服务静态和 TC 的 REST API 协调工作。另一种选择是this guy http://jacky.seezone.net/2013/07/25/7362/当文件更改时,使用 grunt 更新 TC 资源,但只是不想去那里。

这让我回到文件观察器、jetbrains live edit(网络风暴视频显示的内容)和intellij,而且,当谈到静态内容时,我很接近,因为intellij可以在帧停用时更新TC上的资源,但是(还有一个很大的问题)但是)这不是实时的,当您更改资源结构时,您需要刷新页面,但是我们正在研究SPA http://en.wikipedia.org/wiki/Single-page_application这会在刷新时丢失上下文,这会减慢人员的速度,因为必须回复序列才能返回到更改发生的位置,而且在使用 intellij 时,他们必须“帧停用”才能将更改推送到 TC(它们位于双显示器上)因此关闭 intellij 与按下按钮来部署更改相同)

迄今为止最好的方法是 grunt 并接受开发的同源问题,但我是否为用户体验人员遗漏了一些东西?

迄今为止我为开发人员取得的成就

在我们开始之前,买不起 jrebel 并且还没有弹簧加载 https://github.com/spring-projects/spring-loaded与 intellij 和 tomcat 合作(尚未)。

在此阶段,只需让 intellij 刷新 TC,并在 bean 定义/方法结构更改时更改类并重新启动。我知道不好,但“这就是我们习惯的”

看看 spring boot - 有前途,但理想情况下不希望放弃配置自由,但我相信它确实在服务器上提供实时更新。

Grails 目前已经发布,因此无法从中受益。

我知道 Play 允许进行一些实时更新,但同样,我还没有详细研究过这一点以及与当前堆栈的重大转变。

Summary

在开发方面,可能会坚持实时编辑并接受刷新/停用问题,因此我们无法“实现”John Lindquist 在 Webstorm 中展示的内容,即使用 Tomcat/Intellij/Chrome 时资源更改时的实时更新 - 或至少“我不知道”如何实现这一目标?

服务器端 - 我仍在研究这个问题,将继续查看 spring 加载和 intellij 集成,然后查看 jrebel 并查看我们可以获得多少预算(如果有的话),但与此同时,当我看到节点时是否有任何替代方案/ruby/grails 的人都明白了,所以我相信这一定是我,而我在使用 Tomcat 和 Spring 时缺少从代码更改中获得超快速反馈的最佳设置?


简而言之,是的,有可能并且已经实现了我想要实现的目标 - Java EE 平台中的所有开发更改(包括 JS/SCSS 更改和 Spring/Java 更改)都会“实时”发生(5/10秒服务器,2 秒 ux)。我记录了一点在行动中展示这一切(请原谅缺乏戏剧性)..

Stack:

  • AngularJS

  • Grunt - 提供静态页面http代理 https://github.com/drewzboto/grunt-connect-proxy to /service上下文调用。需要代理有 2 个原因 - 1 是 解决跨源问题 & 2 - 实现实时静态 资源更改(HTML/JS/SCSS)显示在 Chrome 中 - 您不能使用 tomcat作为资源被复制到TC中的web-app文件夹中 不直接从源提供服务(Intellij 可以在框架停用时重新部署,但这效果不佳,并且不允许即时更改反映在 Chrome 中)..

  • Grunt 监视 SCSS 更改(我相信您可以在 虽然是 intellij 但有 grunt 提供静态内容)

  • Live Edit 即时更新 Chrome。

  • JRebel for Spring/服务器端对 Tomcat 的更改(需要许可证 商业用途)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring/Tomcat/Intellij 是否可以实现实时变更反馈? 的相关文章

随机推荐

  • 使用 imshow 绘制时间序列

    我试图使标题尽可能清晰 尽管我不确定它是否完全清晰 我有三个系列的数据 随时间变化的事件数量 我想做一个代表三个时间序列的子图 你会发现附件是我能想到的最好的 上一个时间序列明显较短 这就是为什么它在此处不可见的原因 我还添加了相应的代码
  • 通过单击图像显示/隐藏 div

    我希望能够单击图像来显示 隐藏 div 带有文本 我已经对一张图像进行了此操作 但我有多个图像需要切换文本 JavaScript 代码 document ready function slidingDiv hide show hide sh
  • 比较 Realm 对象列表

    我想比较 2 个 Realm 对象列表 看看它们是否相同 这是该物体的样子 class ScheduleRealm Object let scheduleList List
  • 使用 JavaScript 在画布中获取鼠标位置

    我正在研究 jquery 和 html5 canvas 我想做的只是一个简单的 html5 绘图示例 当鼠标移动时 我在鼠标下方绘制红色方块 我的代码很简单 但在获取画布内的鼠标光标位置时遇到问题 现在 我正在使用 x event offs
  • 使用 EPPLUS 缓慢加载 .CSV 文件

    我有大量 csv 文件 需要在应用一些格式后将其转换为 xlsx 包含大约 20 000 行和 7 列的文件需要 12 分钟才能转换 如果文件包含超过 100 000 个 则运行时间 gt 1 小时 不幸的是 这对我来说是不能接受的 代码片
  • 不明白为什么我在 Mongoose Pre save hook 上收到错误警告

    我想使用预保存挂钩对我的密码进行哈希处理 我的密码得到了很好的哈希处理 但为什么我在预保存挂钩的 保存 方法名称上收到错误警告 错误警告 没有重载与此调用匹配 最后一次超载出现以下错误 类型 save 的参数不可分配给类型 RegExp 的
  • 无法使用 Firebase 和 Stripe 正确解析 Json

    错误是 线程 7 无法解析遵循协议 STPCustomerEphemeralKeyProvider 的临时密钥响应 请确保您的后端将临时密钥的未修改 JSON 发送到您的应用程序 有关详细信息 请参阅https stripe com doc
  • Corona SDK 跨设备屏幕分辨率

    这将是那些寻找可能不存在的答案的尴尬问题之一 但这里是 我一直在使用 Corona 开发一些简单的游戏 虽然该功能似乎在我测试过的大多数物理设备上运行得很好 但一个主要问题是布局 我知道您无法真正完美地为每个设备构建 但我想知道是否有一种通
  • 如何确定 System.IO.IOException 的 HResult?

    System Exception HResult 属性受到保护 如何在不诉诸反射或其他丑陋黑客的情况下查看异常内部并获取 HResult 情况是这样的 我想编写一个备份工具 它可以打开并读取系统上的文件 我使用 FileAccess Rea
  • 为什么 vue 中的“@drop”事件对我不起作用?

    The drop听众对我不起作用 它没有调用我告诉它调用的方法 我想拖动芯片并能够将其放在另一个组件上 并执行某个功能 但是在放下芯片时 dropLink方法没有执行 所以我假设 drop事件未发出 控制台上没有显示任何错误 其余的活动效果
  • 日期:额外操作数 %d' 错误

    我有一个文本日志文件 格式如下 Thread 28689296 Thu Aug 25 15 18 41 2016 info xxxxx xxxxxx xxxxx 所以我想运行 cron 作业来查找最后几分钟内的一些特定错误消息 我写了以下命
  • 在 Android 上关闭应用程序并启动主屏幕

    我有两项不同的活动 第一个启动第二个 在第二个活动中 我调用System exit 0 为了强制应用程序关闭 但第一个 Activity 会自动显示 而不是应用程序返回主屏幕 如何避免这种情况 并使应用程序返回主屏幕 简短回答 call m
  • 如何在 Eclipse 中替换/删除以特定单词开头的行?

    在某些情况下 我必须替换 删除以特定单词开头的行 例如 public private Java 类或
  • 将 Go 测试输出转换为 XUnit

    如何获得 XUnit 格式的 Go 测试库输出以便与 Jenkins 集成 没有命令行选项可以输出为 XML 或 XUnit 格式go test 有一个不错的小插件可以转换 https github com tebeka go2xunit
  • 无法从 Javascript 中的匿名回调函数将项目推入数组

    我遇到了一个 javascript 问题 这让我完全发疯了 我有一个数据集合 正在使用 jQuery each 方法对其进行迭代 在 each 回调函数内 我将数据推送到数组上 这是代码 var p procedure tool all p
  • 如何指定多行shell变量?

    我写了一个查询 function print ui hosts local sql select print sql sql 本地 sql 一个很长的字符串 查询未格式化 如何将一个字符串分成多行 只需在必要时插入新行 sql SELECT
  • 未捕获的引用错误:未定义 mountNode

    请原谅我 我已经到处搜索过 而且我是reactjs 的新手并正在尝试示例 我有一个错误 Uncaught ReferenceError mountNode is not defined 我正在按照这里的例子http facebook git
  • 向类 org.springframework.web.context.ContextLoaderListener 的侦听器实例发送上下文初始化事件的异常

    我正在尝试实现 spring 安全登录 并且尝试过类似的操作 spring security xml
  • 什么是反向合并

    我看过一些关于 git flow 脚本的视频 其中出现的一个术语是 反向合并 例如hotfix 被合并到 master 中 然后又被合并到development 中 我假设反向合并是一个概念 而不是原生 git 命令 向后合并操作包含哪些具
  • Spring/Tomcat/Intellij 是否可以实现实时变更反馈?

    距离下一个项目还有几周时间 我正在寻找 想要简化我们的开发流程 以便为 UX 和开发人员提供最短的更改验证时间 例如 Java 更改 10 秒 UX JS 1 秒 变化 基本上 我想要约翰 林德奎斯特在这部电影中展示的内容video htt