AngularJS,Cordova / Ionic Framework:从服务器加载index.html

时间:2014-10-17 08:39:46

标签: angularjs cordova web-applications ionic-framework

背景:

我从服务器加载我的整个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的

2 个答案:

答案 0 :(得分:1)

有人指出,您可以在某些情况下使用JavaScript来解压缩存档,但这并不常见。网络不能像那样工作,Ionic在浏览器内部运行,因此您应该使用与优化网站相同的流程。

您可以像任何网站一样构建应用。按照以下步骤创建更加优化的应用程序以便快速加载。如果您不熟悉构建工具,请查看http://yeoman.io/,以及此Ionic https://github.com/diegonetto/generator-ionic的特定生成器。

以下是您可以采取的一些步骤的基本列表,尽管生成器提供了更多选项,也可以添加其他内容。

  1. Concat并将您应用的JavaScript最小化为单个文件。
  2. Concat并将应用的CSS最小化为单个文件。
  3. 使用此https://www.npmjs.org/package/grunt-angular-templates之类的工具将角度模板压缩到一个JS文件中。
  4. 将静态资产部署到服务器。
  5. 链接到index.html中的上述资产。
  6. 最终目标是优化资产,这样您就不必加载大量文件,并且每个文件都尽可能地压缩。

答案 1 :(得分:1)

如果您想要使用zip文件路径,并且您认为您的用户并非总是连接到互联网,那么最好的方法可能是:

通过服务器调用检查版本是否为新版本,如果是,请下载zip文件,解压缩(可能通过stuk.github.io/jszip/),并使用Cordova接口编写新的JS代码手机的内存,并通过在您的加载器中添加一些脚本标签来运行代码。