Android 如何在不更新应用程序的情况下重新加载Cordova应用程序的UI

Android 如何在不更新应用程序的情况下重新加载Cordova应用程序的UI,android,ios,angularjs,cordova,hybrid,Android,Ios,Angularjs,Cordova,Hybrid,我们目前正处于研究是否将HTML5/Angular/Cordova混合解决方案用于相当大和复杂的业务应用程序的早期阶段。有一个问题是Android和iOS在审批时间上存在显著差异。我们也非常喜欢将代码部署到网站和手机上的想法。在这一点上,我们不太关心UI神秘谷的问题 我读过一些应用程序,比如Netflix,在不更新应用程序本身的情况下动态更新UI。这听起来是一个很好的方法,可以解决每次发布应用程序时都要部署新应用程序版本的难题。如果我们可以完全缓存UI,直到网站出现更新。我们的应用程序将支持离线

我们目前正处于研究是否将HTML5/Angular/Cordova混合解决方案用于相当大和复杂的业务应用程序的早期阶段。有一个问题是Android和iOS在审批时间上存在显著差异。我们也非常喜欢将代码部署到网站和手机上的想法。在这一点上,我们不太关心UI神秘谷的问题

我读过一些应用程序,比如Netflix,在不更新应用程序本身的情况下动态更新UI。这听起来是一个很好的方法,可以解决每次发布应用程序时都要部署新应用程序版本的难题。如果我们可以完全缓存UI,直到网站出现更新。我们的应用程序将支持离线数据存储,以防通过REST服务提交的网络问题,我们不希望在每次加载特定页面/路由/模板时请求UI,因此我们不希望从服务器加载页面的简单webview


我已经进行了相当广泛的搜索,但没有找到任何详细说明如何实现这一点的内容。也许你能给我指出一些你找到的例子的正确方向?或者我正在做白费力气的事,你也可以告诉我。

你特别提到了Angular,所以我不确定这个解决方案是否适合你的需要,但对我来说,有效的方法是使用jQuery Mobile作为框架,然后在应用程序启动时根据从web服务检索的JSON数据以编程方式呈现UI。例如,假设你的主页上有两个按钮,“是”和“否”。从index.html中的一个空页面开始:

<div data-role="page" id="pageMain" data-title="Main">
    <div data-role="content">
        <div id="myContent">
        </div>
    </div>
</div>
您将基于JSON数据创建UI元素,并将myContent div的innerHtml内容设置为:

<div data-role="page" id="pageMain" data-title="Main">
    <div data-role="content">
        <div id="myContent">
            <button id="btnYes">Yes</button>
            <button id="btnNo">No</button>
        </div>
    </div>
</div>

对
不

此外,您还可以通过从服务器检索CSS并通过
标记将其内联插入index.html来获得非常具体的布局。显然,这是一个非常简单的示例,但这是基本概念,我正在生产应用程序中使用它。

非常有趣的解决方案!此解决方案的性能如何?最终呈现UI需要多长时间?一旦从服务器检索到数据,就没有明显的差异。如果您将数据缓存在本地存储中,那么如果您知道您的UI数据是最新的,那么可以从等式中减去传输时间。我可以看出,这对于基本的动态表单布局是有效的。我想知道,如果有任何复杂的ui布局必须在手机/平板电脑上以完全不同的方式显示,这会有多容易/难。我们还考虑根据数据对象本身包含的元数据生成ui。仅仅从服务器中提取ui元素就可以大大简化这一过程。我想得越多,我就越喜欢从服务器中提取整个表单布局,缓存它,并在数据对象上使用元数据来决定加载哪个表单以查看/编辑,等等。这是一个问题。我知道苹果不喜欢只将页面加载到视图中的应用程序,你有没有遇到过iOS发布的问题?没有,一点也没有。正如你所说,提交一个没有逻辑的应用程序,实际上是一个美化的浏览器窗口,这让苹果感到不安。如果你仔细想想,我们这里讨论的是一个行业标准的MVC/MVVM/(选择你的毒药)应用程序,其中“V”是基于数据和逻辑呈现的,就像你在显示饼图一样。
<div data-role="page" id="pageMain" data-title="Main">
    <div data-role="content">
        <div id="myContent">
            <button id="btnYes">Yes</button>
            <button id="btnNo">No</button>
        </div>
    </div>
</div>