但是,一般你是用不了的,因为百度小程序有很多奇葩的地方,下面是我开发百度小程序踩过的坑,看看你有没有遇到过。
(1)json对象和对象字面量
百度小程序引入对象字面量的的调用方式,举例:
如果正常的循环微信和百度是一样的,但是如果通过模板template的方式来传值,则出现不同,
- list:[{"id":"95","catid":"28","typeid":"0"},
- {"id":"94","catid":"28","typeid":"0"},
- {"id":"93","catid":"28","typeid":"0"}]
微信调用为:<template is="list_1" data="{{list}}"/> 并且is="list_1"可以动态指定,比如你可以写成:<template is="list_{{list_type}}" data="{{list}}"/>这样我可以随意指定调用某个模板;但是百度小程序就不行了,百度调用则为:<template is="list_1" data="{{ {list} }}"/> 并且is="list_1"必须固定死,不允许动态改变,
关于何时使用三个大括号还是两个,官网有说明,可以仔细体会一下:https://smartprogram.baidu.com/docs/develop/framework/view_data/
(2)某些函数的命名
我在做列表页的时候,用的tab切换,需要实时调用不同的分类,所以封装一个函数为:getData。微信用的也是这个,一切正常,百度死活不出来内容,后来改成getInfo,发现竟然可以了.....,所以我不得不怀疑有某些函数不能用,同样还有:openLocation,不知道这算不算bug
(3)模板引入公共页面
比如引入公共头部
按理说我直接把头部要呈现的数据直接在header/header/下的header.js中赋值即可,这样我每个页面调用,就不需要重复赋值了,但是不行,你调用一次就得在每个页面中重新赋值一次,所以感觉这个功能很鸡肋了,为什么不能一次性赋值,全站通用呢?
(4)默认css问题
用小程序demo提供的框架css,即app.css,真是坑坏了,竟然默认使用box-sizing: border-box,即IE怪异盒模型,造成原来样式很多不能用,差点没有大改,建议都改成:box-sizing: content-box或者直接废弃不用。
(5)swan.request请求返回整形bug问题(其实不能算bug)
最近做一个提交表单,本地测试一点问题没有,但是只要真机预览,表单死活无法提交,打印fail错误,提示:Value 1 of type java.lang.Integer cannot be converted to JSONObject。

刚开始一直是以为表单传值有问题,各种修改post,get来回切换,然后又在api接口上频繁修改,一直提示这个错误,,后来不经意才发现,是我返回值的问题,我本意是只需要返回0或1,通知小程序提交表单是成功还是失败,所以我只记echo 1或0了,本地测试毫无问题,没想到真机不认,所以只能改成
无语中...,表示在这调试了一天,竟然因为这....
- $a['status'] = "succ";
- echo json_encode($a);
(6)百度小程序的兼容问题
百度小程序目前兼容性还是比较差的,并且他们官方审核还经常审核这些兼容性,比如map组件,苹果6s系统显示空白,另外建议前端块与块直接用一个clear:both清楚一些浮动。
(7)百度和微信的部分api的差异
百度不支持的:showShareMenu、setData(data, function)(百度小程序不支持function回调函数)
更多正在整理中
(8)百度开发者工具
和微信开发者工具比较,百度做的真心粗糙,如果这不值当的吐槽,那么他的编译和预览我必须吐槽了。
每次打开开发者工具,先来个大黑屏,开始编译,为什么不搞成自动后台编译的?
预览,这个让人头痛的预览,一个几百K的小程序,每次预览,等待他编译生成二维码,至少需要1分钟;就像我调试上面第5个问题的时候,不知道等了多少个1分钟,浪费了多少时间,敢不敢快点编译呢?
另外,真机预览我始终没调试成功,有成功的小伙伴能教教我么?
(9)百度审核人员
百度审核人员是目前上线小程序的一个大的拦路虎,各种挑刺,各种平台测试兼容性,当然严格一点是好事,可是您为什么不能大肚量一点,为什么不允许我的小程序出现其他小程序开发呢?

文章点评