Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoderSmallfan
uni-app
提交
65e0e97c
U
uni-app
项目概览
CoderSmallfan
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
65e0e97c
编写于
4月 04, 2020
作者:
W
wanganxp
提交者:
GitHub
4月 04, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update quickstart.md
上级
a5b6cbee
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
155 deletion
+21
-155
docs/uniCloud/quickstart.md
docs/uniCloud/quickstart.md
+21
-155
未找到文件。
docs/uniCloud/quickstart.md
浏览文件 @
65e0e97c
...
...
@@ -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) => {
```
<span
id=
"common"
></span>
## 云函数公用模块
自
`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
}
}
```
<span
id=
"rundebug"
></span>
## 运行和调试云函数
编写云函数后,在项目管理器里右键点击该云函数的目录,在弹出菜单中可选择“上传部署云函数”、“上传并运行测试云函数”。如下图所示:
前者仅完成部署,后者会在部署后同时运行,并打印日志出来。
在云函数对应的目录右键可以配置运行测试参数,如下图,选择之后会生成一个形如
`${函数名}.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中对云函数目录点右键,或者在帮助菜单中,均有入口链接。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录