北京志远天辰科技有限公司-旗下
首页 » 钉钉产品问答 » 钉钉小程序开发实践

钉钉小程序开发实践

作者:钉钉硬件分类: 钉钉产品问答 时间:2022-2-10 14:58浏览:499次
简介: 摘要:DingTalk「开发者说」是专为钉钉开发者打造的栏目,同享钉运用开发的实战技巧、技能架构、解决方案,致力于成为钉钉与开发者的衔接桥梁。本篇同享首要内容包含移动端Web的特色,钉钉小程序的优势,钉钉小程序开发准则,开发中常见的问题,以及钉钉小程序未来规划。 同享人:宵何,钉钉小程序开发东西及研发链路技能负责人

(一)移动Web的特色  

钉钉小程序开发的运用散布很广泛,下面列举了四个常用的钉钉小程序:钉钉投票、传图识字,以及集成在钉钉客户端中的自定义渠道和考勤打卡。


经过比照桌面设备,移动Web的特色体现在以下三个方面:  小屏幕 桌面设备:运用大尺寸屏幕,14寸~27寸以上,可一次性展现许多内容; 移动设备:可视区域较PC设备小许多,可展现内容有限;  轻场景 桌面设备:得利于大屏幕、高功用的特色,可进行杂乱的烘托、交互; 移动设备:受限于屏幕巨细、电池容量,凸显移动、便携;  低功用 桌面设备:外部电源供能,不受能耗约束,能进行高功用核算; 移动设备:自带电池,受电池容量约束,电量有限,不适合高功耗的任务;  简略来说,移动Web首要优势在于移动和便携。 image.png

经过比照桌面设备,移动Web的特色体现在以下三个方面:

  • 小屏幕

桌面设备:运用大尺寸屏幕,14寸~27寸以上,可一次性展现许多内容;

移动设备:可视区域较PC设备小许多,可展现内容有限;  

  • 轻场景

桌面设备:得利于大屏幕、高功用的特色,可进行杂乱的烘托、交互;

移动设备:受限于屏幕巨细、电池容量,凸显移动、便携;

  • 低功用

桌面设备:外部电源供能,不受能耗约束,能进行高功用核算; 移动设备:自带电池,受电池容量约束,电量有限,不适合高功耗的任务;  简略来说,移动Web首要优势在于移动和便携。


(二)小程序的优势  

  • 小程序结构  

小程序同归于移动Web领域,是站在移动Web的膀子上,让移动Web开发愈加靠近原生运用的体会和功用,这一特色体现在小程序的结构中。 小程序结构首要分为逻辑层和视图层(见下图)。在逻辑层中,不同的页面都运行在同一个逻辑层中,而在视图层中每个页面是独自存在,这在架构上更靠近原生运用的体现。钉钉客户端就是标准的原生运用。

image.png

  • 功用提高,原生运用的体会  

在功用和体会方面,小程序会将公共交互性的功用(如路由、同享类)运用原生native完结,让小程序具有原生运用的体现,在交互体现上与原生运用一致,在技能开发上则运用移动端Web开发技能如JS、CSS。

image.png

  • 开箱即用,提高开发效率  

小程序供给小程序DSL,在标签上相对移动Web端H5的开发标准做了许多简化,虽然不如H5开发标准自由,但小程序在一定意义上降低了学习门槛。 例如首屏加载功用,这是在移动Web开发中经常会遇到的问题,而小程序在结构中就直接解决了这个问题,资源加载只在首次发动小程序时发生,加载后资源会储存在本地,再次发动小程序时无需再次加载,完结秒发动,使首屏加载功用在小程序中得到很好的体会。

  • 数据安全  
  • 逻辑、烘托别离:小程序在结构中将逻辑层和烘托层别离,因此逻辑层的JS不能操作篡改DOM展现;
  • 代码扫描:上架代码扫描,杜绝恶意代码;
  • 域名管控:网络白名单控制,只能与指定站点交换数据。
  •  离线可用

离线可用是小程序和移动Web运用最大的差异。小程序经过离线包将资源下发到客户端,因此在离线或弱网场景依然可用。


(三)小程序开发准则  

小程序开发的准则有以下三点:

  • 少内容:突出要害信息,而不是追求万能;
  • 轻交互:削减杂乱交互,重展现,轻交互;
  • 小运用:运用功用清晰,即用即走,比方滴滴客户端供给司机版和用户版,有用的将功用阻隔。

 因此,小程序开发要发挥移动便携优势,与桌面端Web互补,各展所长。


(四)小程序开发实战

  • 开发准备  

image.png

  • 点击“开发者文档”-“运用开发”-“客户端”-“小程序开发东西”;

image.png

  • 下载小程序开发东西IDE,然后回到钉钉开发渠道首页进入“开发者后台”创立小程序运用,填写运用名称、描绘、logo图片。
  • 开发运用  
  • 增加场景化能力包:进入敞开能力库增加能力包并相关当前运用;
  • 装备开发办理:完结运用的拜访地址装备;
  • 办理接口权限:挑选开发所需的接口;  
  • 发布运用  
  • 完善运用信息:更新运用名称与图标,让它更有辨识度;
  • 办理版别与发布:在小程序IDE中编译并上传版别,并在开发者后台设置运用可运用范围并发布。
  • IDE运用示例:  
  • 参考文档:https://open.dingtalk.com/document/orgapp-client/mini-program-development-tools  
  • 翻开IDE后,挑选新建项目或许翻开项目(比方已有项目或Demo),挑选要开发的运用类型:
  • 假如你初度编写小程序代码,能够运用我们供给的“组件/API示例”模板创立项目;
  • 单击下一步填写项目名称和项目路径,然后点击完结即可;
  • 翻开项目,会默许进入代码修改模式。从左到右,依次是文件操作区、代码修改区和预览区;
  • 修改好代码,进行本地调试;
  • 发布版别,在开发者东西右上角点击“上传”按钮即可。
  •  小程序运用类型的挑选  
  • 下面列举了在开发链路中的选型、发动、鉴权、发布以及稳定性中的常见问题。

    •  小程序运用类型的挑选  
    • 第三方个人运用
    • 特色:一切用户都能够翻开,但无法获取用户的安排信息;
    • 运用场景:一般商业场景,如:茶百道、星巴克、喜茶等;  
    • 企业内部运用
    • 特色:仅安排内部运用,发布约束比较宽松;
    • 运用场景:安排内部东西;  
    • 第三方企业运用
    • 特色:外部安排运用,运用市场需求办理员开通才能够运用,发布需求审核;
    • 运用场景:2B商业化场景,如绩效办理、资产办理等。

    以上是钉钉运用的三种类型,其特色和运用场景各有不同,开发者需求依据本身需求挑选适合的类型。  

    选型案例

    一个开发者要开发服务于社区的运用,选型时挑选了企业内部运用,在运用发布时需求登录到每一个社区开发者后台进行上传发布,后期随着社区数量不断增加,发布工作变得难以完结。 面向外部安排场景的正确选型应该是第三方企业运用,开发者在本身安排中开发运用并上架,有需求的社区只需开通这个运用即可。  

    • 运用参数设置及获取  
    • 自定义参数设置的读取有两种方法:
    • App onLaunch:每次初始化小程序时触发

    image.png

    • Page onLoad:每次初始化页面时触发

    image.png

    假如需求每一次翻开页面都能获取装备参数,就挑选Page onLoad方法;假如只是根底装备无时效性要求,则能够挑选App onLaunch。

    • 用户鉴权,打通已有体系

    新开发的小程序与企业已有体系打通首要在于用户鉴权,即同一用户在不同体系中辨认。 用户鉴权的两种基本完结方法分别是依据Cookie和依据Token。依据Cookie的方法比较常见,用户首次登陆后,服务端将用户信息经过Cookie存储在页面中以便后续辨认。但是小程序的鉴权免登方法有所不同,钉钉小程序是经过用户的Access Token拜访钉钉的一切体系。Cookie的设置是依据域名,因此在不同域名的体系之间很难进行同享。钉钉经过在恳求的参数中顺便用户Access Token做用户鉴权,然后打通各体系的用户鉴权关系,比Cookie愈加快捷有用。

    • 多体系互通  

    经过钉钉免登能够获取钉钉用户根底信息,其间一个重要信息是unionid,在同一小程序运用所属的安排下的unionid是唯一的,因此经过unionid能够检索到钉钉中的用户信息并同步到各体系,完结用户信息的多体系互通。

    image.png

    • 发布和更新

    移动Web的发布具有实时性,而小程序运用的新版别发布不会推送到客户端,不能完结实时更新。钉钉小程序开发能够完结新版别发布48小时内,用户会强制更新到新版别。发生非实时更新是由于小程序客户端更新是后台软更新模式,即异步更新,用户对更新是无感知的。

    •  线上稳定性  

    针对稳定性,下图列出了一些会呈现的过错类型和解决方法:

    image.png

    • 大局过错:不知道代码会呈现什么过错时能够运用App.onError进行整体拦截;
    • 异步过错:在编写异步代码时需求关注异步的过错,如用Promise编写,能够运用Promise.catch进行异步监听;
    • JSAPI:侧重关注JSAPI的异常回调,即JSAPI fail回调;
    • 非法参数:运用my.alert或过错引导页的方法,提示客户无法进行后续的交互;
    • 网络过错:监听网络异常情况,进行网络类型判定,并供给用户引导;
    • 数据过错:设置数据过错默许值,以保证数据过错时,页面能正常运行,不会显示代码过错;
    • Image资源过错:如URL地址不行用时,能够经过URL回调方法进行监听上报。


    (六)未来规划

    •  JSAPI能力

    在2022年上半年估计将有100+JSAPI敞开,触及运行时、文件、网络、地图、设备等。  

    • 小程序桌面客户端  

    现在钉钉小程序无法在桌面客户端运行,然后发生交互体会的断层。2022年会侧重于小程序桌面客户端开发,Mac、Windows小程序正在路上,以完结一套代码运行在钉钉一切客户端 - Write Once, Run Anywhere。

    • 小程序卡片

    经过小程序和卡片的功用供给沉浸式、更轻量的交互体会。下图是一个在会话中运用卡片完结交互的示例。

    image.png

    下图示例同样是在会话中发起小程序卡片进行交互,并拉起一个半屏的小程序,用户填写后提交表单,并更新小程序卡片,这样用户经过小程序即可在会话中完结轻量交互,而无需翻开新的小程序。

    image.png

    • 协同引擎

    手机端和PC端的交互,完结多设备无缝衔接和协同。


    综上所述,小程序是一个优秀的开发方案,但它并不是银弹,不适用于一切场景,开发者需求依据不同场景挑选合适的开发方案。 对钉钉小程序开发有兴趣学习的朋友,能够在《钉钉小程序开发威望指南》一书中了解更多内容,一同也欢迎我们参加钉钉群,一同交流同享。

     


    (七)常见问题解答  

    Q:前端是怎么获取用户安排的CorpID的呢?

    A:钉钉小程序的运用分为三种类型,第三方个人小程序,企业内部小程序,第三方企业运用小程序,其间个人小程序是获取不到企业信息的,其它两类小程序中,CorpID放在了大局的my目标或许dd目标下面,比方my.CorpID,或许my.dd.CorpID,来获取到当前用户翻开这个运用所属安排的CorpID。

    Q:钉钉小程序开发东西中,代码上传环节是上传到了哪里呢?小程序开发不需求自己供给服务器环境了吗?

    A:当我们在IDE做代码上传的时分,会上传到敞开渠道专属的文件服务里,发动小程序的文件服务将上传的代码进行编译,生成小程序的离线包,这个离线包也会放在敞开渠道的CDN里,然后把小程序下发到小程序的客户端。但这里并没有清晰寄存的具体位置,在开通小程序的时分就会供给这个服务,假如开发不触及后端服务的话是感触不到这个细节的,只需求运用IDE操作就能够了。

    Q:互动卡片的开发进展怎么?什么时分能够体会到?

    A:互动卡片现在在内部业务中试用,正在收集运用中的一些问题,尚处于孵化阶段,估计2022年上半年推出。

    Q:钉钉小程序怎么完结文件上传和下载?

    A:首要分两部分:榜首,假如存储文件的服务运用钉钉的钉盘,能够运用小程序里供给的钉盘API就能够,这些API包含上传文件到钉盘、挑选钉盘、预览钉盘、从钉盘下载文件等。第二,假如运用自己的或第三方服务,比方阿里云的OSS、腾讯云的OSS服务,就需求自己做相应的实践和预览,比方上传能够经过定义Apollo file这样一个API,但需求开发者自己去对接;下载能够经过HttpRequest或许DownloadFile;预览则需求开发者自己去对接第三方预览的服务。

     Q:榜首次加载的时分,钉钉小程序加载的时分会比H5慢一些吗?

    A:H5榜首次加载是翻开一个html页面、解析页面内容、加载页面资源的过程,而小程序相当于把页面代码和资源都打包在小程序离线包里并下发到客户端的能力,榜首次翻开小程序的时分,会有一个离线包的下载过程,但理论上小程序下载内容的总量和翻开H5页面加载资源拜访数据的总量是相同的,所以小程序加载的过程不会比翻开H5页面的速度慢。