APICloud开发者进阶之路 | 编码优化(一)

《30天,App开发从0到1》这本书我们已经用时15周分享了其中的大部分内容,今天,为大家节选的是本书的附录精华部分——编码优化。很多程序员都会遇到的问题,打好基础,才能成为“大狮”!

1.弹出键盘优化处理

输入框位于设备屏幕下半部份的应用场景,config.xml 中的键盘弹出模式参数 softInputMode务必设置为 resize 模式,或者使用 UIInput 相关模块。

为了让应用看起来更接近原生,尽量配置 config.xml 中的 softInputBarEnabled 参数来隐藏 iOS 键盘上面的工具条。也可以在 openWin 或 openFrame 的时候通过 softInputBarEnabled 参数来单独指定。

2.项目字体优化处理

可以根据项目的需要引入外部字体,但是要控制外部字体文件的大小,字体文件不宜过大。

Android 上默认有 3 种字体:sans、serif 和 monospace,在开发人员不指定的情况下默认为sans,这 3 种字体在开发过程中都是通过字体名进行引用,系统会自动对应到内置字体文件。但是对于外部的字体文件,Android 上无法实现通过引擎配置后成为内置的字体文件,只能通过 @ font-face 的方式在每个页面中重复加载,每一个要使用外部字体的 Window 或 Frame 都要引入 一遍。如果字体体积过大会占用大量内存,影响页面的加载速度。

iOS 可以在 config.xml 文件中进行外部字体文件的配置,配置完成后就可以像系统内置字体 一样在页面中指定了,无需在每个 Window 或 Frame 中通过 @font-face 的方式引入。

3.同步/异步逻辑优化处理

对于文件、数据库、偏好设置等操作推荐使用同步接口 ( 方法名增加 Sync 后缀 ) 来简化代码的实现,以解决异步 callback 层次过深的问题。

4.日志打印优化处理

正式版本应关闭或删除测试联调时使用的 console.log 控制台打印显示方法,严禁正式版本出现供测试联调使用的 alert 信息。

可考虑封装统一的日志打印显示方法在测试联调时使用,方便控制日志打印功能的开启和关闭。测试联调优先使用控制台打印命令 console.log,避免或减少使用 alert 方法进行测试联调, 防止正式版本有遗漏,弹出测试数据信息。

5.用户体验优化处理

对于内容数据存在动态更新情况的页面,应实现页面下拉刷新功能以保证用户可以手动刷新页面数据。

根据业务场景优化用户体验,考虑实现对 app 进入后台和回复前台的事件监听和逻辑处理。 在异常处理逻辑需要显示异常信息时,根据异常的重要程序选择使用 alert 或 toast 方式进行提示。 要注意 api.alert 会阻塞线程,强制用户点击后程序才能继续执行,适合在需要用户明确确认的场景内使用。

窗口关闭处理是在开发过程中根据需要处理 Android 的 keyback 事件和 iOS 的回滑手势。

Android 上要在 Window 中才能监听到 keyback 事件,Frame 中无法监听到 keyback 事件;

在 iOS7 以上的系统上可以在 openWin 的时候通过设置 slidBackEnabled 参数来实现是否支持回滑手势关闭窗口的功能。

在后台关闭非当前显示页面时,应设置 animation:{type:"none"},关闭动画效果方式,以免页面关闭动画影响当前显示页面的渲染,从而降低用户体验。

6.性能优化处理

尽量不对 Object 和 Array 拓展原型方法,有可能导致 iOS 系统的 App 闪退。同时避免不必要的 DOM 操作,浏览器遍历 DOM 元素的代价是昂贵的。当一个元素出现多次时,将它保存在一个变量中。

避 免 使 用 如 jQuery、jQuery Mobile、SenchaTouch、Bootstrap 等“ 重 型 框 架 ”。jQuery 和SenchaTouch 等框架的事件流设计思想及其内部文档模型会严重拖慢 UI 响应速度。同时,框架内部 Timer 不断刷新页面,频繁占用 CPU/GPU 资源,会拉低页面响应速度,严重影响用户体验。

也要尽量减少使用第三方样式、脚本库或框架。摆脱对 $ 函数的依赖,转变思想,养成自己动手的习惯。移动端对 HTML5、CSS3 和 ECMAScript5 的支持较好。如某些需求不得不使用 一些第三方脚本时,应使用对移动端支持良好且目标性强、功能单一的框架。如 :api.js、zepto.js、swipe.js、doT.js 等。

默认样式设置、DOM 操作和字符串处理推荐使用 APICloud 前端框架(api.js 和 api.css)。

7.窗口切换优化处理

避免出现任何卡顿、闪屏、白屏等情况;要保证动画效果流畅,不能出现丢帧的情况要理解并控制窗口好切与界面渲染之间的关系,要适时更新 UI,如果 Window 或 Frame 中所加载的静态页面内容过多,建议等动画执行完毕再进行页面的加载和渲染。无论是 Android 还 是 iOS 系统,在进行窗口切换的时候,如果窗体本身正在进行渲染(Window 或 Frame 所加载的 网页没有渲染完毕),则会影响切换动画运行的流畅性,出现卡顿或丢帧的情况。

建议在打开 Window 或 Frame 的时候,如果所加载的静态网页不能快速的渲染完毕。为了不影响窗体切换动画的执行,可以在切换动画执行完毕后再进行动态数据的加载和界面的刷新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值