总结
使用ionic开发App算是告一段落了。使用前端的技术来统一移动端,不得不承认这个听起来很酷。JavaScript要统一世界的节奏。
然而现实并不是这样,使用ionic开发App虽然在开发速度上比原生开发快很多(有AngularJS的基础上,1~2个礼拜熟悉ionic框架,一个月左右做完App),但依然存在下面这个几个比较致命的问题:
1. App流畅度不足,用户体验差。尤其是在Android4.4以下的手机,性能更是惨不忍睹。iOS上流畅度则相对会好很多。所以尽量控制每个页面的复杂度。
2. 长列表性能不佳。这点在此次开发的App倒不是很明显,因为公司的业务并不涉及大量的数据展示。
3. 可定制化不高。所有的行为都只能基于ionic框架的基础去实现,可玩性不高,难以实现个性化定制。
4. 插件问题。在ionic中,跟原生设备打交道都只能通过cordova插件这一种方式。常用的几个基本插件都有了成熟的解决方法及用法,但是如果遇到比较冷门的需求,在没有找到插件的情况下,只能自己写插件或者考虑其他解决办法了。这次开发过程中就遇到了这个坑,App需要对接连连支付,后面还是在github上找到了一个连连支付插件,最后通过更改插件源代码才能用到App上,实现了对接连连支付。
虽然存在着致命缺点,但是依然不能忽略ionic的优点。每种技术存在都有其价值与市场。ionic最大的优点便是可以在低成本的情况下,快速地开发出一款并不是最完美但是依然可以使用的App。
下面便是在开发过程中所遇到的部分问题
ionic tab在Android中显示在顶部的解决方案
解决办法:
在 iOS中, tabs 一直处于底部. 在android中 ionic tabs 一直在顶部,如果要改我们可以通过配置$ionicConfigProvider。代码如下:
.config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) {
$ionicConfigProvider.platform.ios.tabs.style('standard');
$ionicConfigProvider.platform.ios.tabs.position('bottom');
$ionicConfigProvider.platform.android.tabs.style('standard');
$ionicConfigProvider.platform.android.tabs.position('standard');
$ionicConfigProvider.platform.ios.navBar.alignTitle('center');
$ionicConfigProvider.platform.android.navBar.alignTitle('left');
$ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left');
$ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back');
$ionicConfigProvider.platform.ios.views.transition('ios');
$ionicConfigProvider.platform.android.views.transition('android');
参考资料
ionic 隐藏底部菜单栏
可以参考我之前写的文章:ionic 隐藏底部菜单栏
ionic如何后退
ionic提供了$ionicHistory
来访问访问历史以及返回。其中$ionicHistory.goBack([backcount])
就是用来回退视图。
其中backcount
指定了回退多少个视图,默认为-1,即回退一个视图。
参考资料:
ionic在装载ion-view
的时候如何隐藏ion-nav-header
这种问题属于API掌握不够熟练。
只需为ion-view
添加属性:hide-nav-bar=“true”
即可实现隐藏父ion-nav-bar
ionic App打包成apk,在手机打开的时候,会出现下面的错误:
the connection to the server was unsuccessful. (file ///android_asset/www/index.html)
这一般是由于www/index.html
下的index.html文件找不到。可能是编译没成功导致的。
$ionicHistory.clearHistory无效
有时候会出现 ionicHistory.clearHistory无效,解决办法