分享人:悦铭,钉钉H5微应用前端开发链路负责人
视频地址:一键回看
目录:
一、初识钉钉H5微应用
二、H5微应用原理解析
三、钉钉JSAPI使用与鉴权
四、H5微应用开发
五、H5的性能优化建议
六、H5开发实战
七、Q&A
正文:
一、初识钉钉H5微应用
顾名思义,钉钉H5微应用是指用H5方式开发的钉钉应用。
1. 钉钉H5微应用的开发步骤
a. 开发一个H5页面,页面内(前端、服务端)接入钉钉开放平台的开放能力(如免登、扫一扫、通讯录等);
b. 在钉钉开放平台上创建一个应用,将H5页面地址配置成应用的链接;
c. 在钉钉开放平台上发布应用;
d. 发布后,用户就能在钉钉平台内(如钉钉工作台、钉钉应用广场上)看到这个应用并使用(点击打开、购买)。
发布在钉钉工作台的H5微应用示例
2. 钉钉H5微应用的类型
钉钉H5微应用主要有两种类型:企业内部应用和第三方企业应用。
应用类型 |
开发者 |
使用人员 |
是否支持上架到钉钉应用广场 |
企业内部应用 |
企业内部开发者或委托的服务商开发者 |
安装了该应用的企业内部人员 |
否 |
第三方企业应用 |
产品方案商的开发者 |
购买开通该三方应用的企业内部人员 |
是,需要满足上架要求,上架流程请参考《钉钉开发平台-第三方企业应用开放-运营规范-产品方案商-合作全流程指引》 |
企业内部应用示例 第三方企业应用示例
二、钉钉H5微应用原理解析
在钉钉容器中访问H5微应用的核心时序:
1. 用户通过钉钉客户端点击钉钉微应用;
2. 钉钉客户端拿到页面的HTML后,向微应用服务端发起请求;
3. 微应用服务端返回页面模板并加载前端脚本JavaScript;
4. 微应用前端在JavaScript中向钉钉客户端请求免登授权码;
5. 客户端在进行身份校验并通过后返回授权码Code,微应用前端根据授权码向微应用服务端请求用户信息以及页面数据;
6. 微应用服务端需要根据请求获取Access Token,即用户和企业的身份认证信息,微应用服务端进行身份校验并通过后返回Access Token;
7. 然后微应用服务端根据免登授权码Code以及验证信息Access Token向钉钉服务端请求用户信息,钉钉服务端对Code和Access Token进行校验,通过后返回用户信息给微应用服务端;
8. 微应用服务端对用户信息进行校验,通过后返回微应用数据给微应用前端,微应用前端进行页面渲染。
通常情况下,钉钉官方技术团队会不定期升级容器内核,与业界主流浏览器Chrome内核保持同步,绝大部分HTML、CSS、JavaScript、浏览器标准API等新特性都会得到支持,但不能保证所有特性都得到支持。
因此,开发者在使用一些开发语言实验性特性时,需自身回归测试其在钉钉容器内的是稳定可用的。
JSAPI
在开发H5微应用时离不开钉钉的JSAPI,钉钉提供的所有JSAPI究其底层的实现大致可以归类为两种:JS调用Native和Native调用JS。
当钉钉客户端唤起一个全新Web容器时,在容器启动时会初始化一个JSBridge 模块,这个模块的核心是将上层业务的JSAPI调用转换为对一个 invokeAPI方法的调用,同时将JSAPI的入参、回调函数等信息转为invokeAPI的入参,以此实现JS到Native的调用;
当Native调用JS时,会通过Native既有的平台能力执行一段如invokeAPI(apiName, params)形式的 JS字符串,以此实现Native到JS的调用。
H5和Native的相互调用如下图所示:
三、钉钉JSAPI使用与鉴权
1. 钉钉JSAPI鉴权步骤
如下图所示,钉钉JSAPI鉴权需要六个步骤。
钉钉JSAPI鉴权流程图
首先获取访问凭证access_token、获取jsapi_ticket、获取签名参数、计算签名,这四个步骤由服务端在服务器上完成,完成后由服务端将url、nonceStr、agentId、timestamp、corpId、signature传给前端,由前端完成引入JSAPI和鉴权配置的步骤。
完成这六步以后,前端就可以正常使用需要鉴权的钉钉JSAPI。
下图是由前端完成的工作代码示例,开发者需要特别注意的是:需要配置的参数信息,务必由服务端在服务器上完成并传送给前端。
四、钉钉H5微应用开发
1. 开发流程
这里以企业内部应用开发为例,介绍钉钉H5微应用开发流程,一共需要五个步骤。
a. 应用创建,填写基础信息
b. 应用配置
c. 应用开发与部署
d. 应用调试
e. 应用发布
2. 开发工具 - 全码开发
前端基于《钉钉开放平台-文档首页-工具与资源-DingTalk Design CLI》生成H5页面模板。
a. 开发步骤:
在开发之前需要完成以下前置步骤:
完成以上步骤后就可以开始微应用的开发调试。
b. 开发工具:微应用本地开发工具
c. 调试工具:微应用调试工具
在每一个微应用的开发管理界面都可以生成一个专属的调试工具(见下图),开发者可以按照提示将工具插入页面,并进行初始化操作。
初始化后会生成一个调试工具的页面(见下图)。在这个页面可以将在真机中调试的信息打印出来方便开发者进行调试,实现如同开发调试普通微应用一样调试钉钉H5微应用。
另外,服务端基于《钉钉开放平台-文档首页-工具与资源-服务端SDK下载》接入钉钉开放平台开放能力。
3. 开发工具 - 低码开发
低代码开发可以通过钉钉搭的入口选择相应工具,其开发步骤如下:
应用发布后返回工作台即可查看和使用。
全码开发和低码开发各有优劣,开发者可以根据自身需求灵活选择。
五、钉钉H5微应用性能优化建议
1. 优化资源加载
a. 图片请求优化
b. 网络请求优化
2. 优化首屏体验
a. 优化首屏资源加载
b. 使用服务端渲染
3. 利用资源缓存
a. 使用浏览器缓存
b. 缓存接口数据
c. 缓存页面资源
随着ServiceWorker和CacheStorage等相关能力获得广泛支持,也让我们有了更加灵活和强大的缓存方式;
一般来说,推荐使用第三方库来简化相关功能的实现,比如“WorkBox”,借助其提供的相关API,可以方便的利用ServiceWorker来缓存资源。
六、H5微应用开发系列实战
实战一:快速上架一个H5微应用
1、项目需求:
将企业内已经建设好的H5微应用上架到钉钉工作台上。
2、操作步骤:
a. 创建企业内部应用:在钉钉开发者后台选择钉钉应用-企业内部开发-H5微应用-创建应用
b. 配置应用:进入新建应用详情页,在开发管理中点击修改并进行开发信息配置;
注意:如果只配置应用首页地址,则应用只支持移动端打开,如果需要同时在PC端打开,则需要配置PC端首页地址。
c. 应用发布:进入版本管理与发布,添加可使用范围,然后点击确认发布,未设置可使用范围,默认将当前应用创建人添加到可使用范围。
d. 使用应用:在钉钉移动端工作台添加并使用应用。
实战二:H5调试实战
1、项目需求:
调试开发中、线上的H5微应用。
2、操作步骤:
a. 在开发者后台进入目标应用详情页,点击开发管理,在调试工具中点击生成专属调试工具,按照步骤先打开调试工具页面;
b. 复制此应用的专属调试代码,然后将代码添加到微应用的
c. 打开微应用后即可在调试工具页面调试微应用,调试页面如下;
实战三:H5微应用低码实战
1、项目需求:
搭建一个员工复工信息上报表单,通过钉钉搭来创建应用并展现到工作台上。
2、操作步骤:
a. 在钉钉搭中选择搭建工具-宜搭,进入宜搭,选择企业员工行程申报并启用应用;
b. 启用成功后进行表单编辑;
c. 应用发布:将应用发布到钉钉工作台,设置工作台分组和可见范围后点击发布;
d. 返回工作台查看应用。
七、Q&A
Q:H5应用开发缓存如何清除?由于每次发布的静态资源都不同,有时需要清除钉钉APP应用缓存。
A:所有静态资源都是可以被缓存的,是否被缓存需要看服务端的设置信息,这种情况需要业务开发人员配合前后端进行处理。
Q:钉钉H5微应用在未来将会有哪些开发者利好的规划?
A:钉钉即将推出一款桌面端的应用程序,通过这个应用程序会提供一些工具帮助开发者在开发钉钉微应用中提效。
Q:H5微应用是否可以跳转到钉钉的小程序?
A:可以的,开发者可以通过开发者文档查阅H5微应用-JSAPI openLink,这个JSAPI可以实现在H5微应用中跳转到指定小程序。
Q:钉钉微应用可以上传不限格式的文件吗?
A:钉钉微应用在格式上是有要求的,具体要根据使用的JSAPI的要求,每个JSAPI都会有清晰的描述;同时也可以在开发者后台进行人工提问。
Q:目前提供的H5微应用开发工具有哪些?是否有可以在本地使用的工具?
A:钉钉平台提供的H5微应用开发工具包括:
Q:钉钉小程序和H5微应用的区别是?
A:这个问题本质上是小程序和H5的区别,主要体现在以下几方面: