『全栈开发』小程序开发过程全记录(三):技术选型, uniCloud云开发测评

『全栈开发』小程序开发过程全记录(三):技术选型, uniCloud云开发测评
菜鸟
菜鸟
116
阅读
0
评论
2021年10月25日08:04:07 0 116

了解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云开发。由于是第一次使用,需要投入一定的学习时间。这就是全栈开发者的“命”,好在每一次的技术更新和迭代后,都是越来越降低开发难度的。


余额充值 点赞(0)
weinxin
账号+金额发此微信
充值后请把会员账号/用户名+充值金额发送到此微信:tourism52
历史上的今天
01月
18
简单,工厂,模式,下面,例子,中,鼠标,键盘,耳麦, 菜鸟教程

简单工厂模式

下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。 简单工厂模式 简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。 比如下图中的鼠标工厂,专业生产鼠...
WML,实体,WML,实体,字符,有,三,部分,一个,和,号, 菜鸟教程

WML 实体

WML 实体 字符实体 字符实体有三部分:一个和号 (),一个实体名称,或者 # 和一个实体编号,以及一个分号 (;)。 下表列出了 WML 中使用的字符实体: 结果 描述 实体名...
ro,ketmq,如何,保证,消息,可靠性 菜鸟教程

RocketMQ如何保证消息的可靠性?

分布式系统中一个重要的前提假设是所有的网络传输都是不可靠的,在网络传输不可靠的情况下,保证消息的可靠传输,除了进行重试投递别无他法。常用的绝大多数消息队列RocketMQ、Rabb...
$_ENV 菜鸟教程

$_ENV

$_ENV$HTTP_ENV_VARS [已弃用]$_ENV -- $HTTP_ENV_VARS [已弃用] — 环境变量说明通过环境方式传递给当前脚本的变量的数组。 这...

Comment list 共有 0 条评论

暂无评论