钉钉微应用开发笔记

这是我的第一份博客,用于记录自己正在开发的钉钉微应用项目,以便于以后工作和自己开发,希望自己以后能成为一流的开发人员。

开始

项目前端基于JS,后端使用的nodejs。

这个项目让我收获的有:

1.熟悉JS使用
2.大致了解了koa框架的开发流程(希望以后能完整的开发一个koa项目供自己使用)
3.大致了解了jade模板引擎的使用方式,关于格式的缩进,引擎的逻辑并没有练习
4.钉钉的各种API调用  
5.使用nodemon自动启动nodejs(修改代码)

Koa

Koa是非常轻量的框架,能够直接使用各种中间件开始开发自己想要的后端,网上文档清晰,中文文档丰富,最初接触Node直接开始试用sails,框架庞大甚至臃肿,但是确实能省不少搭建的事,但是没有中文文档并且网上的资源极少,对于刚入门后端的我简直痛苦不堪,如果以后有人请教我node怎么学习,我一定推荐他现在敲一天node,然后再从express或者koa入门。

Jade模板引擎

相较于EJS其实我更喜欢用EJS,EJS更贴近HTML,格式更清晰,更容易理解,不过Jade也有他自己的好处,通过缩进就能调节格式,有自己独特的一套格式,如果熟练也能很快的开发,这次试用Jade的原因是因为钉钉官方给的demo用的是Jade,换成EJS后并不知道怎么把获取到的数据导入到EJS模板里的最终又换回来了,以后可以直接试试在<% var demo = _demo %>注入一个参数试试

nodemon

nodemon是一个后端的管理工具,能够在我修改代码后自动重启服务器,还有其他功能这次并没有使用,最初使用这类工具的目的是,在回家后云端的服务器会自动关闭,这类工具能够解决这个问题。(但是并没有解决...)

钉钉微应用开发

这次主要开发的任务是钉钉微应用的开发,项目的目的是为了让公司的业务结合在钉钉上,这样业务更流畅清晰,方便管理人员及时获取外勤人员的状态,任务的动向与错误汇报。

这是一个最初的设计样式,其实就是用官方的demo结合而成的
钉钉微应用开发笔记_第1张图片
,外勤人员进入应用可以看到自己待办的任务和已完成的任务,点击待办任务可以更改完成情况已进行任务反馈。

应用开发分为几个步奏:

1.需要登录钉钉管理员平台申请应用
钉钉微应用开发笔记_第2张图片

(后台地址什么用还不知道~,首页地址及微应用的地址,PC版的需要单独开发,现在只用了移动版本的)

2.应用创建好后就可以进行开发了,开发需要自己的服务器,前端后钉钉的服务器进行几次交互,来验证应用以及调用更多的钉钉API,创建的流程如下图
钉钉微应用开发笔记_第3张图片

1.首先在服务器端通过corpid(公司ID)和corpsecret(公司密码)获取到access_token。
2.再通过获取到的access_token获取到jsapi_ticket。

3.通过把获取到的nonceStr(用于生成签名的随机串'abcdefg'),timeStamp(时间 戳),url(decodeURIComponent(this.href)),ticket(jsapi_ticket)通过算法获得标签signature。
4.将标签signature,nonceStr(用于生成签名的随机串'abcdefg'),timeStamp(时间戳),corpid(公司ID)发送给自己前端,用来调用jsApi:dd.config()

3.前端配置如下
钉钉微应用开发笔记_第4张图片

直接对应填写相关数据即可
jsApiList是必须填写的,你如果需要调用哪些API,就要先填写在这里,不然调用的时候会err

4.dd.ready(),当钉钉api准备好后,会执行dd.ready,所以api应该写在这里面,不然可能会实现不了

5.免登:在客户端通过
钉钉微应用开发笔记_第5张图片
获取到免登code,post到服务端

服务端获取到这个code,然后通过corpid(公司ID)和corpsecret(公司密码)获取到access_token

然后通过access_token和获取到的code通过/user/getuserinfo获取到用户信息
钉钉微应用开发笔记_第6张图片

6.页面跳转:页面跳转好像文档里面没有找到,在官方给的demo里看到的dd.biz.util.openLink({ url: url });
直接使用openLink便可以实现页面跳转,跳转到新的页面还是要进行dd.config({}),后台要重新生成新的标签传到新的页面

其他都是业务上的逻辑了,如果有基础上的更新以后可以继续更新,开发钉钉微应用是基于前后端一体的项目,对自己之前各种知识算是一个汇总
12/19:更新免登
12/25:页面跳转,后台框架更新成sails

git地址:https://github.com/yhkevin93/node/tree/master/钉钉项目
sails版:https://github.com/yhkevin93/node/tree/master/钉钉项目sails

你可能感兴趣的:(钉钉微应用开发笔记)