【QCon】精华内容上线85%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

别再纠结后端了,小程序开发这么做

  • 2019-10-12
  • 本文字数:3311 字

    阅读完需:约 11 分钟

别再纠结后端了,小程序开发这么做

2017 年,微信小程序上线。通过「无需安装、用完即走」的轻便形态,小程序可以快速解决用户的实际需求。在互联网人口红利见顶的大背景下,小程序成为移动互联网从业者们的布局重点。


2018 年 9 月,小程序·云开发正式上线,打通了小程序前端与云资源的链路,省去运维成本,帮助开发者快速上线和迭代小程序。这也标志着 Serverless 理念开始在国内有了大规模的应用落地。

疯狂的一年

回望这一年,小程序·云开发团队收到最多的反馈就是:“为什么 XXX 功能还没上,为什么 XXX 还不能支持。”不断涌现的客户需求推着团队快速向前。


2019 年 1 月,上线监控告警能力,提升产品保障性;


2019 年 4 月,上线云调用能力,进一步降低开发小程序门槛,提升研发效率;


2019 年 5 月,新增智能客服解决方案,与即速等服务商开展合作;


2019 年 7 月,上线预付费能力,正式成为商用产品;


2019 年 8 月,上线实时推送能力,切入小游戏引擎市场;


2019 年 9 月,上线代金券和新套餐,支持企业用户灵活购买;


……


伴随着高频率的功能上新,小程序·云开发的技术逐渐成熟。


云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,与开发者已经使用的云服务相互兼容,并不互斥。


那么,小程序·云开发如何让前端开发者无需考虑后端实现,专注于业务开发呢?这就不得不提到小程序·云开发提供的两大能力:基础能力及腾讯云基于小程序·云开发输出的增值能力



小程序·云开发的基础能力是依托微信生态,深度定制高频云产品组件,提供便捷的、一体化的小程序原生基础产品能力,目前包括云函数、云数据库、云存储、云调用等服务。


  • 云函数:一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。并在开放了运用 Node.js 等框架编写“后端”业务逻辑后,直接可以部署在云平台下,不需要去考虑域名、服务器、打包发布、运维等琐事。

  • 云数据库:既可以在小程序前端操作,也能在云函数中读写的 JSON 数据库,不再受限于关系型数据库复杂的操作模式构建,数据管理上非常简洁。最近,小程序云开发新上线数据库实时推送能力,它可以优化升级诸如聊天、棋牌类游戏、订单状态同步等等很多长连接、实时交互场景下的开发体验,可以说,数据库实时推送能力对于小程序的功能完善上来说,有非常重要的意义。

  • 云存储:云开发提供了一块文件存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云文件存储功能。同时具备默认配置域名、无需自建 CDN 的特点。

  • 云调用:打通云函数来简化鉴权,腾讯云和微信两边有打通鉴权的功能,把鉴权的工作自动化。


而腾讯云基于小程序·云开发输出的增值能力,核心为打通云开发与公有云服务链路,提供丰富小程序应用场景,并整合图像识别、音视频以及其它腾讯云基础产品的能力,通过模块化一键部署至云函数,不需要后台开发,后续只需要调用函数即可实现功能。


不仅如此,腾讯云基于小程序·云开发输出的增值能力在进一步减少小程序开发技术需求的同时,以业务场景为入口,借助云开发能力,不断降低新技术的使用门槛。其中,开发者们最为期待的当属 AI 与小程序的结合。

AI 场景中落地

当下,AI 技术浪潮正改变我们生活的方方面面,很多开发者都有过在自己项目中使用 AI 技术的想法。然而由于入门 AI 的难度比较大,并且上手时间较长,许多开发者在小程序研发筹备期就放弃了。而在近日,小程序·云开发上线 AI 增值服务,通过文档或者代码的形式,降低小程序 AI 使用门槛,让开发者在研发中轻松调用 AI 服务,满足不同小程序业务场景的个性化需求。


在要求实时性较强的 AI 场景下,因为依赖强计算力,如果将原有的技术方案直接在小程序本端运行,就会出现一些性能上的问题。那么,针对此类问题,小程序·云开发又是如何解决的呢?


首先,团队会对项目进行技术评估,确保在微信小程序框架下具可行性;其次应用测试中对性能进行评估,适配不同机型、不同设备上的内存限制以及 CPU 限制;最后在代码层面上通过编译等手段使用单一数据类型,减少运行时类型推断与隐式转换,加快执行效率。同时采用手动控制内存的方式,防止内存频繁开辟回收引起的性能与资源问题。


目前,腾讯云基于小程序·云开发输出的增值能力已全面开放了增值服务 AI 智能图像能力,其借助了腾讯云人脸识别、人脸核身和人脸融合功能,通过云开发的云函数和存储,简化素材存储、配置拉取和服务调用 image-node-sdk 等功能,并为企业提供定制化的解决方案,满足不同企业对于小程序功能的不同需求。


以“杰尼亚何谓当代男士小程序”为例。对于为奢侈品牌的定制化需求,在以往开发的过程中,D1M(第一秒)电商科技总会为每个品牌搭建独立的环境,部署整套代码,由于定制开发居多,相对而言代码复用率不高。如何在小程序开发的过程中,以敏捷高效的方式实现具有趣味性的互动,成为 D1M 在开发该小程序初期所面临的最大痛点。在此背景下,D1M 借助腾讯云基于小程序·云开发输出的“AI 滤镜”增值服务,为杰尼亚打造小程序,并将继续推进“人脸融合”功能上线。

应用场景一:新品 T 恤上线明星代言试穿,引导用户滤镜自拍并分享

在微信小程序中每张中等质量的图像原始数据量都在 2M 左右,受限于移动设备与运行环境算力和其他资源,如在小程序本地处理即时对图像进行计算处理及渲染,小程序性能及稳定性将面临巨大挑战。


这时,云开发首先将独有的图像处理算法移植到小程序平台,实现了图像的本地处理,减少上传与下载网络消耗。再加之云开发在性能与系统资源管控方面的优化,AI 滤镜增值能力可使小程序在 20-30ms 内,完成一张 480P 分辨率的图象处理和渲染,这也是腾讯云基于小程序·云开发输出的极具代表性的增值技术能力。



图片来自编辑实测杰尼亚何谓当代男士小程序截屏


基于 AI 滤镜增值能力优越的性能,其不仅可以像传统滤镜服务一样实现照片的处理,还可以在拍摄过程中实现实时的滤镜效果预览。AI 滤镜技术对核心图像处理 API 与集成自定义组件两部分进行插件封装。其中,集成自定义组件基于微信官方组件,封装初始化、监听、处理、渲染、读取等能力,做到了开箱即用。细节上在微信官方组件的回调中,小程序会对摄像头像数据以 30FPS 的帧率进行实时读取,之后结合原始 API 中封装的优图 X-lab 滤镜算法,对像素帧数据进行矩阵运算,最终渲染到 webgl 画布中,屏幕中呈现用户带有滤镜效果的自拍图像。

应用场景二:模特试穿照片与用户自拍的人脸融合(即将上线)

小程序·云开发的另一项 AI 增值能力——人脸融合,封装了腾讯云 AI 团队已有的人脸融合技术能力,在实现函数内免鉴权调用的同时,对两张人像进行脸部融合,进而输出融合图像。但如何获取合适的 【图像主体】 内容,成为人脸融合面临的一大挑战。


面对人脸融合场景难点,人工进行预处理是万无一失的办法,但面对数据巨大的内容信息,基于可直接部署并使用的云函数,并借助腾讯云基于小程序·云开发输出的 AI 人脸特征分析与检测能力,就可以得到图像宽高像素数量,以及图像中人脸的位置、大小、分析属性、质量等信息,根据这些信息就可以准确裁剪。而在云函数的接入过程中,其庞大集群的快速扩容能力,也足以 hold 住百万级,甚至千万级的高并发使用场景。

开发者论道

从以上我们可以看出,小程序·云开发凭借灵活、快速等诸多优点,不仅让应用触手可得,为越来越多的用户带来便利,也成为连接线上与线下、虚拟与现实的利器,承载大量开发者与各个产业进行连接的使命。


为了加强与开发者的沟通,10 月 19 日,微信小程序和腾讯云团队将联合举办首次「小程序·云开发」技术峰会


届时,微信小程序团队和腾讯云团队将联袂解读「小程序·云开发」的最新能力,为小程序开发者升级工具箱;顶级技术大牛将讲解前端技术最新的发展趋势,帮助开发者拓展技术视野;腾讯内外部的技术团队,也将分享基于「小程序·云开发」高效打造小程序的实战经验。



公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-10-12 15:172140
用户头像

发布了 35 篇内容, 共 21.5 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

C++精通之路:设计模式(特殊类设计)

雪芙花

c c++ 10月月更

DevOps|从特拉斯辞职风波到研发效能中的荒唐事

laofo

DevOps cicd 研发效能 持续交付 敏捷研发

HashMap源码分析(四)

知识浅谈

hashmap 10月月更

【LeetCode】下一个更大元素单调栈Java题解

Albert

算法 LeetCode 10月月更

网络入门(基础知识和网络整体的认识)

雪芙花

c c++ 10月月更

规划兼职工作

掘金安东尼

算法 10月月更

牛客刷题系列之进阶版(组队竞赛,排序子序列,倒置字符串, 删除公共字符,修理牧场)

雪芙花

c c++ 10月月更

从源码分析MGR的新主选举算法

乌龟哥哥

10月月更

Photoshop软件应用项目(四)

张立梵

设计师 ps 10月月更

“程”风破浪的开发者|一文GET钉钉连接平台

六月的雨在InfoQ

学习方法 钉钉宜搭 10月月更 “程”风破浪的开发者 钉钉连接平台

在线问题反馈模块实战(十二)​:实现图片删除功能

bug菌

springboot 项目开发 10月月更

Linux系统-进程控制

可口也可樂

Linux 10月月更 Linux进程

极客时间运维进阶训练营第一周作业

9527

【微信小程序】带你进入小程序的世界

hacker707

微信小程序 10月月更

鸿蒙开发实例 | 分布式涂鸦

TiAmo

华为 华为云 云开发 10月月更

在线问题反馈模块实战(十)​:实现图片预览功能

bug菌

springboot 项目开发 10月月更

0:数据库的产生-MySQL

Yeats_Liao

数据库 后端 10月月更

【web 开发基础】PHP 快速入门(6)-PHP 运算符之赋值运算符详解

迷彩

10月月更 web开发基础 PHP基础

数据湖(七):Iceberg概念及回顾什么是数据湖

Lansonli

数据湖 10月月更

不错的项目管理系统厂商有哪些?

PingCode

在线问题反馈模块实战(十一)​:实现图片下载功能

bug菌

springboot 项目开发 10月月更

【Java深入学习】一个关于“锁”的程序-中

Geek_65222d

10月月更

【kafka原理】消费者提交已消费的偏移量

石臻臻的杂货铺

kafka Kafka实战 10月月更

Kafka消费者JoinGroupRequest流程解析

石臻臻的杂货铺

kafka Kafka实战 10月月更

Linux系统-进程地址空间

可口也可樂

Linux 10月月更 Linux进程地址空间

开源软件与开源协议的法律问题分析

Andy

开源 架构 调研

Ubuntu 设置中文语言环境

Yeats_Liao

ubuntu 后端 10月月更

Photoshop软件应用项目(五)

张立梵

设计师 ps 10月月更

Docker常用命令小记

程序员欣宸

Docker 容器化 10月月更

使用 SAP Business Application Studio 创建 Fiori Elements 应用显示 OData 服务的数据

Jerry Wang

云原生 Cloud SAP 10月月更 btp

Linux系统-进程概念

可口也可樂

Linux 10月月更 Linux进程

别再纠结后端了,小程序开发这么做_语言 & 开发_一点小小苏_InfoQ精选文章