2020 年 11 月 29 日,腾讯 2020「小程序·云开发」技术峰会在北京顺利召开。本次峰会以“重新定义开发”为主题,深度聚焦小程序云开发的创新成果与实践案例。以下为腾讯微信小程序开发生态产品负责人黄映焜的演讲实录:
大家下午好!我是来自微信团队的黄映焜,很高兴来到下午的峰会跟大家一起分享。下面我分享的主题是“不止于小程序”。
今天早上大家已经看到我们云开发的方向,从单点的云开发到全面的云开发,下午由我来给大家介绍一下我们云开发主要的多场景应用,以及会发布几个非常重要的新能力。
相信大家对于云开发的发展方向跟模式有了一些了解,开始之前跟大家简单回顾一下云开发最基础的模型。我们为小程序开发者提供了原生的云端支持和微信服务支持,开发者可以使用云开发一站式部署后端资源。其中,我们的云函数可以非常方便地在小程序前端或者服务端快速调用你的云存储或数据库中的资源和数据,而你的云调用更能直接基于云函数免鉴权去使用你的小程序开放接口能力。目前,这个模式已经获得了越来越广泛的运用和实践,相信早上大家从其他嘉宾的分享中也可以得到,使用云开发的开发者越来越多。但是在这个模型中,在这之前外部如果需要调用后端资源的话,只能通过 HTTP API 调用,假设你的业务有多场景诉求的时候,是否会有一些新的挑战呢?
举个例子,比如像有些业务的情况下,除了接入这个小程序的生态之外,业务方面可能还希望同时接入公众号网页、Web 网站甚至 APP 和 PC 程序等等多端的场景。除此之外,有些企业或者个人可能也存在需要同时去开发或者维护多个数据存在关联的这种小程序的情形。这种情形相信大家也非常熟悉,有的时候可能你的一个小程序里的数据希望更广泛地应用在更多的小程序或者公众号网页或者 Web 网站等等很多的场景。
在这之前,以普通的公众号网页开发为例。常规的搭建方式是需要你自己去搭建并且维护一套服务器的后台资源和自己去维护你的后端逻辑,并且还需要与微信服务器多次去请求与鉴权换取这个票据,获得 AccessToken,并且还需要去管理 AccessToken 的获取、存储刷新与管理等。我们知道这个过程在实践中还是有一些繁琐的,并且我们需要持续投入后端资源跟服务器运维的成本。我们说的直接一些,这个过程其实就是为了让微信知道并且鉴别“这个服务器是你的服务器”、“这个请求是你发起的请求”。
而在这种开发模式下,假设你如果同时拥有一个小程序,用了云开发的小程序,如果公众号这之前想同步的获取云开发开发资源,刚才提到的用如果需要同步获取云开发中的资源,在这之前有且仅有一种方式,就是通过自己的后端服务器使用 HTTP API 发起服务端的请求,此时同样需要使用刚才说的 AccessToken 加上这个票据。在这种场景下,既然使用了云开发,在搭建公众号网页的时候还需要去另外购买和维护服务器或者后端资源的话,确实可能对大家来讲还是不太方便的。
针对这种常见的诉求我们有没有可能实现这样一个预期的方案?但是在某个授权过程之后,我们官方的接口便提供一些原生的 API 或者是 Web SDK,来帮助大家实现可被信任的其它小程序或者公众号前端的网页,能够直接调用云开发中的资源呢?这个预期的方案就是今天希望向大家发布的第一个新的能力,是我们云开发的环境共享能力。
什么是环境共享呢?假定您有一个使用云开发的小程序 A,并且已经在支持同一种小程序 A 的云开发资源的情况下,与您的其他小程序 B、 C 或公众号 D 等共享您需要的环境。
怎么实现刚才提到的这样的共享呢?其实整个过程是非常简的,只需要在小程序 A 的控制台免费开通环境共享能力后,输入你的 App ID,选择你所需要共享的环境就可以进行共享。
值得一提的是,我们实际上提供了非常细粒度的权限控制选项,相信大家早上也会看到其他嘉宾分享的权限这个部分对于企业的数据安全、开发安全都是非常重要的,我们还支持环境共享中的权限共享授权,这样就可以在业务需要时向您希望共享的小程序或公众号页面授予非常适当的权限。
这里我们假设小程序 A 已经将环境共享给了小程序 B 了,在调用方面是不是也一样方便呢?我们的小程序 B 在获得共享之后它就获得了使用原生接口去直接支持并且调用小程序 A 中的函数或者是资源的能力。
我们从这里的具体语法可以非常清晰的看出,这里小程序 B 来调用资源方小程序 A 的代码就和调用自己环境的代码一样的简单方便,只需要非常简单的声明资源方的 App ID 跟环境相应的 ID 之后,就可以实现直接使用云原生的这个 API 进行调用。
上述方式是由小程序 A 共享给小程序 B 的这个调用方式。
回到刚才的另一个场景,是说公众号的。假设小程序 A 已经将环境共享给了公众号 E,那么公众号 E 可以使用相似的原生语法就可以非常便捷地来访问小程序 A 中的云资源,而完全不需要再像刚才介绍的那样有一些繁琐的搭建服务器和运维之后,进行复杂的鉴权后才能在服务端发起 HTTP 请求。也就是说,如果你将你的小程序 A 共享给了小程序 E,小程序 E 也相当于拥有了云开发的能力。
更重要的是,我们知道,如果你用那个公众号网页,你有的时候是需要去调用微信服务端的接口的,如果小程序 E 需要调用这个接口的话,在获得环境共享之后可以非常方便地来使用我们原生的 Web SDK,就能够发起和检查公众号的网页、授权登录和云开发的登录,他的接口也是非常非常简单,相比起之前的方式来讲基本上是对着文档把接口写进去就可以了。登录后,我们就可以访问获得授权的小程序的云开发资源、使用公众号 JSSDK 或者获取公众号已被授权的信息、发起公众号云调用等等一系列能力就都有了。同样说的直接一些,在这个模式下我们已经天然的知道了,这个服务器就是你的服务器、这个请求就是你发起的请求或者已获得资源方授权的服务器,非常自然的就不需要复杂的交换各种 token 的过程、交换票据的过程了。
由此我们看到,调用公众号的这个服务端接口同样变得非常简单。我们已经提供了类似的接口功能,云开发的 API 也是如此,我们只需要 require 我们的 Web SDK,就可以很方便地在公众号中使用您的云开发 API。
基于以上的共享、授权的过程,我们以免鉴权的调用方式可以通过环境共享能力重新定义云开发的部分,我们目前这个模式已经支持将小程序云开发环境共享给同主体下其它小程序或公众号。未来,我们有可能也会往 Web 之类的更多端方向。
介绍到这里,相信大家已经对环境共享能力有了非常全面的了解。
此外我们也发现了问题,不少企业或个人有建设一个 Web 网页进行小程序等业务进行运营的需求。于是我们也同步支持了一个非常重要的新能力,就是云开发静态网站托管能力。
如果你除了这个小程序之外还希望建设一个网站来进行更大范围更多端的传播,只需要使用我们这次的另一个新能力,就是同步开通静态网站托管能力,便能够像上传云盘文件一样简
单地搭建一个网站。在符合主体认证要求的情况下,使用云开发静态网站托管能力,能够非常简单地直接地让你的网站免鉴权跳转小程序,这样是我们的开放能力达到更好的运营传播效果。大家搭建网站的时候普遍关心的能力,比如像自定义域名、自定义缓存配置、黑白名单等安全的设置我们也都统统支持。
此外,我们还支持了 Web 未登录模式。如果你的云环境配置了恰当的自定义安全规则的话,在你的公众号的 Web 网站在外部同样可以使用我们的 Web SDK 进行调用,我们最新支持的这个未登录模式就能够达到这样的效果,这极大丰富了你的云开发资源便捷地向外拓展使用的场景。
介绍到这里,可能还有人会问,我做的这个 Web 网站除了满足运营的需求外,还希望搭建一个 Web 端的后台,来帮助我们的运营人员能够可视化地来管理我的资源跟数据。
上面这个静态网站托管能力是否难以满足这样的诉求呢?我们想要重新定义开发云计算开发内容管理功能的第三个功能。
只需要开通刚刚发布的静态网站托管能力后,便可以非常方便的通过我们的内容管理 CMS 可视化的开通,部署与统一管理你的云开发资源,在我们的 Web 端(网页端)非常方便的快速的搭建一个后台系统,也就是我们常说的运营系统。这个过程几乎是没有开发量的,甚至产品运营经理都可以自行可视化配置这个后台系统。可以看到,无论是配置字段还是说最终呈现的可视化编辑管理的数据,都能非常轻松的免开发创建可视化的内容管理平台页面,可以非常进一步的降低了开发与运维成本,使用云开发便可打通从前端到后台、到运营、到资源、到管理的所有环节。此外,这个 CMS 能力我们还支持自定义二次开发。
介绍到这里相信大家已经对我们重新定义多场景下的云开发有了非常深入的了解。我们基于一个小程序云开发为核心去拓展满足更多场景下需求的思路,是为了进一步来降低广大开发者的开发和运维成本,让精力能够更加聚焦专注在你的业务本身。而通过环境共享,我们支持了这个多端接入、配套静态托管和刚才介绍的内容管理 CMS 等拓展能力,让你的小程序云开发能够更加灵活开放。
以上就是基于早上提到的我们从单点云开发到全面云开发的发展思路不止于小程序、云开发多端扩展的场景以及新能力的介绍。
谢谢大家!
评论