由于技术的娴熟度不足以自己用所接触的框架去完成一个APP,在进入公司之后,就没有根据项目经理的建议换自己接触过的MUI或者SUI框架重新开发,而是在原有的基础上,继续使用公司原有的BUI框架,到后来才知道,还不如一开始就直接使用新的框架重头开始呢,就是多写几个功能模块而已,也比后来一直研究BUI的API来的好。
那些BUI的坑。
1、关于单页路由与多页路由
本人在前端这一块,其实就是个菜鸟,之前根本就没有接触过app的开始,项目经理给了一个星期的时间熟悉BUI,一开始连什么是单页,什么是多页都不知道,后来开始写项目了,在单页与多页懵着好长一段时间之后,才算是“拨开云雾”。
BUI是从index.html进入到main.html,在main.html里定义其他组件功能,对于一个菜鸟来讲,光是弄明白BUI的实现步骤,就花了一整天的时间,倘若不是其他同时的帮忙,估计埋在里面的时间更久。
BUI在多页路由转单页路由这一功能的操作上,弥补了很多多页路由的不足,在跳转页面上也和多页路由保持一致,使用bui.load就可以实现跳转,在页面跳转上个人比较中意router.load,两者的差别,现在还说不明白。
2、关于页面缓存
微信打开的web页面都是默认缓存的,这是为了加载更快,无可厚非,这本来是件好事,但是对于开发者而言,缓存会带来很多操作上的痛苦,所以我们都会有设定清除缓存的需要 。BUI清除缓存的方法是设定清除方法
Window.loader = bui.loader({
cache:false
})
在路由初始化之前,去掉模块的缓存,原本的设定是没有问题的,安卓的也顺利进行着,可是谁知道,iOS的bug就出现在这个问题上。也不知道怎么回事,在功能模块上,要获取传递过去的参数,第一次读取不到,必须刷新一遍才可以真正实现,所以在每个页面跳转的时候都得加一个刷新页面的参数。原本想调用BUI原有的刷新函数,但是不会用,不会用,着就尴尬了,后来项目经理就教在每个页面传递参数time_out_key,根据参数用原生的js强制刷新,在安卓也行的通,但是到了iOS,刷新直接卡壳,可以说页面直接瘫痪,经理也束手无策,为了这个问题,还耗费了整个周末的时间。实在是没有办法了,居然建议先上线安卓版,iOS先抛弃,被反驳。
觉得会不会是构建项目的时候出问题了,还想着要不要重构,后来不知道是哪根筋突然搭对了,把页面缓存的方法去掉,然后,然后,然后、、、、、、一切都ok,iOS正常了,应该不是只有我一个人会这样,bug突然莫名其妙的解决了,就是莫名其妙到想骂人,就一个函数变量的问题,至今还不明白到底为了什么,反正就是解决了。
3、加载API方法
这是最繁琐的,调用BUI本身的API,无论调用了多少个,所有的API实现都要初始化一次,举个例子来说吧,如果你下拉菜单bui.dropdown,做过页面的都是知道,在一个OA系统中,下拉菜单是经常用到的,BUI这方面可以说做的很变态,它每个下拉菜单都需要初始化,根据id初始化每个下拉菜单,倘若你需要在下拉菜单实现的时候进行一些其他的操作,你得调用它的callback函数,整个实现js必须翻页,一个费用申请的功能,初始化了三个下拉菜单,单单一个简单的form表单提交,js文件愣是铺满三四页的编辑页,会有钟错觉,会让你觉得自己有多厉害,动不动就几千行代码,而只有你知道,四分之三都是加载实现API的初始化。
光是重复初始化API都可以让人怀疑自己去,说多都是泪。
BUI还在继续,虽然可以说很熟练的调用它的API,但这个坑,估计是很难绕了。