钉钉小程序和微信小程序对比,及一些开发建议

1,549 阅读2分钟

以下是我使用钉钉小程序一个月以来整理的笔记,包括和微信小程序的对比和一些开发建议。

对比

对比项钉钉小程序微信小程序
页面目录结构.axml,.acss,json, .js.wxml,.wcss,json,.js
事件绑定onTapbindtap
模板语法a:if | else | for | ...wx:if | else | for | ...
页面结构文件.axml 中最外层不需要包裹一层<view>标签.wxml 中最外层需要包裹一层<view>之类的标签
JSAPIdd.wx.
自定义组件Component 定义属性用 propsComponent 定义属性用 properties
子组件调用父组件的某个方法父组件可以将函数作为属性传递给子组件,子组件通过 props 接收目前只能通过父组件事件监听,子组件通过triggerEvent触发父组件自身的方法
npm 包的使用npm i安装后,直接引入使用npm i 后需要进行构建才可以引入使用
网络请求dd.httpRequest({})wx.request({})
网络请求中 header 参数dd.httpRequest({})中为 headerswx.request({})中为 header
.........

注意事项与开发建议:

  1. 钉钉小程序的 JSAPI,有些虽然名字和微信小程序相同但是里面的参数名称,用法,返回数据类型,产生的效果却不同,开发时一定要对着文档,避免出错。比如取缓存的 API:

    // 微信
    wx.getStorageSync("yourkey");
    
    // 钉钉
    dd.getStorageSync({ key: "yourkey" }).data;
    
  2. dd.httpRequest中默认Content-Typeapplication/x-www-form-urlencoded,如果Content-Typeapplication/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",
      }),
      /* 略 */
    });
    
  3. Antmove是一个小程序转换器,但是目前不建议使用。转换后的代码一言难尽,应用也会有各种 bug。

  4. 钉钉小程序和支付宝小程序有互通之处,所以一些 UI 组件在支付宝上可以使用,钉钉小程序上也可以。

  5. 目前钉钉小程序推荐使用的 UI 库为 mini-ali-ui,可视化数据解决方案为antv-f2

  6. 在小程序中进行文件操作需要了解钉盘这个概念。小程序提供的 JSAPI 好像目前只能支持一些媒体文件。