写点什么

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

  • 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 日,微信小程序和腾讯云团队将联合举办首次「小程序·云开发」技术峰会


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



2019-10-12 15:172400
用户头像

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

关注

评论

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

Week 10 模块分解

evildracula

学习 架构

第十周作业

hunk

极客大学架构师训练营

架构师训练营 - 大作业一

lucian

关于Dubbo的原理

皮蛋

使用 Serverless 创建一个简单的短网址服务

donghui

flask Serverless Lambda Store

共享单车系统搭建

Geek_a620db

Week10 作业

evildracula

十、服务分解

Geek_28b526

数据库范式与反范式设计,是一门艺术

架构精进之路

数据库 范式

海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js

刘悦的技术博客

Python Docker 容器 镜像 部署

NO.002-Java并发编程之多核硬件架构

葛一凡

操作系统 设计原则 硬件架构

《Python数据科学:关于使用Python处理数据需要了解的终极指南》PDF免费下载

计算机与AI

Python 数据科学

第 5 周学习总结

Binary

极客大学架构师训练营

架构师训练营第2期 第10周作业

月下独酌

极客大学架构师训练营

架构师训练营第2期 第10周总结

月下独酌

极客大学架构师训练营

程序员的bug修复宝典

程序员 经验总结 bug修复

智能合约系统软件开发|智能合约APP开发

系统开发

架构师训练营 第3期 第5周 作业和总结

ihiming

第十周作业总结

hunk

极客大学架构师训练营

6. 抹平差异,统一类型转换服务ConversionService

YourBatman

Spring Framework 类型转换 Converter ConversionService

数据可视化平台搭建,警务实战平台大数据应用

t13823115967

数据可视化 可视化数据分析搭建 警务实战平台

掌趣电竞系统开发搭建

Geek_a620db

第 10 周 系统架构总结

心在那片海

生产环境全链路压测建设历程 21:某快递 A 股上市公司的生产压测案例之彩蛋 2 中篇

数列科技杨德华

全链路压测 七日更

架构师训练营 - 大作业二

lucian

第 5 周作业提交

Binary

极客大学架构师训练营

深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc)

Silently9527

Java mvc springmvc

全1子串算法求解、单元测试的必要性论述 John 易筋 ARTS 打卡 Week 32

John(易筋)

ARTS 打卡计划 全1子串算法求解 单元测试必要性

物联网方面的竞赛有那些?

IoT云工坊

面试官:说说操作系统微内核和Dubbo微内核?

yes

dubbo 操作系统 微内核

指尖上的警务,打造微警务管理服务平台

t13823115967

智慧警务系统开发 微警务

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