【问题标题】:Continuous deployment of a single-page app?持续部署单页应用?
【发布时间】:2013-09-07 06:03:22
【问题描述】:

这是我想出的唯一解决方案(但不知道它们是否足够):

服务器端更新:

版本每个客户端请求,并有代理路由到 合适的服务器版本。

客户端更新:

通过 websocket 连接通知客户端重新注入 X 空闲分钟后的脚本/样式标签,从而调用 2 ajax 请求更新的 JS/CSS 文件并刷新 HTML 页面。

我不知道这是否是应用程序早期阶段不应该优先考虑的事情,我应该在凌晨将整个应用程序关闭以进行“计划维护”。

出于 SEO 目的,首页的 HTML 与单个 JS/CSS 文件一起由服务器发送。

【问题讨论】:

    标签: node.js single-page-application continuous-deployment


    【解决方案1】:

    我认为正确的做法 (tm) 是以使用公共质量的 RESTful API 的方式构建您的单页应用程序。换句话说,把它想象成你正在向全世界发布你的 API,并且在进行更改时使它们向后兼容。我认为这并不像想象的那么难,并且会给你一个更干净的系统。当然比构建复杂的版本控制和实时修补方案更好!

    【讨论】:

    • 因此 API 重大更改必须是一个缓慢的过渡。如果“升级”API 不是所讨论的更改,那么引入新功能或删除旧功能的适当方法是什么。可以对 API 的升级进行编码以实现向后兼容性,但功能的添加或减少涉及客户端和服务器端代码的直接更改。
    • 功能添加不是问题:旧的缓存客户端不会知道并且不会使用它?
    • 但是如果旧客户端从不刷新页面就会出现问题。我将如何从这些客户端推送或拉取功能?
    • 您真的认为这是一个问题吗?您是否有某种奇怪的客户端信息亭设置使这成为一个实际问题,或者您只是在发明问题以使您的生活变得有趣?
    • “我想我已经想出了如何以务实的方式解决这个问题” - 你想在这里添加它作为答案吗?
    【解决方案2】:

    如果您要部署到 tomcat 服务器,您可以简单地覆盖正确“部署”位置中的 .js 和 .css 文件......

    将文件复制到 /your/deployed/app/location/webapp/js 等,这是一种快速简便的“热部署”新 JS/CSS 的方法,无需关闭服务器.....然而如果您的后端支持也需要更新,则可能需要重新启动 tomcat 服务。在这种情况下,像詹金斯这样的东西可能会有所帮助。 http://www.tomcatexpert.com/blog/2012/03/21/integrating-jenkins-and-apache-tomcat-continuous-deployment

    【讨论】:

    • 我怀疑他正在将 node.js 部署到 tomcat。
    • 我一直都这样做。使用 Java 和 Spring 作为后端。节点不必充当服务器。
    • 那我不明白。您是否在客户端(在浏览器中)使用 node.js?哪几件?
    • 我在 3 个月前离开了节点,但在那之前我一直在使用它来简单地打包/处理依赖项。完成此操作后,我通过带有 Java / Spring 后端 API 的 Tomcat 实例进行部署。 Node 应用程序只是作为内容的一部分包含在网页中。它不必充当后端服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2020-10-28
    • 2015-04-20
    • 2016-10-15
    • 2016-04-09
    相关资源
    最近更新 更多