荐 微信小程序转钉钉小程序适配问题
与阿里云项目合作,作为ISV,不能使用腾讯系产品,必须将微信小程序项目转成钉钉小程序。
经过12天的艰苦奋斗,基本完成。将经验教训整理一下给大家。
不支持wxs,无法自定义页面函数
很方便的{{mc.todate(addtimes,‘d’)}}调用方式,不能使用。
这几乎是现有项目的显示标配,几千个调用点,都需要在js层重写。
工作量巨大。安排搬砖。
不支持全局组件引用
app.json不支持全局组件引用。
只能每一个页面将用到的组件单独引用。
“usingComponents”: {
“auth”: “…/component/auth”
}
对于该项目庞大的组件库,虽然可以每个页面单独引用,但是考虑到未来组件扩充,还是一身冷汗。
不过可以写到转换脚本里。需要在微信小程序上增加一个伪组件,转换用。
不支持全屏显示方式
这是比较大的坑。
全屏显示时小程序项目个性化十足的方案。我们的项目没有不用全屏的。
全屏的好处是标题栏可以自己设定好。
早期微信小程序支持也不好,我们需要进行大量适配不同机型的刘海屏!!
现在倒好,钉钉小程序不支持全屏显示。只能进行适配阉割。
将header的头部效果全部隐藏掉,还要兼顾微信小程序的正常显示。
又是上百个页面的调整,继续安排搬砖。
组件不支持input hidden
组件不支持hidden属性,只能用display:none来。
顺便提一句,我们自定义的表单组件,都是混合输出的。比如picker,会输出三个值。某些组件,甚至会输出6个值。
不支持自定义元素
大家可能不会遇到,平时写代码,html标签用<kbd>强调</kbd> <code>强调二</code>
,已经习惯了。结果在钉钉小程序里面报错。
批量替换成<text class="kbd">万马奔腾</kbd>
flex布局有问题,界面css兼容调试难
flex不知道是怎么支持的。非常奇葩。
同样的代码和样式,我们试过在微信小程序,网页上,都跑的好好的。
在钉钉小程序上显示错乱不堪。简直一下回到了2008年。
2008年我的团队是禁止使用flex和websocket的。
network不支持重发Replay XHR重发调试
IDE常用功能缺失。
不支持重发调试,每次调用需要Ctrl+B重新编译。而且钉钉小程序编译极慢,抽半根烟的功夫。
还不支持屏蔽js。单步跟踪会掉进WA*里面。懂的,蛋都会疼一下吧。
真机调试,是个假真机。不支持PC联动。糊弄鬼的神作。
还有很多不支持,比如基础库没有切换的地方。一直用1.7,说好的1.24在哪?还搞什么V1,V2,起名委员会真不是盖的。
不支持页面间回调函数
就是微信小程序里面的navigateTo函数events接口。很方便。
钉钉小程序不支持就不支持吧。自己写一个好了。也不麻烦。
子组件不能监听父组件参数的变化
这个坑蛮大的,也解决了。不过效果并不好。子组件做了变更,父组件setData过去相同值,不响应,也就是说写组件接口的人画蛇添足了。
didUpdate,多了不说了,写到那自己感受吧。
和微信小程序的observers比,确实差的不是一点。
自定义组件父子相互调用
期初通过技术答疑
问过钉钉官方,明确的说不支持。当时团队负责人就疯了
暂时不支持,暂时只能从外部通过传递 props 的方式控制组件内部。
未来会开放父页面调用子组件内方法这样的能力。
我们经过努力,谢天谢地。父子调用都通了。
不过很危险。如果这个不通。相当于自废武功。转钉钉小程序的工作将宣告失败。我们的项目太大,组件太多了,总不能都展开铺平吧?!
include引用复制,不支持变量传递
include引用,居然不传递变量,很奇葩的bug
说好的只是复制一份代码。结果还不如template
还是那句话,钉钉小程序能做的,我们要做,钉钉小程序不能管的,我们也要管。
转换脚本凑。搞定。
image/picker的style和class不可用
这个对于前端工程师来说是比较蛋疼的。
这次没有安排前端人员进转换小组。结果还是要改改改。
input的width属性,不按照父组件宽度自适应。
这个也很奇葩,不说了,前端工程师都蒙了。
顺便提一句,组件的样式表acss,和全局样式是打通的。
而微信小程序组件样式表是独立的。这就对前端提出了高要求。
前端工程师工作量并不小。
switch组件比例过大。
前端用scale搞定。再加一个伪代码。
picker组件能力太弱
有用到multiSelector的,需要自己写了。
呵呵呵呵
工作量也不小哦
而且picker-view还有一个坑,我们跳了一次。刚爬上来。
font-face无法识别
这个微信小程序支持的也不好。不支持本地文件,需要base64
但是钉钉小程序支持的更差,不识别woff2,只识别woff
还好woff可以识别本地文件。转换脚本派上用场了。
rich-text组件不支持html解析
自己写node吧。
官方推荐的库,看了一下是TypeScript的。没接触过的,可有的玩了。
没有camera组件,拍照蒙版不好实现
拍照时,需要手机横着拍,竖着拍,随便拍。
而且还要支持轮廓拍。方便后期做AI识别。
钉钉小程序几乎全部沦陷。这块功能整体阉割。
写在最后
我们为图省事,试过Antmove。我们项目太复杂,无效。
只好自己开发了一个转换脚本程序。
现在微信小程序开发好后,只需要点下转换,1秒钟,钉钉小程序就可以直接编译发布了。没有任何的残留代码。当然,开发也不能太任性。
最后在说一下钉钉小程序的优势:
内部企业应用不需要审核,直接上架~~
可以获取企业架构部门和员工信息。
免登登录,无需点击按钮授权。
权限够,可以直接获取手机号。
消息推送几乎各种方式随便推。
本文地址:https://blog.csdn.net/boiciy/article/details/107372955