likes
comments
collection
share

马上2023年了,你为什么要关注Donut

作者站长头像
站长
· 阅读数 46

前言

还剩下几天,跌宕起伏的2022年就要过去了。这一年疫情下的起起落落,习惯了居家办公隔离,习惯了日常核酸检测,习惯了到处扫码进门,而最近可能大部分同学又经历过🐑了的日子。

年关将近,也可能有一部分同学也遇到了突如其来的“毕业”。这是一个困难的时刻,但是冬天总会过去,春天终究会到来。正如老话讲的,“留的青山在,不怕没柴烧”。我们能做的唯有不断提升自己。你就是你自己的“青山”。要努力学习新的技术来让自己的“青山”变得更加高大强壮。

说到新东西,在这个新旧交替的时刻,来关注一下新鲜出炉的甜甜圈(Donut)吧。

(本篇不会具体介绍如何安装配置开发环境,也不会搬运API流水账,这些东西大家直接去看文档就行了。)

什么是 Donut

Donut是腾讯最近悄悄推出的一个前端开发“平台”。注意是“平台”而不是“框架“。这两个词的差别足以看出Donut的野心不小。打开Donut官方文档。其简介就是一句话:

Donut 平台覆盖开发、部署、产品体验分析全产品开发周期的各种需求。开发者可以专注于代码逻辑,其他的都交给我们。

喏,你只管码代码,剩下的都不用管了。还有这种好事?那我们就顺着文档再看看Donut具体能干个啥。

Donut 特色能力

多端框架

Donut 多端框架是支持使用小程序原生语法开发移动应用的框架,开发者可以一次编码,分别编译为小程序和 Android 以及 iOS 应用,实现多端开发;能帮助企业有效降低多端应开发的技术门槛和研发成本,以及提升开发效率和开发体验。 了解更多

第一个能力就是多端框架。你看,这里出现框架了,果然框架只是Donut这个平台的一部分。从上面的介绍我们能看出这个多端框架可以把原来只能在微信中运行的小程序扩展到自家的Android和iOS应用,这不就是跨平台么。虽然市面上已经有一些跨平台解决方案了,专注于小程序容器的有mPaas, FinClip, uniSDK等。自成体系的如Flutter等。但这可是微信自家的小程序容器啊。微信啊,还要啥自行车?

马上2023年了,你为什么要关注Donut

你可以把现有小程序直接转化为一个完整app,也可以在已有app里把小程序给嵌进去当个模块来用。本已臃肿的app就要变得更加臃肿了。

身份管理

当小程序通过多端框架构建成可运行的移动应用时,如APP、H5网页等,需要搭建新的用户注册、登录、管理体系。身份管理在多端场景中,提供便捷易用的SaaS组件,可快速完成搭建。 了解更多

提供一套身份管理体系,用户名/密码登录或者手机验证码登录可以直接用。还支持微信等第三方登录。这个东西有没有用就看自家产品的需求了。如果是想快速开发一个小的app的话,我觉得可以用一下,省去了很多注册登录相关的工作。

安全网关

「安全网关」是小程序开发团队推出的面向APP、微信/企业微信小程序、公众号H5/web的安全接入网关,提供微信私有链路、流量治理、弱网加速等能力,全方位保障业务安全高效稳定运行。 了解更多

网关也给你提供了。不用去考虑弱网加速,反爬虫反刷,反抓包。容灾备份啥的也都给你考虑到了,真是很贴心啊。但还是那句话,有没有用就看自家产品的需求了。已经自有成熟的app就可能用不到了。

马上2023年了,你为什么要关注Donut

产品体验分析

体验分析是面向小程序、网页等应用的用户体验分析工具。可以从用户视角对于应用中的交互行为进行数据采集并还原分析。 了解更多

这个就是各种常规的用户体验分析工具了。支持会话回放,热力图,路径分析,漏斗分析等等,这可能是产品经理的最爱。对于程序员来讲最大的好处是零代码埋点。不用在各个平台的app里各种插埋点代码了。回放还可以还原用户操作流程。再也不能以无法复现作为理由啦。

马上2023年了,你为什么要关注Donut

你为什么要关注Donut

介绍完Donut,那我们就来看看为啥要关注这个新平台。

首先,新

就是因为这是个平台。早点了解新的东西总会让我们快人一步。虽然市面上已经有了那些个跨平台解决方案,各有优缺点。但是并没有哪个方案已经占据了绝对优势,所以我们还需要继续探索了解新的方案。

其次,Donut是微信的

也就是它背靠是微信生态。虽然各家都有小程序,也相互之间不是那么兼容,但不可否认,微信家的小程序优势是比较大的,为啥?因为微信生态的社交网络啊。不要小瞧社交网络,基于微信生态可是诞生了拼多多这样的大厂呢,羊了个羊也都玩过吧,可见其影响力是其他小程序平台无法比拟的。而Donut是微信亲儿子,兼容性必然是要比其他几家好的多。这样无论是从单一小程序扩展到独立app还是给已有app赋予小程序能力都可以快速无痛完成。

第三,为了明年

年底了,马上过完节上班各位就要考虑明年的KPI怎么完成,OKR怎么设定目标了。如果你还在为此发愁的话,那就考虑下把Donut加入你的KPI/OKR吧。过完节先快人一步和自己的leader做下技术讨论,率先在团队内部做技术分享,你就是新年后团队内最靓的仔。

第四,一些具体细节

我们要了解下Donut多端框架里具体有啥需要关注的地方。

既然要跨端,那各端不同特性的适配就是个问题了,为此,Donut框架引入了条件编译,目前支持wxml、wxs、js/ts、json,less/sass等。支持的目标平台有小程序,ios和android。你的代码有可能会变成以下这样:

wxml

  <!-- #if MP -->
  <view class="test-view">wechat</view>
  <!-- #elif IOS -->
  <view class="test-view">ios</view>
  <!-- #elif ANDROID -->
  <view class="test-view">android</view>
  <!-- #endif -->

wxss

.test-view{
/* #if MP */
color: red;
/* #elif IOS */
color: green;
/* #elif ANDROID */
color: yellow;
/* #endif */
}

js

// #if MP
wx.showToast({
  title: "wechat toast"
})
// #elif IOS
wx.showToast({
  title: "ios toast"
})
// #elif ANDROID
wx.showToast({
  title: "android toast"
})
// #endif

虽然谁也不想在好好的代码里面到处塞#if。但这也是没有办法的事,只能尽量控制了。

如果你的通过Donut将小程序嵌入已有app的话,那显然希望嵌入的小程序和已有app可以通信。Donut框架SDK提供了这样的能力。

名称功能说明
wx.miniapp.invokeMiniappNativeExtensio给客户端原生发送消息
wx.miniapp.onMiniappNativeExtensionMsg监听客户端原生消息
wx.miniapp.offMiniappNativeExtensionMsg取消监听客户端原生消息

可以从小程序给客户端发消息,也可以在小程序里监听从客户端发过来的消息。看起来还比较简陋,但至少可以把小程序和原生app在运行时连通起来了。这意味着在app状态下小程序可以突破其在微信中运行的限制。从而释放更多的能力空间。

然后就是将app原有的微信opensdk能力也开放给内嵌小程序:

名称功能说明
微信登录官方提供 wx.login 和 wx.miniapp.login 两个api,详情可查看微信登录
wx.miniapp.login微信登录
wx.miniapp.requestPayment微信支付
wx.miniapp.launchMiniProgram跳转微信小程序
wx.miniapp.shareTextMessage分享文本到微信
wx.miniapp.shareImageMessage分享图片到微信
wx.miniapp.shareMiniProgramMessage分享小程序到微信
wx.miniapp.shareWebPageMessage分享网页到微信

这里功能上并未超越微信opensdk,只不过现在可以从小程序内直接调用而免去了小程序到微信opensdk的转接工作量。只是不知道如果app使用的是第三方分享sdk的话将来估计的考虑一下怎么再把分享能力收起来。

最后,一些期待

目前,Donut多端框架在构建app的时候会把小程序代码和资源打包,然后塞进apk或ipa里面,在app运行的时候读取的小程序代码和资源是来自本地的。换句话说,Donut官方不支持热更新。如果要支持热更新的话可能需要Android或iOS开发者去分析本地包然后自己想想办法了。所以期待官方后期如果能支持热更新那就起飞了。

小程序嵌入app之后,目前大部分微信的开放能力是不支持的。例如,获取用户信息,微信运动,订阅消息等等都是不支持的,这个也只能期望后期会支持吧。毕竟微信的生态如果能更多开放出来的话,会有更大的优势。

框架现在只支持微信小程序,androiod和ios平台。这个当然是期待后期官方支持更多平台了。

总结

本文就微信新推出的Donut平台做了个简单介绍。虽然目前处于公测阶段,还比较早期,不适合现在就集成上线。不过从目前看到的能力来说,我认为Donut还是值得持续关注的。毕竟如果能够更加方便的利用微信生态,可能会为我们自己的产品带来较大的提升。大家如果有什么感想,欢迎在讨论区留言。

(全文完)