目录
基本概念
云函数即在云端(服务器端)运行的函数。
从 HBuilderX 3.4起,新增了云函数的扩展版,云对象。
开发者无需购买、搭建服务器,只需编写代码并部署到云端即可在客户端(App/Web/小程序等)调用,同时云函数之间也可互相调用。
一个云函数的写法与一个在本地定义的 JavaScript
方法无异,代码运行在云端 Node.js
中。当云函数被客户端调用时,定义的代码会被放在 Node.js
运行环境中执行。
开发者可以如在 Node.js
环境中使用 JavaScript
一样在云函数中进行网络请求等操作,也可以使用 node_modules。
但 DCloud提供了 uniCloud对象 内置在云函数/云对象中,开发者使用更多的是 uniCloud 的 api,不了解 node 不影响开发。
HBuilderX 3.0起版本,在uniCloud/cloudfunctions
目录右键创建云函数,如下:
在HBuilderX 3.4起,上述界面更新为 新建云函数/云对象。
云对象本质是对云函数的一种封装,可以对象化的方式使用云服务。
HBuilderX 3.0之前版本,项目下没有uniCloud
目录,直接在cloudfunctions
目录上右键、新建云函数
云函数修改后,可以本地运行。只有上传到云端,方可在云端生效。
更多云函数介绍参考规范。
简介
云函数是运行在云端的 JavaScript
代码,是基于 Node.js
的扩展。
在常规的 Node API
基础上,uniCloud的云函数环境内置了uniCloud
对象,这个对象内置了网络、数据库等各种API。开发者未学习过 Node.js
也没有关系,只需要看uniCloud的文档,掌握这个uniCloud
对象的API即可。
每个云函数是一个js包,在云函数被调用时,由 serverless 调度系统分配硬件资源启动一个 node 环境来运行这个云函数。
在HBuilderX中可以新建云函数(HBuilderX 3.4 同时可以新建云对象)。
每个云函数是一个目录,其中普通云函数有index.js
入口文件,云对象的入口文件则是index.obj.js
。
一个最简单的云函数只需要这个入口js文件,在里面编写代码即可。当然也可以在这个js中require该云函数目录下的其他js、json文件。
云函数的配置文件和 npm规范 相同,在云函数目录下可新建一个 package.json 来存放配置。uniCloud云函数扩展了 package.json,增加了一些特有的配置项。详见
云函数启动后实例会保留一段时间(如15分钟),超过保留期后若该云函数一直没有被再调用,那这个实例会被释放。所以云函数有冷启动的概念。不过由于js实例的启动要比php和java更快,所以js更适合serverless方式。
注意事项
- 云函数内使用commonjs规范,不可使用import、export,参考:commonjs模块
- 不同项目使用同一个服务空间时,不可使用同名云函数。同名云函数会相互覆盖。
- 在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。所以应先选择从服务空间下载云函数。
- 单个云函数大小限制为10M(包含
node_modules
),过大的云函数影响运行性能,也会增加计费的gbs。同时支付宝小程序云与腾讯云支持在云端安装node_modules
,此时不占用云函数体积。- uniCloud的阿里云版与支付宝小程序云版,暂不可使用相对路径读取文件(比如
fs.readFileSync('./info.txt')
),可以使用绝对路径fs.readFileSync(path.resolve(__dirname,'./info.txt'))
快速上手
云函数是运行在云端的 JavaScript 代码,是基于 Node.js 的扩展
在常规的 Node API 基础上,uniCloud 的云函数环境内置了 uniCloud 对象,这个对象内置了网络、数据库等各种API。开发者未学习过 Node.js 也没有关系,只需要看 uniCloud 的文档,掌握这个 uniCloud 对象的API即可。
每个云函数是一个js包,在云函数被调用时,由 serverless 调度系统分配硬件资源启动一个 node 环境来运行这个云函数。
操作数据库
1.新建云函数
云函数目录下 - 新建云函数/云对象