了解uniCloud最好的途径就是官方网站,其中有两个部分的内容,是我们做技术选型的时候,需要了解的。
什么是 uniCloud ?
uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。
uniCloud 的价值
对于程序员,从此你又get一个新技能,用熟悉的js,轻松搞定前后台整体业务。
对于开发商:
开发成本大幅下降。不用再雇佣php或java等服务器工程师,每年至少节省几十万;
你只需专注于你的业务,其他什么服务器运维、弹性扩容、防DDoS攻击,全都不需要操心;
如果不发布H5版,你将不需要购买备案域名。小程序和App可以免域名使用服务器;
对于敏捷性业务,前后端分离的沟通成本实在没有必要。可以考虑按业务负责分工,而不是按前后台分工。
uniCloud 的运行原理
开发和运行流程
开发者在HBuilderX里为项目新建 uniCloud 云环境(可选择阿里云或腾讯云),在云函数目录下编写js代码,上传部署云函数到阿里云或腾讯云的 serverless 环境中。
前端代码通过uniCloud.callFunction()方法调用云函数。
云函数中可执行js运算、读写云化数据库(NoSQL)、读写存储和CDN、操作网络,给前端返回数据
开发过程,连接DCloud服务器;运行过程是手机端直连阿里云或腾讯云 serverless 环境,不通过DCloud服务器中转。
uniCloud 的底层环境,和微信小程序云开发、支付宝小程序云开发的基建环境相同。功能、性能、稳定性有足够的保障。腾讯云云开发(CloudBase)提供基础 serverless 能力,微信团队基于该能力封装了微信云开发,而DCloud团队基于该能力封装了 uniCloud。阿里云类似。
小程序云开发已蔚然成风,微信小程序、支付宝小程序、百度小程序均提供了云开发。微信公布已有50万以上的开发者在使用云开发了,微信自己的生活缴费、乘车码等大日活应用均使用云开发。不过这个流行技术一直无法跨端,它们都只支持各自的小程序。uniCloud解决了跨端问题,让uni-app的所有端应用,都可以使用云开发这个利器。
uniCloud 基建部分主要包括如下3部分:
云函数:在云端运行的js代码。运行在定制过的node环境中,有良好的性能和强大的功能。serverless环境无需自行加购服务器处理增容,云函数按量付费,不管多大的并发都扛得住(阿里云serverless已经经过了双11的考验)。
数据库:可在云函数中读写的、基于 NoSQL 的 JSON 数据库。这种数据库对于前端工程师更自然,不需要学习SQL、不需要理解关系型和设计主键。
存储和CDN:不管在前端还是云函数中,都可以操作存储和CDN。在uniCloud提供的安全机制下,可以实现应用前端直传CDN,避免服务器中转的耗时和带宽占用,且不会发生盗传。
uniCloud 目前计费系统还未开发完毕,暂时免费。计费系统上线后,收费标准也会低于传统云主机租用费用。
看到这里,有莫有很心动?
云开发确实是未来的趋势。作为全栈工程师需要用拥抱变化的心态,大胆尝试前人开发的轮子。
和uni—app一样,我们也快速上手一下uniCloud,按照官网上快速上手的步骤 Hello uniCloud 一下。
1
创建uniCloud项目
创建项目的时候,按照下图中标注的地方,设置即可。
2
创建和绑定服务器
PS:如果创建云服务器选项是灰的,就直接访问:
进行云服务器创建也是可以的。
说明
如果未进行实名认证,会跳转至实名认证页面进行实名认证,等待实名认证审核之后可以开通服务空间。若腾讯云实名认证提示身份证下已创建过多账户,则需要在腾讯云官网注销不用的账户。
创建服务空间可能需要几十秒的时间,可以在web控制台查看是否创建完成。
一个应用,可以在dev.dcloud.net.cn设置协作者(选择应用->设置项目成员),实现多人共同使用一个云服务空间。(需 HBuilderX 2.5.9+)需要注意的是目前协作者不可通过web控制台访问服务空间。
3
云函数的创建、编写、运行、调试
新建云函数
创建后会以云函数名称为名生成一个特殊目录,该目录下自动生成index.js,是该云函数的入口文件,不可改名。如果该云函数还需要引入其他js,可在index.js入口文件中引用。
注意
不同项目使用同一个服务空间时,不可使用同名云函数,可以在uniCloud的web控制台手动删除重名云函数释放函数名。
在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。
单个云函数大小限制为10M(包含node_modules)
编写云函数
云函数的语法,是在普通的Node.js基础上补充了uniCloud的专用API。可参考API开发文档编写,也可以直接新建项目时选择hello uniCloud模板体验。
HBuilderX为uniCloud开发提供了良好的语法提示和转到定义支持,对于代码中的API,选中并按下F1,也可以直接查看相应的文档。
如下为一个云函数示例
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
//event为客户端上传的参数
const collection = db.collection('unicloud-test') // 获取表'unicloud-test'的集合对象
const res = await collection.limit(10).get() // 获取表中的10条数据,结果为json格式
return res // 返回json给客户端
};
运行和调试云函数
编写云函数后,在项目管理器里右键点击该云函数的目录,在弹出菜单中可选择“本地运行云函数”、“上传部署云函数”、“上传并运行云函数”。
本地运行云函数:即在HBuilderX自带的node环境中运行选中的云函数。云函数连接的数据库和云存储,仍然在云端。(从HBuilderX 2.8.1起支持)
上传部署云函数:将云函数部署到uniCloud服务空间,不会运行。(快捷键Ctrl+u)
上传并运行云函数会:先上传云函数,并在云端立即执行该云函数。在部署后同时运行,并打印日志出来。有延时,调试时不如本地运行云函数快捷。
在云函数编辑器里,按Ctrl+r运行快捷键(或点工具栏的运行),可看到运行云函数的若干菜单。Ctrl+r然后回车或选0,即可高效的在控制台看到运行结果和日志输出。如下图所示:
云函数目前无法断点debug,只能打印console.log看日志。
4
小程序中使用uniCloud的白名单配置
各家小程序平台,均要求在小程序管理后台配置小程序应用的联网服务器域名,否则无法联网。
使用uniCloud后,开发者将不再需要自己购买、备案域名,直接将uniCloud的域名填写在小程序管理后台即可。
例如选择的是阿里云服务商,在request合法域名处填写:域名即可。
具体步骤:
1、微信公众平台,登陆的时候,填写注册小程序时,所用的邮箱和密码
2、开发-》开发管理-》服务器域名,按照下图中标注的进行修改即可。
技术选型后,确定了采用的方案:uni-app+uniCloud云开发。由于是第一次使用,需要投入一定的学习时间。这就是全栈开发者的“命”,好在每一次的技术更新和迭代后,都是越来越降低开发难度的。
发表评论 取消回复