2014-10-17 61 views
1

背景:

我正在从服务器加载我的整个AngularJS Cordova/Ionic网络应用程序。这真太了不起了。我可以在不通过Apple的情况下更改应用程序。AngularJS,Cordova/IonicFramework:从服务器加载index.hml

问题:

Q1)如何使用js-files.zip,从服务器加载,在我的index.html文件? Q2)如何有效地从我的服务器加载index.html启动逻辑?

问题:

在一些旧设备,加载时间过长,如果我从我的服务器加载我所有的.js文件,所以我希望能够配置逻辑(index.html中)也从服务器。

我不是从服务器上加载的唯一的事情就是index.html的

这样的内容,从服务器哪能基本负荷的index.html?

如果我尝试这样做,

1)拉动,也就是说,indexfromserver.html使用AJAX和做的index.html的HTML重写与文件撰写(RES),然后有AngularJS问题:

例如,模块缺失错误(以下* 1),这是因为以下不是index.html中直到Ajax响应重写的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('/ app/indexfromserver');

这并没有解决被拒绝的$ http请求。

我不明白index.html是如何使$ http正常工作的,因为它没有控制器,也不是提供的'否则'路线。到目前为止,我只能在config.xml中看到index.html的提及。

请求:

有人可以请张贴一个典型的例子是如何的AngularJS科尔多瓦/离子应用可以有效地利用这是一个从服务器加载index.html的逻辑的片断?

否则,有人可以显示/解释是否/如何从服务器使用js-files.zip,并解压并在index.html中使用?

详情/备注:

(* 1) 未被捕获的错误:[$注射器:modulerr]未能实例模块的myapp由于: 错误:[$注射器:NOMOD]模块 'MyApp的' 不可用!您拼错了模块名称或忘记加载模块名称。如果注册模块确保您指定依赖关系作为第二个参数。 http://errors.angularjs.org/1.2.17/ $ injector/nomod?p0 = myapp

回答

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中的上述资产。

最终目标是优化资产,因此您不必加载大量文件,并且每个文件都尽可能压缩。

+0

这是不正确的。您当然可以从zip加载文件,解压缩它们,并在您的应用中使用它们。 :-D stuk.github.io/jszip/ – Agamemnus 2014-10-18 21:44:41

+0

够公平的看起来你可以在技术上做到这一点,但这不是我会考虑做的事情。似乎有很多限制,它增加了处理解压缩的开销,甚至不支持压缩。 – 2014-10-20 04:43:23

+0

呃,压缩文件做压缩。而且没有任何理由不能预先缩小。无论如何,您必须确保Cordova应用程序使用您的方法缓存文件。 (如果互联网不可用,并且它不是仅限互联网的应用程序) – Agamemnus 2014-10-20 19:07:44

1

如果你想要去的zip文件路径,并承担用户不总是连接到互联网,可能是最好的办法是:

检查的版本是通过服务器调用新的,如果是这样,请下载zip文件,解压缩(可能通过stuk.github.io/jszip/),然后使用Cordova界面将新的JS代码写入手机内存,然后通过添加脚本标签来运行代码你的装载机。