问题描述
如题:我先来简单说下自己的理解吧,如有错误希望童鞋们可以指出!
hybrid模式开发APP,其实就是我们平时在移动端(浏览器端)构造的单页面应用,只是将这SPA嵌套到了安卓或者IOS的webview中去(当然中间会有ionic等类似中间件的打包)。
由于webapp虽然在跨平台上表现的很不错,但是在一些稍微低端的安卓机下用户体验不是很好,卡顿现比较的严重。
其实hybrid模式开发APP也可以不使用单页面应用,但是在页面跳转的时候网速较差会出现白屏,等比较影响用户体验的事情发生,所以大家大多会采用SPA应用的模式,而angular,vue等比较成熟MVVM框架就成为了首选。
好,基于上面的理解,现在如果给我一个hybrid模式的APP我就会采用SPA的单页面应用模式去处理。例如现在我们有一个新闻列表,默认一开始会渲染十条新闻,在下拉的时候会去ajax请求后台,渲染列表。
以上是我对于混合模式开发APP的一些理解,那么问题来了。通常情况下,我们都会请求后端给的接口去得到相应的数据。但是在hybrid模式下的APP呢,今天听一个人给我说是我(前端)不发起请求,而是去调用ios/安卓的(类似于接口的东西),然后由navtive原生向后端发起请求,得到相应的东西。
如果按照这么来,确定不是在逗我?这样我的单页面应用怎么做,本人没有做过hybrid模式的APP,最近想研究一下,但是在这个问题上就卡住了。
希望有大神可以回答一下我的问题,例如,现在在一个混合模式的APP下,有一个商品列表,默认加载20个,在下拉的时候会去请求得到数据,然后渲染。那么这个请求是怎么发出的?我们在模块里ajax?还是我们在模块内ajax,然后ionic这类中间件会帮我们处理好了?还是说怎么做?
问题解答
回答1:根据你的描述,你在webview中所使用的SPA应用是基于服务器的,不会存在请求的问题。如果是基于本地的,才会存在请求的问题(ajax跨域),可以用jsonp请求、原生请求、服务器允许跨域等方法来解决。基于服务器的SPA在性能上弱于本地。
我来说说我们的解决方法,SPA基于本地(APP打包时内置初版的SPA),请求走的原生,数据从服务器获取(和原生APP是一个模式,只是页面和逻辑代码是用html和js实现罢了)。由于页面是本地的,所以加载速度比从服务器加载快了不是一点半点。当业务有更新的时候,只需从服务器下载压缩包,解压更新本地文件就可以了。这样在不进行APP大版本更新的情况下可以做到业务动态更新。