神的尾巴

全栈工程师、独立开发者

0%

uni-app之uniCloud指南

之前在制作个人静态博客的时候,考虑过用 Serverless 做过一些Api接口。

主要优点就是部署、运维方便,且功能也不是很复杂。

uni-app 有个 uniCloud ,最近刚有个项目来练手,就顺带实践下。

uniCloud 使用流程

uniCloud 官方文档:https://uniapp.dcloud.io/uniCloud/README

创建服务空间

支持阿里云、腾讯云,在有一些特性支持不一致。因为微信小程序云开发做的比较早,相比于阿里云,腾讯云在这边支持的特性会多一点。

创建云函数

点击新建云函数,并命名。

uniCloud 属于 FaaS(函数即服务),最小运行粒度为函数,所以需要单独安装依赖。

安装依赖

1
2
3
4
5
6
7
cd 云函数目录

# 初始化 package.json
npm init -y

# 安装依赖
npm install xxx --save

如果云函数上传失败错误:“npm install执行失败.如果云函数目录下存在package-lock.json, node_modules可能会导致 npm install失败, 请删除后重试.”,建议先把npm源切换成官方安装,再上传。

1
2
3
4
5
# 切换回官方源
npm config set registry https://registry.npmjs.org

# 重新安装
npm install xxx --save

另外因为阿里云不支持,所以 uniCloud 全量上传包(包含node_modules),上传速度会有点慢。

如果功能、依赖比较类似,可以考虑放到一个云函数,然后根据参数,来分别调用相关逻辑。

本地测试

点击配置运行测试参数,可以本地测试云函数是否有问题,暂不支持断点调试。

运行测试参数会作为输入参数,传递到云函数的 event

上传部署

测试完成后,右键云函数文件夹,上传部署。

部署完成后,前端就可以正常调用了。

一些小Tips

冷启动

如果云函数长期不运行,第一次启动会有冷启动时间。

如何公用模块

因为每个云函数是独立的,那如何使用公共模块呢?比如配置、常用工具

下面是 ucloud 使用公共模块的项目结构

1
2
3
4
5
6
7
8
|--cloudfunctions
|--common // 云函数公用模块目录
|--config // 云函数公用模块
|--package.json
|--index.js // 公用模块代码,可以不使用index.js,修改 package.json 内的 main 字段可以指定此文件名
|--use-common // 使用公用模块的云函数
|--package.json // 在 use-common 目录执行 npm init -y 生成
|--index.js // 云函数入口文件

在云函数根目录,创建common目录,会自动识别为公共模块目录。

右键common目录,可以创建公共模块。

创建公共模块后,在其他云函数添加依赖。

1
2
3
4
# 初始化 npm
npm init -y
# 云函数添加依赖(如果需要使用多个公共模块,安装多次),这里以 config 公共模块为例
npm install ../common/config --save

添加依赖后,可以 require 进来使用。

1
2
3
// 这里以 config 公共模块为例
const config = require('config')
// ...

但是公共模块修改后,需要更新所有使用该公共模块的云函数,另外公共模块也需要部署上传。

觉得对你有帮助的话,请我喝杯咖啡吧~.