APP开发平台 > Blog > App实战开发中的经验分享 | APICloud开发者进阶之路

  本文出自APICloud官方论坛,感谢论坛实习版主luoxiping的分享。

apiready 的妙用

微信截图_20181114153457.png


  我们一直没重视这段代码,它不仅是apicloud扩展对象的事件,更是一个js匿名函数赋予的全局变量。这时,我们能用来做什么呢?


  使用场景一:短信验证码倒计时、页面上拉加载更多


微信截图_20181114153514.png

  

    但是,我们可以这样写


微信截图_20181114153530.png


    使用场景二:登陆后整页刷新


  看遍论坛,页面刷新都是用 location.reload(),而这个写法会重载html文件的所有数据,比如css、js、图片,这样的效率实在不高,css重渲染、图片重加载。

  我的建议是,用apiready(),即重调用一次apiready匿名函数,就足够了。


微信截图_20181114153548.png


跳转解析器


  打开原生页面用 api.openFrame(),但如果是远程网页,打开方式则是 api.openWin( {url: 网址} ) 这种写。但是,如果你希望动态识别打开方式就很麻烦了。

  比如,首页轮播图,第n张跳到远程网页,第m张跳到原生的某个页面,这时该怎么办呢?

  所以我写了个链接解析器,当点击该链接时,去解析用哪种方式打开。


  使用场景:app内web和原生互相跳转、外部浏览器跳到app内指定页面,推送消息定位到app内指定页面


微信截图_20181114153624.png



多页刷新技术


  使用场景:下单时,同时修改多个页面,比如:修改个人中心的余额、购物车的商品、未读消息的数量等

  之前,我在上面提到,登陆刷新,应该用自定义监听机制,不应该用api.execScript(),主要是因为execScript仅适用于当前页面不被关闭的情况,否则就要加延时等待,以便execScript能在页面关闭前发送到指定页面,而且execScript每次仅能发送一个页面。

  所以,我推荐尽可能用自定义监听,来满足多页刷新的各种需求。但是,很多兄弟使用自定义刷新时,并未重视api.sendEvent()提供的extra参数。通过以下代码,你会发现,灵活运用extra参数,会让我们的app更加智能。


微信截图_20181114153648.png


  上述代码,主要是我封装的一个多页刷新函数,在每个需要接受监听的目标页面,直接调用一下reload(),然后在当前页调用reload([A,B,...]),A、B为你要发送给哪些frame。这样,就实现了多页刷新。

  但是,上述函数,不仅仅只是刷新,你还可以通过给reload()第二个参数传递一个函数,让不同的目标页实现不同的需求,比如让A页面刷新,B页面修改html、C页面接受extra除name以外的其他参数等等。


循环执行原生API或模块


  很多时候,你想给dom循环添加点击事件、遍历缓存图片、遍历图片查看器,但是,你会发现,循环体里永远执行的是最后一个值,这就必须得用js的闭包解决。

  错误的写法:

微信截图_20181114153718.png

  正确的写法:

微信截图_20181114153809.png

微信图片_20181114153817.jpg


免费获取APP开发解决方案和详细报价单:

电脑请点击https://app.apicloud.com/index?uzchannel=500

手机请点击https://app.apicloud.com/m/quickaddcustom


2018-11-14 来源:APICloud

App实战开发

An efficient app outsourcing platform that guarantees timely delivery!

Submit Requirements