diff --git a/docs/uniCloud/quickstart.md b/docs/uniCloud/quickstart.md index b48fde43c819c4f866d551dd00e7bfec09917e3e..b0a1811d1d66a3d3632dd8b4afcfdd593bb2d182 100644 --- a/docs/uniCloud/quickstart.md +++ b/docs/uniCloud/quickstart.md @@ -10,29 +10,6 @@ uniCloud云开发环境创建成功后,项目根目录下会有一个带有云图标的特殊目录,名为“cloudfunctions”。(即便是cli创建的项目,云函数目录也在项目的根目录下,而不是src下) -**选择腾讯云作为服务商时,只可以创建一个服务空间(此服务空间免费),且此服务空间资源用量有限额,目前限额如下表** - -|资源类别 |子类目 |限制 |说明 | -|:-: |:-: |:-: |:-: | -|云函数 |硬件资源用量 |4万GBs/月|腾讯云最小计费粒度为256MB*100ms,即使用内存固定为256MB,运行时间以100ms为阶梯计算| -| |外网出流量 |1GB/月 |- | -| |云函数同时连接数 |1000个/云函数 |超出此连接数的请求会直接失败 | -| |云函数数目 |50个 |- | -|云存储 |容量 |5GB |- | -| |下载操作次数 |150万/月 |- | -| |上传操作次数 |60万/月 |- | -| |CDN回源流量 |5GB/月 |- | -|CDN |CDN流量 |5GB/月 |- | -|云数据库 |容量 |2GB |- | -| |读操作数 |5万次/天 |- | -| |写操作数 |3万次/天 |- | - -**阿里云免费版限制如下** - -|资源类别 |子类目 |限制 |说明 | -|:-: |:-: |:-: |:-: | -|云函数 |云函数同时连接数 |1000个/服务空间|- | -| |云函数数目 |49个 |- | ## 创建和绑定服务空间 @@ -40,6 +17,8 @@ 一个开发者可以拥有多个服务空间,每个服务空间都是一个独立的serverless云环境,不同服务空间之间的云函数、数据库、存储都是隔离的。 +**注:公测期间,选择腾讯云作为服务商时,只可以创建一个服务空间,并且需要申请。阿里云无限制** + 服务空间和手机端项目是多对多绑定关系。同账号下,一个项目可以关联到多个服务空间。一个服务空间也可以被多个项目访问。 - 在云函数目录`cloudfunctions`右键菜单创建服务空间,会打开web控制台[https://unicloud.dcloud.net.cn](https://unicloud.dcloud.net.cn) 进行创建 @@ -53,7 +32,6 @@ - 如果未进行实名认证,会跳转至实名认证页面进行实名认证,等待实名认证审核之后可以开通服务空间 - 创建服务空间可能需要几分钟的时间,可以在控制台查看是否创建完成 - 一个应用,可以在[dev.dcloud.net.cn](https://dev.dcloud.net.cn)设置协作者(选择应用->设置项目成员),实现多人共同使用一个云服务空间。(需 HBuilderX 2.5.9+) -- 如果一个项目只对应一个服务空间,此时前端可直接使用这个服务空间。如果一个项目绑定了多个服务空间,则需要先做初始化,具体参考:[https://uniapp.dcloud.io/uniCloud/init](https://uniapp.dcloud.io/uniCloud/init) ## 创建云函数 @@ -65,7 +43,7 @@ **注意** - 不同项目使用同一个服务空间时,不可使用同名云函数,可以在uniCloud的web控制台手动删除重名云函数释放函数名。 -- 创建时目前版本不校验重名,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。请务必注意。后续会修复此问题。 +- 在HBuilderX创建云函数时,如果新云函数与服务器上已存在同名云函数,会用新函数覆盖。 - 单个云函数大小限制为10M(包含node_modules) ## 编写云函数 @@ -86,93 +64,11 @@ exports.main = async (event, context) => { ``` - -## 云函数公用模块 - -自`HBuilderX 2.6.6-alpha`起,uniCloud提供了云函数模块公用方案。以下面的目录结构为例,介绍一下如何使用。 - -``` -|--cloudfunctions - |--common // 云函数公用模块目录 - |--hello-common // 云函数公用模块 - |--package.json // 在 hello-common 目录执行 npm init -y 生成 - |--index.js // 公用模块代码,可以不使用index.js,修改 package.json 内的 main 字段可以指定此文件名 - |--useCommon // 使用公用模块的云函数 - |--package.json // 在 useCommon 目录执行 npm init -y 生成 - |--index.js // 云函数入口文件 -``` - -**创建并引入公用模块** - -1. 在`cloudfunctions`目录下创建`common`目录 -2. 在`common`目录下创建公用模块目录(本例中为`hello-common`),创建入口`js`文件 -3. 在`hello-common`目录下执行`npm init -y`,此时会生成`package.json`文件,可以修改`main`字段指定`hello-common`模块入口文件名,**不要修改此package.json的name字段** -4. 在`hello-common`右键上传公用模块 -4. 在要引入公用模块的云函数目录(本例中为`useCommon`)执行`npm init -y`生成`package.json`文件 -5. 在`useCommon`目录执行`npm install ../common/hello-common`引入`hello-common`模块 - -**注意事项** - -- 如需修改公用模块需要在`common`目录下修改,修改之后不需要重新执行`npm install`。 -- 如果要更新所有依赖某公用模块的云函数,可以在`common`目录下的公用模块目录(本例中为`hello-common`)右键选择`更新依赖本模块的云函数` - -**使用公用模块** - -仍以上面的目录为例,在公用模块内`exports`,在云函数内`require`即可。示例代码如下: - -```js -// common/hello-common/index.js -function getVersion() { - return '0.0.1' -} -module.exports = { - getVersion, - secret: 'your secret' -} -``` - -```js -// useCommon/index.js -'use strict'; -const { - secret, - getVersion -} = require('hello-common') -exports.main = async (event, context) => { - let version = getVersion() - return { - secret, - version - } -} -``` - -如果仅需要导出一个function还可以使用以下写法 - -```js -// common/hello-common/index.js -module.exports = function(e){ - return e -} -``` - -```js -// useCommon/index.js -'use strict'; -const echo = require('hello-common') -exports.main = async (event, context) => { - let eventEcho = echo(event) - return { - eventEcho - } -} -``` - + ## 运行和调试云函数 编写云函数后,在项目管理器里右键点击该云函数的目录,在弹出菜单中可选择“上传部署云函数”、“上传并运行测试云函数”。如下图所示: - 前者仅完成部署,后者会在部署后同时运行,并打印日志出来。 在云函数对应的目录右键可以配置运行测试参数,如下图,选择之后会生成一个形如`${函数名}.param.json`的文件,此文件内容会在云函数`上传并运行`时作为参数传入云函数内。 @@ -181,12 +77,18 @@ exports.main = async (event, context) => { 云函数目前无法断点debug,只能打印`console.log`看日志。 -![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-run-function-1.png) - ![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-run-function.png) ![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-run-function-2.png) +**运行云函数时配置运行测试参数** + +在云函数的上传运行菜单或右键菜单中,有`配置运行测试参数`的功能。 + +可以打开一个json,配置运行参数。配置该json后,运行云函数时会将该json作为云函数调用的上行参数处理,可以在云函数中接收到参数。 + +![](https://img.cdn.aliyun.dcloud.net.cn/uni-app/uniCloud/uniCloud-run-function-1.png) + ## 手机端调用云函数 在uni-app的前端代码中,通过`uniCloud.callFunction`方法调用云函数。详见[callFunction文档](https://uniapp.dcloud.io/uniCloud/functions?id=callfunction) @@ -211,13 +113,13 @@ uniCloud.callFunction({ ## 手机端看日志 -uni-app运行在各端,均可查看手机端日志。额外的,在App真机运行模式下,在HBuilderX的自带控制台也会打印云函数输出的`console.log`。 +uni-app运行在各端,均可在查看手机端日志。额外的,在App真机运行模式下,在HBuilderX的真机运行控制台除了打印手机端日志,也会打印云函数输出的`console.log`。 **App端真机调试输出云函数日志,如下图所示** 所执行云函数代码 -``` +```javascript 'use strict'; exports.main = async (event, context) => { console.log('------------'); @@ -236,7 +138,7 @@ exports.main = async (event, context) => { - 运行到H5,需要在浏览器的控制台查看日志,但仅包含前端日志,不包含云函数内部的console.log。 - 运行到小程序,需要在小程序开发工具的控制台查看日志,但仅包含前端日志,不包含云函数内部的console.log。 -目前uniCloud的web控制台还不能查看运行日志,后续会提供此功能。 +uniCloud的[web控制台](https://unicloud.dcloud.net.cn/)可以查看线上云函数的所有运行日志,而不仅仅是开发时的运行日志。 ## 小程序中使用uniCloud @@ -246,10 +148,10 @@ exports.main = async (event, context) => { 根据下表,在小程序管理后台设置request合法域名、uploadFile合法域名(如没有上传文件业务,可不设置)。下表的域名均为阿里云或腾讯云自有域名,并非DCloud所属域名。 -|服务提供商 |request合法域名|uploadFile合法域名 | -|:-: |:-: |:-: | -|阿里云 |api.bspapp.com |bsppub.oss-cn-shanghai.aliyuncs.com| -|腾讯云 |tcb-api.tencentcloudapi.com |cos.ap-shanghai.myqcloud.com| +|服务提供商 |request合法域名 |uploadFile合法域名 | +|:-: |:-: |:-: | +|阿里云 |api.bspapp.com |bsppub.oss-cn-shanghai.aliyuncs.com| +|腾讯云 |tcb-api.tencentcloudapi.com|cos.ap-shanghai.myqcloud.com | 小程序开发工具的真机预览功能,必须添加上述域名白名单,否则无法调用云函数。模拟器的PC端预览、真机调试不受此影响。 @@ -286,42 +188,6 @@ H5前端js访问云函数,涉及跨域问题,导致前端js无法连接云 如果不发布H5,使用uniCloud不需要自己申请或准备域名。App和小程序里直接调用云函数即可。 -## 使用db_init.json初始化项目数据库 - -自`HBuilderX 2.5.11`起`uniCloud`提供了`db_init.json`来方便开发者快速进行数据库的初始化操作。 - -**使用说明** - -- 在`cloudfucntions`目录右键即可创建`db_init.json`, -- 在`db_init.json`上右键初始化数据库。 - -**db_init.json形式如下** - -``` -{ - "collection_test": { // 集合(表名) - "data": [ // 数据 - { - "_id": "da51bd8c5e37ac14099ea43a2505a1a5", - "name": "tom" - } - ], - "index": [{ // 索引 - "IndexName": "index_a", // 索引名称 - "MgoKeySchema": { // 索引规则 - "MgoIndexKeys": [{ - "Name": "index", // 索引字段 - "Direction": "1" // 索引方向,1:ASC-升序,-1:DESC-降序,2dsphere:地理位置 - }], - "MgoIsUnique": false // 索引是否唯一 - } - }] - } -} -``` - -**Bug&Tips** -- 早期阿里云的云函数的初次冷启动较慢,表现为某个云函数第一次被调用时联网时间较长,可能要5秒左右。第二次即可正常。此问题阿里云已优化,重新上传部署云函数后生效。 -- web控制台网址:[http://unicloud.dcloud.net.cn](http://unicloud.dcloud.net.cn),在HX中对云函数目录点右键,或者在帮助菜单中,均有入口链接。 - +**Tips** +- web控制台网址:[https://unicloud.dcloud.net.cn](https://unicloud.dcloud.net.cn),在HX中对云函数目录点右键,或者在帮助菜单中,均有入口链接。