以下是我使用钉钉小程序一个月以来整理的笔记,包括和微信小程序的对比和一些开发建议。
对比
| 对比项 | 钉钉小程序 | 微信小程序 |
|---|---|---|
| 页面目录结构 | .axml,.acss,json, .js | .wxml,.wcss,json,.js |
| 事件绑定 | onTap | bindtap |
| 模板语法 | a:if | else | for | ... | wx:if | else | for | ... |
| 页面结构文件 | .axml 中最外层不需要包裹一层<view>标签 | .wxml 中最外层需要包裹一层<view>之类的标签 |
| JSAPI | dd. | wx. |
| 自定义组件 | Component 定义属性用 props | Component 定义属性用 properties |
| 子组件调用父组件的某个方法 | 父组件可以将函数作为属性传递给子组件,子组件通过 props 接收 | 目前只能通过父组件事件监听,子组件通过triggerEvent触发父组件自身的方法 |
| npm 包的使用 | npm i安装后,直接引入使用 | npm i 后需要进行构建才可以引入使用 |
| 网络请求 | dd.httpRequest({}) | wx.request({}) |
| 网络请求中 header 参数 | dd.httpRequest({})中为 headers | wx.request({})中为 header |
| ... | ... | ... |
注意事项与开发建议:
-
钉钉小程序的 JSAPI,有些虽然名字和微信小程序相同但是里面的
参数名称,用法,返回数据类型,产生的效果却不同,开发时一定要对着文档,避免出错。比如取缓存的 API:// 微信 wx.getStorageSync("yourkey"); // 钉钉 dd.getStorageSync({ key: "yourkey" }).data; -
dd.httpRequest中默认Content-Type为application/x-www-form-urlencoded,如果Content-Type为application/json时,data 参数只支持 json 字符串,用户需要手动调用JSON.stringify进行序列化。示例:dd.httpRequest({ headers: { "Content-Type": "application/json", }, url: "http://httpbin.org/post", method: "POST", // 需要手动调用JSON.stringify将数据进行序列化 data: JSON.stringify({ from: "钉钉", production: "DingTalk", }), /* 略 */ }); -
Antmove是一个小程序转换器,但是目前不建议使用。转换后的代码一言难尽,应用也会有各种 bug。
-
钉钉小程序和支付宝小程序有互通之处,所以一些 UI 组件在支付宝上可以使用,钉钉小程序上也可以。
-
目前钉钉小程序推荐使用的 UI 库为 mini-ali-ui,可视化数据解决方案为antv-f2。
-
在小程序中进行文件操作需要了解钉盘这个概念。小程序提供的 JSAPI 好像目前只能支持一些媒体文件。