我从服务器加载我的整个AngularJS Cordova / Ionic网络应用程序。这真太了不起了。我可以在不通过Apple的情况下更改应用程序。
Q1)如何在index.html文件中使用从服务器加载的js-files.zip? Q2)如何从服务器有效加载index.html启动逻辑?
在某些旧设备上,如果我从服务器加载所有.js文件,加载时间太长,所以我希望能够从服务器配置该逻辑(在index.html中)。
我唯一没有从服务器加载的是index.html的内容
那么,我怎样才能从服务器上加载index.html?
如果我尝试这样做
1)使用ajax拉取indexfromserver.html并使用document.write(res)执行index.html的html重写,然后出现AngularJS问题:
例如,模块缺少错误(下面的* 1),因为在ajax响应重写index.html之前,以下内容并不在index.html中:
<body ng-app="myapp" ng-controller="MainCtrl">
1.1)我可以在初始本地index.html中包含必要的模块,但是如果我重写index.html,我会在离子中得到关于classList null的这些错误/警告(请向我详细说明), deviceready未被触发,并且angularjs加载了多次
2)我可以将index.html重定向到indexfromserver.html,但随后我所有的$ http响应都被拒绝承诺。
关于2)我被告知我应该能够为indexfromserver.html添加控制器或指定$ urlRouterProvider.otherwise(&#39; / app / indexfromserver&#39;);
这还没有修复$ http请求被拒绝。
我并不完全理解index.html如何正确地使$ http正常工作,因为它没有控制器而且不是“反之亦然”。路线提供。到目前为止,我只在config.xml中看到了index.html的提及。
有人可以发一个典型示例的片段,说明AngularJS Cordova / Ionic应用程序如何有效地使用从服务器加载的index.html逻辑?
否则,有人可以显示/解释是否/如何从服务器使用js-files.zip,并在index.html中解压缩和使用?
(* 1) 未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块myapp: 错误:[$ injector:nomod]模块&#39; myapp&#39;不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。 http://errors.angularjs.org/1.2.17/ $注射器/ NOMOD?P0 = MyApp的
答案 0 :(得分:1)
有人指出,您可以在某些情况下使用JavaScript来解压缩存档,但这并不常见。网络不能像那样工作,Ionic在浏览器内部运行,因此您应该使用与优化网站相同的流程。
您可以像任何网站一样构建应用。按照以下步骤创建更加优化的应用程序以便快速加载。如果您不熟悉构建工具,请查看http://yeoman.io/,以及此Ionic https://github.com/diegonetto/generator-ionic的特定生成器。
以下是您可以采取的一些步骤的基本列表,尽管生成器提供了更多选项,也可以添加其他内容。
最终目标是优化资产,这样您就不必加载大量文件,并且每个文件都尽可能地压缩。
答案 1 :(得分:1)
如果您想要使用zip文件路径,并且您认为您的用户并非总是连接到互联网,那么最好的方法可能是:
通过服务器调用检查版本是否为新版本,如果是,请下载zip文件,解压缩(可能通过stuk.github.io/jszip/),并使用Cordova接口编写新的JS代码手机的内存,并通过在您的加载器中添加一些脚本标签来运行代码。