uni-cloud使用心得

直奔主题,最近在研究uni-cloud做云开发,总结一下,以便以后参考

先讲一下云开发的基本概念:

1.服务空间

服务空间相当于正常服务里面的服务器,包括数据库、存储空间、云函数等资源,Dcloud和阿里云腾讯云合作,所以每个用户可以免费创建50个阿里云的服务空间,或者1个腾讯云的服务空间以及49个付费的腾讯云服务空间。

新建一个uniapp项目选择云开发,勾选启用unicloud,并选择阿里云或者腾讯云(建议选择阿里云)


在 uniCloud 目录右键菜单中创建服务空间


创建服务空间后,在同样的 uniCloud 目录右键菜单中关联该服务空间。只有项目关联好服务空间后,才能上传云函数、操作服务空间下的数据库、存储等资源。

通过uniCloud的web控制台https://unicloud.dcloud.net.cn 管理服务空间。

2.云函数/云对象

云函数就是运行在服务空间内的js代码在,在unicloud目录下的cloudfunction目录下右键,可以快速创建云函数,云对象


注意事项:

云函数内使用commonjs规范,不可使用import、export,参考:commonjs模块

不同项目使用同一个服务空间时,不可使用同名云函数。同名云函数会相互覆盖。

在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。所以应先选择从服务空间下载云函数。

单个云函数大小限制为10M(包含node_modules),过大的云函数影响运行性能,也会增加计费的gbs。同时腾讯云支持在云端安装node_modules,此时不占用云函数体积。

uniCloud的阿里云版,暂不可使用相对路径读取文件(比如fs.readFileSync('./info.txt')),可以使用绝对路径fs.readFileSync(path.resolve(__dirname,'./info.txt'))

云函数的分类:

云函数有若干子概念,包括 普通云函数、云对象、公共模块、clientDB的action云函数、uniCloud扩展库

普通云函数:通过传统json接口方式和客户端通信,客户端使用uniCloud.callfunction("")调用云函数

云对象:是通过前端导入对象来操作的,客户端使用uniCloud.importObject("")导入云对象

公共模块:用于不同的云函数/云对象,抽取和共享相同代码

action云函数:为了弥补clientDB客户端直接操作数据库的局限而设计的

uniCloud扩展库:为了裁剪和控制云函数体积而设计的,一些不太常用的功能比如Redis,独立为可选扩展库,避免增大每个云函数的体积

普通云函数

callFunction方式云函数,也称之为普通云函数。

前端请求数据不在调用uni.request方法,而是通过uniCloud.callFunction调用云函数

callFunction方式避免了服务器提供域名,不暴露固定ip,减少被攻击的风险。

callFunction方法

uniCloud.callFunction需要一个json对象作为参数,其中包含name(云函数名称),data(客户端需要传递的参数)两个字段,

返回的json数据包括result(云函数中代码return的返回结果)、requestId(云函数请求序列号,用于错误排查,可以在uniCloud web控制台的云函数日志中查到)、header(服务器header信息)、errCode(服务器错误码)、success(执行是否成功)

云对象

云对象,其实是对云函数的封装。和创建云函数一样,在uniCloud/cloudfunctions目录右键新建云函数,选择云对象类型,输入云对象名称创建云对象


客户端通过uniCloud.importObject方法获取云对象的实例,并可以通过此实例调用云对象内的方法

3.云数据库

uniCloud提供了一个 JSON 格式的文档型数据库,数据库中的每条记录都是一个 JSON 格式的文档。

它是 nosql 非关系型数据库,如果之前熟悉 sql 关系型数据库,那么两者概念对应关系如下表:

一个uniCloud服务空间,有且只有一个数据库;一个数据库可以有多个表;一个表可以有多个记录;一个记录可以有多个字段。

云数据库比较复杂,在这一章就不细讲了。感兴趣的可以去看unicloud云数据库文档

4.云存储

云存储的上传方式有3种:

web界面:即在https://unicloud.dcloud.net.cn/ web控制台,点击云存储,通过web界面进行文件上传。该管理界面同时提供了资源浏览、删除等操作界面。

客户端API或组件上传:在前端js中编写uniCloud.uploadFile,或者使用uni ui的FilePicker组件,文件选择+上传均封装完毕。

云函数上传文件到云存储:即在云函数js中编写uniCloud.uploadFile

最后我们讲讲两个基于unicloud的项目模板,我们可以根据这两个开源模板快速开发我们的业务。

5.uni-starter

uni-starter,uni-starter是Dcloud团队研发的基于uni-cloud云开发的云端一体应用快速开发基本项目模版。

uni-starter集成包括:

(1).用户管理: 

uni-starter的用户管理本质是集成了uni-id-pages,它包括众多功能:

登录注册(用户名密码登录、手机号验证码登录、APP一键登录、微信登录、Apple登录、微信小程序登录、手机微信扫码登录、微信公众号内登录)

修改密码、忘记密码、头像更换(集成图片裁剪)、昵称修改、积分查看、退出登录、账号注销

(2)系统设置:

内置App升级中心(整包升级、wgt升级、强制升级,后台搭配uni-admin的升级中心插件管理)

推送开关(app)、清除缓存(app)

指纹解锁(app)、人脸解锁(app)

多语言切换

(3)隐私权限:

内置Android先弹出隐私协议对话框,然后再向用户申请设备权限

(4)权限引导:

当应用拒绝授权某些权限,但在后续使用中又需要这个权限;此时实现:引导用户可“一键跳转至系统设置”中开启。

而不是报错让用户自己去找解决方案(更好的用户体验)。

采用高内聚低耦合的设计结构,直接在应用启动时,应用拦截器中实现。免去在每个业务代码中处理这类问题,更优雅更方便。

已实现项目:摄像头、相册、获取GPS定位、网络2/3/4/5G和Wi-Fi。你可以参考这些实现,处理更多该类场景的处理。uni-starter也会持续更新完善。

6.uni-admin

uni-admin,是基于 uni-app 和 uniCloud 的管理后台项目模版。

uni-admin基于 uni-app 的宽屏适配,可自动适配 PC 宽屏和手机各端。了解宽屏适配

基于 uniCloud,是 serverless 的云开发

基于 uni-id,使用 uni-id 的用户账户、角色、权限系统。

大家可以去看视频了解一下uni-admin

尾声:

今天讲了一些unicloud的理论知识,以及两个基于unicloud的前后端框架,希望能对想要用unicloud开发自己业务的小伙伴有所帮助。后续我也会继续更新,把我自己做的基于uni-starter和uni-admin框架的一个CMS内容管理系统的前后端项目写下来。希望大家能继续支持。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容