README.md 21.9 KB
Newer Older
VK1688's avatar
1.3.4  
VK1688 已提交
1
### uniCloud云函数路由框架研究Q群:22466457 如有问题或建议可以在群内讨论。
VK1688's avatar
VK1688 已提交
2
### 插件名称:`vk-unicloud-router`
VK1688's avatar
1.3.4  
VK1688 已提交
3
### 作者:VK
VK1688's avatar
VK1688 已提交
4 5

## 序
VK1688's avatar
2.0.0  
VK1688 已提交
6
##### 如果你热爱编程,想快速入门云开发,欢迎使用`vk-unicloud`系列开发框架
VK1688's avatar
VK1688 已提交
7 8 9
##### 无需转变开发习惯,0成本上手云开发。
##### 框架内置了众多API、工具包,为你的业务扫平障碍。使你的项目刚起步进度就是50%(微信登录、短信、验证码、缓存、生成小程序码等等)
##### 从此你又get一个新技能,只需用js,轻松搞定前后台整体业务。
VK1688's avatar
readme  
VK1688 已提交
10
##### 完整框架项目地址:
VK1688's avatar
2.0.1  
VK1688 已提交
11 12
##### `client端`框架地址: [https://ext.dcloud.net.cn/plugin?id=2204](https://ext.dcloud.net.cn/plugin?id=2204)
##### `admin端`框架地址:[https://ext.dcloud.net.cn/plugin?id=5043](https://ext.dcloud.net.cn/plugin?name=vk-unicloud-admin)
VK1688's avatar
2.3.0  
VK1688 已提交
13 14
##### `client端`框架文档:[点击查看](https://vkdoc.fsq.pub/client/)
##### `admin端`框架文档:[点击查看](https://vkdoc.fsq.pub/admin/)
VK1688's avatar
2.0.0  
VK1688 已提交
15
##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
VK1688's avatar
VK1688 已提交
16

VK1688's avatar
1.3.4  
VK1688 已提交
17
## 主要功能 以及 对开发者的价值
VK1688's avatar
初始  
VK1688 已提交
18

VK1688's avatar
2.10.6  
VK1688 已提交
19 20 21 22 23 24 25
#### 1、实现云函数路由模式(同时支持对云对象的路由)
* 1.1、路由模式不使用任何第三方包,兼容性强,运行稳定
* 1.2、减少云函数数量,云函数有个数限制(用一个云函数即可实现多个云函数效果)
* 1.3、部分通用的代码块可以放在公共区执行,具有公共函数的效果,增加代码复用率,便于维护。
* 1.4、可以在开发环境和生产环境中任意切换,开发时,用开发环境,开发过程中不会影响到线上环境。(具体切换方法在文档最后)
* 1.5、美化云函数请求过程中的日志排版,使请求日志一目了然。(再也不用为日志分散,难找而头疼)
* 1.6、可以强制关闭云端服务(适用于需要临时关闭后端服务的情况,如腾讯云迁移数据到阿里云时需要先关闭服务,否则迁移过程中会有新数据产生)
VK1688's avatar
初始  
VK1688 已提交
26

VK1688's avatar
2.10.6  
VK1688 已提交
27
#### 2、实现 `全局过滤器`,过滤非法请求。您无需关心用户角色权限问题。
28

VK1688's avatar
2.10.6  
VK1688 已提交
29
#### 3、众多现成的 `JS API`,让您无需重复造轮子。(持续增加中)
VK1688's avatar
初始  
VK1688 已提交
30

VK1688's avatar
2.10.6  
VK1688 已提交
31
#### 4、众多现成的 `云函数 API`,为您的业务扫平障碍,让您可以专注于自身业务开发。(微信登录、短信、验证码、缓存、生成小程序码等等)(持续增加中)
VK1688's avatar
初始  
VK1688 已提交
32

VK1688's avatar
2.10.6  
VK1688 已提交
33
#### 5、全面支持 `url化` 的云函数请求,您无需关心url化后参数的获取问题
VK1688's avatar
VK1688 已提交
34

VK1688's avatar
2.13.4  
VK1688 已提交
35
#### 6、已集成 `uni-id` 当前版本: `3.3.28`(已支持真实发送邮箱验证码和短信验证码)
VK1688's avatar
2.10.6  
VK1688 已提交
36
* 6.1、由于每个应用基本都会用上用户系统,官方建议所有 `uniCloud` 应用均使用 `uni-id` 作为用户体系,
VK1688's avatar
初始  
VK1688 已提交
37 38
有了统一的账户规范,并且围绕这套账户规范,有各种各样插件,那么开发者可以随意整合这些插件,让数据连同。

VK1688's avatar
2.10.6  
VK1688 已提交
39 40
* 6.2、同时方便其他用户使用 `unicloud` 插件发布者发布的前后端一体插件,只需要导入一个云函数即可。
(如导入一个社区插件,可能要导入几十个云函数,而使用此云函数路由后,只需导入一个云函数,且已集成 `uni-id`,打通账号体系)。
VK1688's avatar
初始  
VK1688 已提交
41

VK1688's avatar
2.10.6  
VK1688 已提交
42
#### 7、在 `uni-id` 基础上升级为 `vk.userCenter` 用户中心API 通过this.vk.userCenter 即可调用 [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html)
43
 
VK1688's avatar
2.10.6  
VK1688 已提交
44
#### 8、封装 `uni.callFunction` 和 `uni.request` 使之合二为一 通过this.vk.callFunction 调用
VK1688's avatar
初始  
VK1688 已提交
45

VK1688's avatar
2.10.6  
VK1688 已提交
46
#### 9、`vk.baseDao` 数据库API,使小白也能轻松上手对数据库的调用。 [传送门](https://vkdoc.fsq.pub/client/uniCloud/db/api.html)
VK1688's avatar
初始  
VK1688 已提交
47

VK1688's avatar
2.10.6  
VK1688 已提交
48
#### 10、`vk.baseDao.selects` 数据库万能连表查询API [传送门](https://vkdoc.fsq.pub/client/uniCloud/db/selects.html)
VK1688's avatar
初始  
VK1688 已提交
49

VK1688's avatar
2.10.6  
VK1688 已提交
50
#### 11、`商品SKU选择器组件`(打造uni插件市场功能最全的SKU选择器组件)[传送门](https://ext.dcloud.net.cn/plugin?id=2848)
VK1688's avatar
1.3.4  
VK1688 已提交
51

VK1688's avatar
2.10.6  
VK1688 已提交
52
#### 12、对 `Vuex` 进行了深度封装(支持持久化),现在可以很方便的使用Vuex进行读取和储存。[传送门](https://vkdoc.fsq.pub/client/pages/vuex.html)
VK1688's avatar
1.3.4  
VK1688 已提交
53

VK1688's avatar
2.10.6  
VK1688 已提交
54
#### 13、自定义过滤器(在业务云函数执行之前(或之后),统一拦截,进行过滤后再放行,支持设置多个过滤器,并按指定顺序执行)[传送门](https://vkdoc.fsq.pub/client/uniCloud/middleware/filter.html)
VK1688's avatar
初始  
VK1688 已提交
55

VK1688's avatar
2.10.6  
VK1688 已提交
56
#### 14、支持设置需要登录的页面列表或不需要登录的页面列表(通过本地token检测,无网络请求,支持通配符写法)[传送门](https://vkdoc.fsq.pub/client/pages/config.html)
VK1688's avatar
1.4.3  
VK1688 已提交
57

VK1688's avatar
2.10.6  
VK1688 已提交
58
#### 15、支持设置可以被分享的页面列表或禁止分享的页面列表(支持通配符写法)[传送门](https://vkdoc.fsq.pub/client/pages/config.html)
VK1688's avatar
1.4.8  
VK1688 已提交
59

VK1688's avatar
2.10.6  
VK1688 已提交
60
#### 16、`vk.localStorage` 封装本地缓存的curd,同时具有监听缓存被更新和被删除的功能。[传送门](https://vkdoc.fsq.pub/client/pages/localStorage.html)
VK1688's avatar
1.6.5  
VK1688 已提交
61

VK1688's avatar
2.10.6  
VK1688 已提交
62
#### 17、美化云函数请求过程中的日志排版,使请求日志一目了然。
VK1688's avatar
1.6.5  
VK1688 已提交
63

VK1688's avatar
2.10.6  
VK1688 已提交
64
![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-cf0c5e69-620c-4f3c-84ab-f4619262939f/4a44fbf8-6b5e-43a6-b443-51a108dec125.png)
VK1688's avatar
VK1688 已提交
65

VK1688's avatar
2.10.6  
VK1688 已提交
66
#### 18、可以 `强制关闭` 云端服务(适用于需要临时关闭后端服务的情况,如腾讯云迁移数据到阿里云时需要先关闭服务,否则迁移过程中会有新数据产生)
VK1688's avatar
1.7.0  
VK1688 已提交
67

VK1688's avatar
2.10.6  
VK1688 已提交
68
#### 19、全局数据缓存API,现在可以很方便的在云函数中使用缓存。 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cache/cache.html)
VK1688's avatar
1.7.0  
VK1688 已提交
69

VK1688's avatar
2.10.6  
VK1688 已提交
70
#### 20【全网首家】云函数URL化之URL重写 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/urlrewrite.html)
VK1688's avatar
1.8.6  
VK1688 已提交
71

VK1688's avatar
2.10.6  
VK1688 已提交
72
#### 21、千人群交流开发心得,助你避坑,作者亲自在群内解答框架使用问题,让你轻松上手 `uniCloud云开发`。
VK1688's avatar
1.9.1  
VK1688 已提交
73

VK1688's avatar
2.10.6  
VK1688 已提交
74
#### 22、其他好处…
VK1688's avatar
1.9.1  
VK1688 已提交
75

VK1688's avatar
2.13.4  
VK1688 已提交
76
### 目前已集成的服务端API
VK1688's avatar
2.1.5  
VK1688 已提交
77

VK1688's avatar
2.10.6  
VK1688 已提交
78
#### 1、微信小程序服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html)
VK1688's avatar
初始  
VK1688 已提交
79

VK1688's avatar
2.10.6  
VK1688 已提交
80 81 82 83
#### 2、微信公众号服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin-h5.html)

#### 3、百度开放平台服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/baidu.html)

VK1688's avatar
2.13.4  
VK1688 已提交
84
#### 4、短信发送 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/sms.html)
VK1688's avatar
2.10.6  
VK1688 已提交
85 86 87 88 89 90

#### 5、邮箱发送 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/mail.html)

#### 6、Redis [传送门](https://vkdoc.fsq.pub/vk-redis/)

##### 插件部分API功能体验地址
VK1688's avatar
初始  
VK1688 已提交
91 92 93

![插件首页体验地址](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-vk-cloud-router-test/51de83e0-e9ae-11ea-81ea-f115fe74321c.png?x-oss-process=image/resize,h_250 "插件首页体验地址")
 
94
## 快速上手 - 安装步骤
VK1688's avatar
初始  
VK1688 已提交
95

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
## 后端(云函数端)安装步骤
打开 `uniCloud/cloudfunctions` 目录

#### 前置工作:修改云函数全局配置文件(用到微信登录的必须要配置)[微信小程序配置详细教程](https://vkdoc.fsq.pub/client/question/q12.html)
#### 注意:
* 1、开发微信小程序和APP微信登录需要额外配置 manifest.json 以及 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 这2个配置文件,且改动配置后需要重新上传 公共模块 和 router 函数。
* 2、若你的电脑没有安装 Node.js,则无法使用 npm 命令。
* 3、Node.js 安装包及源码下载地址为:[https://nodejs.org/en/download/](https://nodejs.org/en/download/)
* 4、Node.js 安装教程:[https://www.runoob.com/nodejs/nodejs-install-setup.html](https://www.runoob.com/nodejs/nodejs-install-setup.html)

查看 `uni-id/config.json` 代码格式 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/config/uni-id.html)


#### 正式安装

直接右键`uniCloud`目录 点击 `运行云服务空间初始化向导` 即可

## 前端(页面端)安装步骤

### 自 `client` 端框架 `2.6.0` 起,不再内置任何 UI 框架,你可以选择自己喜欢的 UI 组件库进行开发。

### 集成 `vk-uview-ui`(vue2.0版)

___若不想集成 `vk-uview-ui` 可跳过此处___

适合开发:H5、App(vue版本)、微信小程序、支付宝小程序(其他小程序未验证)

> 插件市场导入 `vk-uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=6692)

* 1、main.js 引入 vk-uview-ui 

```js
import uView from './uni_modules/vk-uview-ui';
Vue.use(uView);
```

* 2、App.vue 引入基础样式(注意style标签需声明scss属性支持)

```html
<style lang="scss">
	@import "./uni_modules/vk-uview-ui/index.scss";
</style>
```

* 3、uni.scss 引入全局 scss 变量文件

```css
@import "@/uni_modules/vk-uview-ui/theme.scss";
```


### 集成 `vk-uview-ui`(vue3.0版)

___若不想集成 `vk-uview-ui` 可跳过此处___

适合开发:H5、App(vue版本)、微信小程序(其他小程序未验证)

> 插件市场导入 `vk-uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=6692)

不建议把老项目 升级到 Vue3.0 (升级非常麻烦,建议新项目才考虑是否使用Vue3.0)

___注意:目前(2020-11-18) `uniapp` 的 `Vue3.0` 版本只兼容:H5、App、微信小程序___

* 1、前置步骤:修改 `manifest.json` 内的 `vue` 版本为 `vue3`
* 2、项目根目录新增 `index.html` 文件,文件代码为
```html
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
		<title></title>
		<!--preload-links-->
		<!--app-context-->
		<!-- 配置H5的 web图标static/logo.png -->
		<link rel="icon" href="./static/logo.png" />
	</head>
	<body>
		<div id="app">
			<!--app-html-->
		</div>
		<script type="module" src="/main.js"></script>
	</body>
</html>
```

* 3、main.js 引入 vk-uview-ui 

```js
// 引入 uView UI
import uView from './uni_modules/vk-uview-ui';

import { createSSRApp } from 'vue'

export function createApp() {
  const app  = createSSRApp(App)
  
  // 使用 uView UI
  app.use(uView)
  
  return { app }
}

```

* 4、App.vue 引入基础样式(注意style标签需声明scss属性支持)

```html
<style lang="scss">
	@import "./uni_modules/vk-uview-ui/index.scss";
</style>
```

* 5、uni.scss 引入全局 scss 变量文件

```css
@import "@/uni_modules/vk-uview-ui/theme.scss";
```


### 集成 `uview-ui`(nvue2.0版)

___若不想集成 `uview-ui` 可跳过此处___

适合开发:App(nvue版本),如果你只开发App,推荐用这个UI

> 插件市场导入 `uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=1593)

* 1、main.js 引入 uview-ui 

```js
import uView from './uni_modules/uview-ui';
Vue.use(uView);
```

* 2、App.vue 引入基础样式(注意style标签需声明scss属性支持)

```html
<style lang="scss">
	@import "./uni_modules/uview-ui/index.scss";
</style>
```

* 3、uni.scss 引入全局 scss 变量文件

```css
@import "@/uni_modules/uview-ui/theme.scss";
```

### 集成 `uview-ui`(nvue3.0版)

别想了,uniapp官方也还没支持。

### 组件库并不限制只能从以上选择,理论上支持任何UI组件库进行开发。

### 卸载 `uView1` 的步骤

* 1、main.js 删除 uView1

```js
import uView from 'uview-ui'
Vue.use(uView);
```

* 2、App.vue 删除基础样式

```html
<style lang="scss">
	@import "uview-ui/index.scss";
</style>
```

* 3、uni.scss 删除全局 scss 变量文件

```css
@import "uview-ui/theme.scss";
```

* 4、pages.json 删除 easycom 规则

```js
"easycom": {
	"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
},
```

* 5、package.json 删除 uview-ui 依赖

```js
"dependencies": {
  "uview-ui": "^1.8.3"
},
```

* 6、package-lock.json 删除 uview-ui 依赖

```js
"dependencies": {
  "uview-ui": {
    "version": "1.8.3",
    "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.3.tgz",
    "integrity": "sha512-DqKc+qRrOZLPcyfWv4b0HspSS9n1Cd6BbgKiYEv9rjTAnWoqJV7rXsvWqZdr5iKGP5EMNbNS741GLNw4sIHbpw=="
  }
}
```

### 完整安装文档:[查看完整安装文档](https://vkdoc.fsq.pub/client/quickstart.html)
VK1688's avatar
初始  
VK1688 已提交
303

304
## 云函数框架目录结构
VK1688's avatar
初始  
VK1688 已提交
305

VK1688's avatar
1.6.2  
VK1688 已提交
306
```
VK1688's avatar
初始  
VK1688 已提交
307 308 309 310
.
├── common─────────────────# 自定义官方公共模块包
│ └── config──────────────────# 全局配置公共模块
│ └── uni-id──────────────────# uni-id官方公共模块
VK1688's avatar
1.6.2  
VK1688 已提交
311
│ └── vk-unicloud─────────────# vk-unicloud公共模块
VK1688's avatar
初始  
VK1688 已提交
312
├── router─────────────────# 正式环境云函数主入口(函数路由器)
VK1688's avatar
1.6.2  
VK1688 已提交
313 314
│ └── dao──────────────────# dao层(数据库交互公共API)
│ └── middleware───────────# 中间层(过滤器、拦截器)
VK1688's avatar
初始  
VK1688 已提交
315
│ └── node_modules─────────# npm包
VK1688's avatar
1.6.2  
VK1688 已提交
316 317
│ └── service──────────────# 逻辑层(用于写业务逻辑)
│ ── └── 逻辑层目录结构在下方单独展示
VK1688's avatar
初始  
VK1688 已提交
318 319
│ └── util─────────────────# 工具包
│ ── └── pubFunction.js───────# 公共函数包
VK1688's avatar
1.6.2  
VK1688 已提交
320 321
│ ── └── smsUtil.js───────────# 全局过滤器
│ └── config.js────────────# 入口函数初始化配置
VK1688's avatar
初始  
VK1688 已提交
322
│ └── index.js─────────────# 入口函数
VK1688's avatar
1.6.2  
VK1688 已提交
323 324
│ └── package.json─────────# 第三方依赖配置文件(若使用npm,自动生成)
└─└── package-lock.json────# 第三方依赖配置文件(若使用npm,自动生成)
VK1688's avatar
初始  
VK1688 已提交
325 326 327 328 329 330 331
.
├── router-test───────────────# 函数路由(开发测试环境)
│ └── ...─────────# ...
│ └── ...─────────# ...
└── └── ...─────────# ...
```

VK1688's avatar
1.6.2  
VK1688 已提交
332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364
### 逻辑层目录结构
#### `router/service` 目录为逻辑层
#### 以下的目录并非强制性,只是建议,便于统一开发规范。

```
.
├── service──────────────────────# 逻辑层(用于写业务逻辑)
│ └── admin────────────────# 后台管理端逻辑(admin框架开发中。。。)
│ ── └── xxxxxxxxxxxxxxx──────# 
│ ── └── xxxxxxxxxxxxxxx──────# 
│ ── └── xxxxxxxxxxxxxxx──────# 
│ ── └── xxxxxxxxxxxxxxx──────# 
│ └── client───────────────# 客户端逻辑(H5、小程序、APP)
│ ── └── user─────────────────# 用户服务(自己系统的逻辑)
│ ──── └── kh───────────────────# kh函数为必须登录后才能访问的函数
│ ──── └── pub──────────────────# pub函数为所有人都可以访问,不限制
│ ──── └── util─────────────────# 用户服务专用的工具包
│ ── └── order────────────────# 订单服务(自己系统的逻辑)
│ ──── └── kh───────────────────# kh函数为必须登录后才能访问的函数
│ ──── └── pub──────────────────# pub函数为所有人都可以访问,不限制
│ ──── └── util─────────────────# 订单服务专用的工具包
│ ── └── xxxxxxxxxxxxxxx──────# 
│ ── └── xxxxxxxxxxxxxxx──────# 
│ └── common───────────────# 公共逻辑(公共接口)
│ ── └── xxxxxxxxxxxxxxxx─────# 
│ ── └── xxxxxxxxxxxxxxxx─────# 
│ ── └── xxxxxxxxxxxxxxxx─────# 
│ └── user─────────────────# 统一用户中心服务(已集成uniID)(用户中心作为核心,且为了方便插件升级,故与admin和client平级)
│ ── └── kh───────────────────# kh函数为必须登录后才能访问的函数(客户端用户)
│ ── └── pub──────────────────# pub函数为所有人都可以访问,不限制
│ ── └── sys──────────────────# sys函数为后端管理人员才能访问的函数(商家后台工作人员)
│ ── └── util─────────────────# 统一用户中心服务专用的工具包
│ └── plugs───────────────# 插件逻辑(插件专用)(会陆续新增一些实用性插件给开发者使用,如微信小程序发送订阅消息等等)
VK1688's avatar
1.8.12  
VK1688 已提交
365 366 367 368 369 370
│ ──└── plugs-A───────────────────# 插件A
│ ────└── admin───────────────────# 插件A admin端
│ ────└── client──────────────────# 插件A client端
│ ──└── plugs-B───────────────────# 插件B
│ ────└── admin───────────────────# 插件B admin端
│ ────└── client──────────────────# 插件B client端
VK1688's avatar
1.6.2  
VK1688 已提交
371 372 373 374 375 376 377 378
│ └── template─────────────# 云函数模板(插件内的云函数写法模板)
│ ── └── db_api───────────────# 数据库接口调用模板
│ └── muban.js─────────────# 云函数模板(新建一个云函数应复制粘贴这个文件)
│ └── muban_easy.js────────# 云函数模板(简易版)
└─────────────────────────────────
```


379
## 云函数service模板文件示例
VK1688's avatar
1.3.7  
VK1688 已提交
380
```js
VK1688's avatar
初始  
VK1688 已提交
381
module.exports = {
382 383 384 385 386 387 388 389
  /**
  * 此函数名称
  * @url user/sys/test1 前端调用的url参数地址
  * @description 此函数描述
  * @params {Object} data 请求参数
  * @params {String} uniIdToken 用户token
  * @params {String} userInfo 当前登录用户信息(同理,是可信任的)(只有kh函数才带此参数)
  * @params {Object} util 公共工具包
VK1688's avatar
1.4.8  
VK1688 已提交
390
	* @params {Object} filterResponse 过滤器返回的数据
391 392 393 394 395 396 397 398 399
  * @params {Object} originalParam 原始请求参数(包含了原始event和context)
  * data 请求参数 说明
  * @params {String} uid  当前登录用户id,若用户已登录且token有效,则data中会带uid参数
  * (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数)
  * res 返回参数说明
  * @params {Number} code 错误码,0表示成功
  * @params {String} msg 详细信息
  */
  main: async (event) => {
VK1688's avatar
1.4.8  
VK1688 已提交
400
    let { data = {}, userInfo, util, filterResponse, originalParam } = event;
VK1688's avatar
1.4.4  
VK1688 已提交
401
    let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
402 403 404 405 406 407 408 409 410
    let { uid } = data;
    let res = { code : 0, msg : '' };
    // 业务逻辑开始----------------------------------------------------------- 
    // 可写与数据库的交互逻辑等等
  
  
    // 业务逻辑结束-----------------------------------------------------------
    return res;
  }
VK1688's avatar
初始  
VK1688 已提交
411 412
}
```
413 414 415 416 417 418 419 420
#### 成功时返回
```js
// 注意:所有成功请求必须返回code:0 code为其他值,代表失败,如兑换失败,您的积分不足!
// 如成功时返回 res.code = 0 表示执行成功;
return {
  code : 0,
  msg : '兑换成功!' 
}
VK1688's avatar
初始  
VK1688 已提交
421
```
422 423 424 425 426 427
#### 失败时返回
```js
return {
  code : -1,
  msg : '兑换失败,您的积分不足!'
}
VK1688's avatar
初始  
VK1688 已提交
428

429
```
VK1688's avatar
初始  
VK1688 已提交
430

431
## this.vk.callFunction函数的参数说明
VK1688's avatar
1.3.7  
VK1688 已提交
432
```js
VK1688's avatar
初始  
VK1688 已提交
433 434 435 436 437 438 439
/**
 * 云函数请求封装 - 统一入口
 * @description 通过云函数路由,1个云函数实现多个云函数的效果。
 * @params {String}   url       请求路径,该路径实为router云函数的service目录下的路径
 * @params {Object}   data      请求参数
 * @params {String}   title     遮罩层提示语,为空或不传则代表不显示遮罩层。
 * @params {Boolean}  isRequest 是否使用云函数url化地址访问云函数,默认false
VK1688's avatar
2.0.5  
VK1688 已提交
440
 * @params {Boolean}  needAlert 为true代表请求错误时,会有alert弹窗提示。默认为true
VK1688's avatar
初始  
VK1688 已提交
441 442 443 444 445 446 447
 * @params {Function} success   请求成功时,执行的回调函数
 * @params {Function} fail      请求失败时,执行的回调函数
 * @params {Function} complete  无论请求成功与否,都会执行的回调函数
 */
```


448
## 前端调用云函数示例
VK1688's avatar
初始  
VK1688 已提交
449

VK1688's avatar
1.3.7  
VK1688 已提交
450
```js
VK1688's avatar
初始  
VK1688 已提交
451 452 453 454 455 456 457 458 459 460 461 462 463 464

this.vk.callFunction({
	url: 'user/kh/setAvatar',
	title:'请求中...',
	data:{
		avatar: "https://xxxxxxx.jpg"
	},
	success(data) {
		// 修改成功
	}
});

```

465
## 云函数url化方式调用云函数示例
VK1688's avatar
初始  
VK1688 已提交
466

VK1688's avatar
2.3.0  
VK1688 已提交
467
[点击查看『云函数url化』方式调用云函数示例](https://vkdoc.fsq.pub/client/pages/callFunctionForUrl.html)
VK1688's avatar
初始  
VK1688 已提交
468

469
## 前端非法token拦截器
VK1688's avatar
初始  
VK1688 已提交
470

VK1688's avatar
2.3.0  
VK1688 已提交
471
[点击查看『前端非法token拦截器』](https://vkdoc.fsq.pub/client/pages/interceptor1.html)
VK1688's avatar
初始  
VK1688 已提交
472

473
## vk.baseDao数据库API
VK1688's avatar
初始  
VK1688 已提交
474

VK1688's avatar
2.3.0  
VK1688 已提交
475
[点击查看『vk.baseDao』数据库API](https://vkdoc.fsq.pub/client/uniCloud/db/api.html)
VK1688's avatar
初始  
VK1688 已提交
476

VK1688's avatar
1.6.5  
VK1688 已提交
477 478
## 设置全局请求参数

VK1688's avatar
2.3.0  
VK1688 已提交
479
[点击查看『设置全局请求参数』](https://vkdoc.fsq.pub/client/pages/updateRequestGlobalParam.html)
VK1688's avatar
1.6.5  
VK1688 已提交
480

481
## 列表渲染前后端一体模板
VK1688's avatar
初始  
VK1688 已提交
482

VK1688's avatar
2.3.0  
VK1688 已提交
483
[点击查看『列表渲染』前后端一体模板](https://vkdoc.fsq.pub/client/pages/list.html)
VK1688's avatar
初始  
VK1688 已提交
484

485
## 商品SKU选择器组件
VK1688's avatar
初始  
VK1688 已提交
486

VK1688's avatar
VK1688 已提交
487
[点击查看『商品SKU选择器组件』](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=2912199&doc_id=975983)
VK1688's avatar
初始  
VK1688 已提交
488

489
## 如何切换 正式环境 和 开发环境
VK1688's avatar
初始  
VK1688 已提交
490

VK1688's avatar
2.3.0  
VK1688 已提交
491
[点击查看如何『切换正式环境和开发环境』](https://vkdoc.fsq.pub/client/question/q1.html)
VK1688's avatar
初始  
VK1688 已提交
492 493

## 本插件更新步骤
VK1688's avatar
2.3.0  
VK1688 已提交
494
[点击查看本插件『更新步骤』](https://vkdoc.fsq.pub/client/changeGuide.html)
VK1688's avatar
初始  
VK1688 已提交
495

496
## uniCloud云函数路由框架研究Q群:`22466457` 如有问题或建议可以在群内讨论。
VK1688's avatar
2.0.0  
VK1688 已提交
497 498

### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。