Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
78144cb4
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
730
Star
38707
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
未验证
提交
78144cb4
编写于
10月 31, 2020
作者:
W
wanganxp
提交者:
GitHub
10月 31, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update cf-functions.md
上级
b147a1c5
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
34 addition
and
5 deletion
+34
-5
docs/uniCloud/cf-functions.md
docs/uniCloud/cf-functions.md
+34
-5
未找到文件。
docs/uniCloud/cf-functions.md
浏览文件 @
78144cb4
...
@@ -38,17 +38,34 @@ exports.main = async (event, context) => {
...
@@ -38,17 +38,34 @@ exports.main = async (event, context) => {
)传入
`debugFunction: false`
来实现客户端直连调用,需要注意的是此时控制台将不会打印云函数日志。
)传入
`debugFunction: false`
来实现客户端直连调用,需要注意的是此时控制台将不会打印云函数日志。
云函数中如果要使用其他服务(比如mysql数据库、redis等),可以按照nodejs的写法即可。
云函数中如果要使用其他服务(比如mysql数据库、redis等),可以按照nodejs的写法即可。
但注意这些非uniCloud数据库和云函数运行环境不在一起,访问速度受影响。
**注意事项**
**注意事项**
-
服务商为阿里云时,暂不可使用相对路径读取文件(比如
`fs.readFileSync('./info.txt')`
),可以使用绝对路径
`fs.readFileSync(path.resolve(__dirname,'./info.txt'))`
-
服务商为阿里云时,暂不可使用相对路径读取文件(比如
`fs.readFileSync('./info.txt')`
),可以使用绝对路径
`fs.readFileSync(path.resolve(__dirname,'./info.txt'))`
## API列表
云函数支持nodejs和js的标准API,但除了标准API外,uniCloud扩展了一批新API,实际开发中更常用的是uniCloud的扩展API。见下:
|API |描述 |
|-- |-- |
|uniCloud.callFunction() |云函数中调用另一个云函数
[
见下
](
uniCloud/cf-functions?id=callbyfunction
)
|
|uniCloud.database() |云数据库对象
[
详情
](
uniCloud/cf-database.md
)
|
|uniCloud.uploadFile() |云函数上传文件到云存储
[
详情
](
uniCloud/storage?id=uploadfile
)
|
|uniCloud.downloadFile() |云函数下载云存储的文件到云函数运行环境
[
详情
](
uniCloud/storage?id=clouddownloadfile
)
|
|uniCloud.deleteFile() |云函数删除云存储的文件
[
详情
](
uniCloud/storage?id=deletefile
)
|
|uniCloud.getTempFileURL() |获取云存储文件的临时路径
[
详情
](
uniCloud/storage?id=gettempfileurl
)
|
|uniCloud.httpclient |云函数中通过http连接其他系统
[
见下
](
uniCloud/cf-functions?id=httpclient
)
|
|uniCloud.logger |云函数中打印日志到uniCloud日志记录系统(非HBuilderX控制台)
[
详情
](
uniCloud/cf-logger
)
|
|uniCloud.sendSms() |发送短信
[
详见
](
uniCloud/send-sms.md
)
|
## 访问数据库
## 访问数据库
云函数中支持访问本服务空间下的数据库,调用方式详见
[
规范
](
uniCloud/cf-database.md
)
云函数中支持访问本服务空间下的数据库,调用方式详见
[
规范
](
uniCloud/cf-database.md
)
## 访问HTTP服务
## 访问HTTP服务
@httpclient
`uniCloud`
提供了
`uniCloud.httpclient`
供开发者使用。无需额外依赖,就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。
`uniCloud.httpclient`
返回的是一个
[
urllib实例
](
https://github.com/node-modules/urllib
)
。
`uniCloud`
提供了
`uniCloud.httpclient`
供开发者使用。无需额外依赖,就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。
`uniCloud.httpclient`
返回的是一个
[
urllib实例
](
https://github.com/node-modules/urllib
)
。
...
@@ -113,13 +130,17 @@ console.log(res)
...
@@ -113,13 +130,17 @@ console.log(res)
## 使用npm
## 使用npm
在云函数中我们可以引入第三方依赖来帮助我们更快的开发。
云函数的运行环境是
`Node.js`
,因此我们可以使用
`npm`
安装第三方依赖。
云函数的运行环境是
`Node.js`
,因此我们可以使用
`npm`
安装第三方依赖。
注意:鉴于阿里云的限制,目前仅支持全量上传云函数(整个 node_modules文件夹全部上传),因此提醒大家,精简依赖,否则可能会每次上传时间很慢,影响开发体验。
注意:鉴于阿里云的限制,目前仅支持全量上传云函数(整个 node_modules文件夹全部上传),因此提醒大家,精简依赖,否则可能会每次上传时间很慢,影响开发体验。
并且太大的npm库影响云函数的运行性能。
Tips:
Tips:
-
目前每个云函数上传包大小限制为10M。
-
目前每个云函数上传包大小限制为10M。
## 公共模块
云函数支持公共模块。多个云函数的共享部分,可以抽离为公共模块,然后被多个云函数引用。
[
详见
](
uniCloud/cf-common
)
## 客户端调用云函数
## 客户端调用云函数
前端代码(H5前端、App、小程序),不再执行uni.request联网,而是通过
`uniCloud.callFunction`
调用云函数,
`callFunction`
定义如下:
前端代码(H5前端、App、小程序),不再执行uni.request联网,而是通过
`uniCloud.callFunction`
调用云函数,
`callFunction`
定义如下:
...
@@ -187,6 +208,15 @@ let callFunctionResult = await uniCloud.callFunction({
...
@@ -187,6 +208,15 @@ let callFunctionResult = await uniCloud.callFunction({
})
})
```
```
## 开发模式
实际项目中,很少会每个接口新建一个云函数。
更常见的开发模式有如下两种:
-
不写云函数,客户端直接操作数据库,开发效率更高。详见:
[
clientDB
](
uniCloud/database
)
-
使用路由框架,在一个云函数内通过控制器、路由的方式编写服务器接口,控制更灵活。插件市场有很多这类插件,
[
详见
](
https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1&orderBy=WeekDownload&cat1=7
)
## 云函数配置
## 云函数配置
### 固定出口IP@eip
### 固定出口IP@eip
...
@@ -327,4 +357,3 @@ exports.main = async function() {
...
@@ -327,4 +357,3 @@ exports.main = async function() {
-
使用阿里云作为服务商时,暂时无法使用相对路径读取文件,如:
`fs.readFileSync('./info')`
,可以替换为
`fs.readFileSync(path.resolve(__dirname,'./info'))`
-
使用阿里云作为服务商时,暂时无法使用相对路径读取文件,如:
`fs.readFileSync('./info')`
,可以替换为
`fs.readFileSync(path.resolve(__dirname,'./info'))`
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录