diff --git a/docs/component/list.md b/docs/component/list.md index 383a5819e4b7a63d866249ee03c21a229f69e592..4cbc86e56b73fe2370f31445dccf734b10e6bef8 100644 --- a/docs/component/list.md +++ b/docs/component/list.md @@ -32,7 +32,7 @@ app端nvue专用组件。在app-nvue下,如果是长列表,使用list组件 > **注意** > - 相同方向 `` 或者 `` 互相嵌套时,Android 平台子 `` 不可滚动,iOS 可以,iOS 有Bounce效果, Android仅可滚动时有 > - `` 需要显式的设置其宽高,可使用 position: absolute; 定位或 width、height 设置其宽高值。 -> - list是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变。 +> - list是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变、style的transparentTitle导航栏透明。 > - Android 平台,因 `` 高效内存回收机制,不在屏幕可见区域的组件不会被创建,导致一些内部需要计算宽高的组件无法正常工作,例如 ``、``、`` #### 子组件 diff --git a/docs/uni-stat-v2.md b/docs/uni-stat-v2.md index ab0357d00258af455af545d98928db5d5e844e25..fc611a5a336987dc9e9820567be31c433e96d08a 100644 --- a/docs/uni-stat-v2.md +++ b/docs/uni-stat-v2.md @@ -1,34 +1,34 @@ ## uni统计2.0 -uni统计2.0是基于uniCloud开发的开源、免费统计平台。 +uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 ## 产品特色 -`uni统计2.0`和`uni统计1.0`一样,均支持全域流量统计,无需在各端接不同的sdk、无需在不同后台查看数据。使用uni统计,一张报表可查看所有端(iOS、Android、H5及各家小程序)的运营数据。 +`uni统计2.0`和`uni统计1.0`一样,均支持全域流量统计,无需在各端接不同的 sdk、无需在不同后台查看数据。使用 uni 统计,一张报表可查看所有端(iOS、Android、H5 及各家小程序)的运营数据。 相比`uni统计1.0`,`uni统计2.0`还有如下特色功能: **1. 开源** -前端采集数据的SDK、云端接收数据的云函数、云端跑批统计的云函数、展示统计结果的管理报表,所有代码全部开源。 +前端采集数据的 SDK、云端接收数据的云函数、云端跑批统计的云函数、展示统计结果的管理报表,所有代码全部开源。 **2. 私有部署** -使用传统`saas`类统计产品时,所有App数据都上报在统计厂商统一的数据库中,也就是中央化部署模式。 +使用传统`saas`类统计产品时,所有 App 数据都上报在统计厂商统一的数据库中,也就是中央化部署模式。 `uni统计2.0`基于`uniCloud`实现,云函数、统计数据全部托管在开发者自己的服务空间中,开发者对自己的统计数据拥有完整的控制权。 **3. 自由定制** `uni统计2.0`所有代码是完全开源的,开发者可在开源代码基础上,轻松扩展统计维度,自由定制报表样式。 -**uni统计新老版本对比** +**uni 统计新老版本对比** |功能|uni统计1.0|uni统计2.0| -|:-:|:-:|:-:| -|是否开源|否|是| -|是否免费|是|是| -|部署方式|中央部署|私有部署| -|定制方式|不可定制|方便定制| +| :-: | :-: | :-: | +|是否开源 |否|是| +|是否免费 |是|是| +|部署方式 |中央部署|私有部署| +|定制方式 |不可定制|方便定制| ## 前端配置 @@ -38,16 +38,16 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。 ### 全局设置 -将 ` manifest.json -> uniStatistics` 下的 `enable` 字段设置为 `true|false` ,来开启关闭 `uni统计` +将 `manifest.json -> uniStatistics` 下的 `enable` 字段设置为 `true|false` ,来开启关闭 `uni统计` 设置 `version` 属性为 `"2"` 来开启新版统计 ```js -//... -"uniStatistics": { - "enable": true,//全局开启 - "version": "2" // 开启新版uni统计,值为字符串 -}, +//... +"uniStatistics": { + "enable": true,//全局开启 + "version": "2" // 开启新版uni统计,值为字符串 +}, //... ``` @@ -56,11 +56,11 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。 `uniStatistics` 支持分平台设置,比如若需仅开启微信平台的 `uni统计`,则在`mp-weixin`节点下设置 `uniStatistics ->enable` 即可,如下: ```js -//... -"mp-weixin":{ - "uniStatistics": { - "enable": true //微信平台开启统计 - } +//... +"mp-weixin":{ + "uniStatistics": { + "enable": true //微信平台开启统计 + } } ``` @@ -70,33 +70,31 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。 - 应用在运行、调试时不会上报统计数据,仅在发行后,并启动新版的App、h5、小程序,才会上报数据。 - 如需在开发运行阶段调试查看上报数据 ,可开启 debug 模式 ,后文查看详情 ::: + ### 域名白名单 由于各家小程序对可访问的域名要配置白名单,否则无法联网。 注意选择对应的服务商域名(文章后面章节会有服务空间相关配置) -|服务提供商| request合法域名| -|:-:|:-:| -|阿里云 |api.bspapp.com | -|腾讯云 |tcb-api.tencentcloudapi.com| - +| 服务提供商 | request 合法域名 | +| :--------: | :-------------------------: | +| 阿里云 | api.bspapp.com | +| 腾讯云 | tcb-api.tencentcloudapi.com | ## 统计管理后台配置 新版统计与之前不同的是需要用户自行管理部署统计后台,使用了 [uni-admin](https://uniapp.dcloud.io/uniCloud/admin.html#uni-admin-%E6%A1%86%E6%9E%B6-%E5%8E%9F%E5%90%8D-unicloud-admin) 来管理 `uni统计`数据。 - ### 创建 uni-admin -使用 `HBuilderX 3.4.x `版本新建 `uni-app` 项目,选择 `uni-admin` 项目模板,如下图: +使用 `HBuilderX 3.4.x`版本新建 `uni-app` 项目,选择 `uni-admin` 项目模板,如下图: ![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/80406bf5-f96a-4a66-9430-a339a4054c96.png) 创建完成后,可以跟随`云服务空间初始化向导`初始化项目,创建并绑定云服务空间 ![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/7fd34451-2313-4d01-8caf-39f277780642.png) - ### 运行 uni-admin 接下来所有操作都是基于新创建的 `uni-admin` 项目来操作 @@ -104,11 +102,12 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。 ### 目录结构 注意:创建完成后确保 `uniCloud -cloudfunctions` 目录下包含了 `uni-stat-report` 云函数 -![目录结构](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/c20bd7bf-d52e-4038-80d6-a2e76c80a091.png -) +![目录结构](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/c20bd7bf-d52e-4038-80d6-a2e76c80a091.png) + ### 配置 uni-id 打开`uni-config-center` 配置 `uni-id` 的 `passwordSecret` 和`tokenSecret`字段 (测试期间跳过本条也可以) + - `passwordSecret` 字段 ,用于加密密码入库的密钥 - `tokenSecret` 字段 ,为生成 token 需要的密钥 @@ -147,13 +146,14 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。 ## 关联服务空间 + 客户端和管理后端都已经准备好了,但是现在还不能从客户端直接上报数据到管理后端,所以需要关联客户端和管理后端的服务空间 1. 在客户端项目右键并选择 `创建uniCloud云开发环境 -> 阿里云|腾讯云` ![关联前后台数据](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/b2ad84ed-a69a-43dc-b8d1-6efaafd96a14.png) -2. 在`uniCloud`目录右键并选择`关联云服务空间或项目`,在打开的窗口中选择上一节`uni-admin`关联的服务空间(两个项目务必关联同一个服务空间,且uni-admin中所有云函数、公共模板等都已经上传部署到该服务空间) +2. 在`uniCloud`目录右键并选择`关联云服务空间或项目`,在打开的窗口中选择上一节`uni-admin`关联的服务空间(两个项目务必关联同一个服务空间,且 uni-admin 中所有云函数、公共模板等都已经上传部署到该服务空间) ![关联前后台数据](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/14744bf3-c88e-4408-b2fa-0ecf0dcf4fe1.png) @@ -271,56 +271,55 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` 2. 分别在数据`上报数据接收器(uni-stat-receiver)`和`定时任务云函数(uni-stat-cron)`下的`package.json`文件中添加redis拓展库。 3. 重新上传部署数据`上报数据接收器(uni-stat-receiver)`、`定时任务云函数(uni-stat-cron)`和`配置中心(uni-config-center)`。 -``` javascript +```javascript //配置uni-stat-receiver的redis拓展库 { - "name": "uni-stat-receiver", - "dependencies": { - "uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id", - "uni-stat": "file:../common/uni-stat" - }, - "extensions": { - "uni-cloud-jql": {}, - "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 - } + "name": "uni-stat-receiver", + "dependencies": { + "uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id", + "uni-stat": "file:../common/uni-stat" + }, + "extensions": { + "uni-cloud-jql": {}, + "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 + } } //配置uni-stat-cron的redis拓展库 { - "name": "uni-stat-cron", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "uni-stat": "file:../common/uni-stat" - }, - "extensions": { - "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 - }, - "cloudfunction-config": { - "concurrency": 1, - "memorySize": 512, - "timeout": 600, - "triggers": [ - { - "name": "uni-stat-cron", - "type": "timer", - "config": "0 0 * * * * *" - } - ] - } + "name": "uni-stat-cron", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "uni-stat": "file:../common/uni-stat" + }, + "extensions": { + "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 + }, + "cloudfunction-config": { + "concurrency": 1, + "memorySize": 512, + "timeout": 600, + "triggers": [ + { + "name": "uni-stat-cron", + "type": "timer", + "config": "0 0 * * * * *" + } + ] + } } ``` - ### 定时任务配置说明 `cron` 参数用于配置定时任务触发时间,一般无需修改此项。 @@ -347,12 +346,12 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` **阿里云服务空间开启步骤:** -1. 因阿里云服务空间默认不支持分钟级定时器,必须先向DCloud申请分钟级定时器后再开启。[申请方式](https://uniapp.dcloud.io/uniCloud/price.html#aliyun) -2. 修改uni统计配置项将`cronMin`参数的值改为`true`。 +1. 因阿里云服务空间默认不支持分钟级定时器,必须先向 DCloud 申请分钟级定时器后再开启。[申请方式](https://uniapp.dcloud.io/uniCloud/price.html#aliyun) +2. 修改 uni 统计配置项将`cronMin`参数的值改为`true`。 3. 修改`定时任务云函数(uni-stat-cron)`下的`package.json`文件中的触发器配置。 4. 重新上传部署`定时任务云函数(uni-stat-cron)`和`配置中心(uni-config-center)`。 -``` javascript +```javascript //config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可. "cloudfunction-config": { "concurrency": 1, @@ -370,11 +369,11 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` **腾讯云服务空间开启步骤:** -1. 修改uni统计配置项将`cronMin`参数的值改为`true`。 +1. 修改 uni 统计配置项将`cronMin`参数的值改为`true`。 2. 修改`定时任务云函数(uni-stat-cron)`下的`package.json`文件中的触发器配置。 3. 重新上传部署`定时任务云函数(uni-stat-cron)`和`配置中心(uni-config-center)`。 -``` javascript +```javascript //config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可. "cloudfunction-config": { "concurrency": 1, @@ -401,15 +400,17 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` |checkTime|错误检测间隔时间,单位`分钟`。| + ### 日志清理配置说明 -`cleanLog`参数用于配置定时清理过期的日志,减少数据库数据的存储量,提升uni统计性能。注意:因为留存统计的需要,基础会话日志和用户会话日志要至少保存31天的日志,否则会对留存统计造成影响。 +`cleanLog`参数用于配置定时清理过期的日志,减少数据库数据的存储量,提升 uni 统计性能。注意:因为留存统计的需要,基础会话日志和用户会话日志要至少保存 31 天的日志,否则会对留存统计造成影响。 |参数|说明| | :-: |:-:| |open|是否开启日志清理:true:是;false:否| |reserveDays|各项日志的保留天数配置,参数格式:`日志类型:保留天数`,例如: `sessionLog:31`代表保留31天的会话日志,保留天数设置为0时表示永久保留(此举会累积大量无用数据,不推荐)| + **目前可配置的日志类型有:** |字段|说明| @@ -431,12 +432,99 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` ## 开源代码解读 ### 前端SDK说明 +uni-app 框架内置 + ### uni-admin说明 +**前端页面结构** +为了突出目标,仅注释出 uni 统计相关的文件夹及文件,其余与普通 uni-app 项目相同。新增页面可参考 uni-stat 中相似页面。 + +```bash +├── cloudfunctions +├── common # 样式 +│ │── uni.css # 公共样式 +│ └── uni-icons.css # icon样式 +├── components # 自定义组件 +├── js_sdk # js sdk +│ └── uni-stat # uni统计相关工具方法 +│ └── util.js +├── pages # 页面 +│ └── uni-stat # uni统计页面 +│ │── channel # 渠道(app) +│ │ │── channel.vue # 页面(下同) +│ │ └── fieldsMap.js # 字段配置(下同) +│ │── device # 设备统计 +│ │ │── activity # 渠道/场景分析 +│ │ │ │── activity.vue +│ │ │ └── fieldsMap.js +│ │ │── comparison # 平台对比 +│ │ │ │── comparison.vue +│ │ │ └── fieldsMap.js +│ │ │── overview # 今日概览 +│ │ │ │── overview.vue +│ │ │ └── fieldsMap.js +│ │ │── retention # 留存 +│ │ │ │── retention.vue +│ │ │ └── fieldsMap.js +│ │ │── stickiness # 粘性 +│ │ │ │── stickiness.vue +│ │ │ └── fieldsMap.js +│ │ └── trend # 趋势分析 +│ │ │── trend.vue +│ │ └── fieldsMap.js +│ │── error # 错误分析 +│ │ │── error.vue +│ │ └── fieldsMap.js +│ │── event # 事件分析 +│ │ │── event.vue +│ │ └── fieldsMap.js +│ │── index # 统计首页 +│ │ │── index.vue +│ │ └── fieldsMap.js +│ │── page-ent # 入口页 +│ │ │── page-ent.vue +│ │ └── fieldsMap.js +│ │── page-res # 受访页 +│ │ │── page-res.vue +│ │ └── fieldsMap.js +│ │── scene # 场景值(小程序) +│ │ │── scene.vue +│ │ └── fieldsMap.js +│ └── user # 用户统计 +│ │── activity # 渠道/场景分析 +│ │ │── activity.vue +│ │ └── fieldsMap.js +│ │── comparison # 平台对比 +│ │ │── comparison.vue +│ │ └── fieldsMap.js +│ │── overview # 今日概览 +│ │ │── overview.vue +│ │ └── fieldsMap.js +│ │── retention # 留存 +│ │ │── retention.vue +│ │ └── fieldsMap.js +│ │── stickiness # 粘性 +│ │ │── stickiness.vue +│ │ └── fieldsMap.js +│ └── trend # 趋势分析 +│ │── trend.vue +│ └── fieldsMap.js +├── static +├── store +├── admin.config.js +├── App.vue +├── main.js +├── mainfest.json +├── pages.json +├── postcss.config.js +└── uni.scss +``` + ### 服务端说明 -** 1. 服务端构成** +**1. 服务端构成** + - `uni-config-center/uni-stat 配置模块`:给`uni-stat 公共模块`提供运行必要的配置参数。 - `uni-stat 公共模块`:数据处理模块,包括收集上报数据的处理入库及定时任务的数据处理。 - `uni-stat-receiver 上报数据接收器`:接收客户端上报数据并转发给公共模块处理。注意:该云对象依赖于`uni-id`公共模块。 @@ -451,7 +539,10 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` - `index.js文件` 代理入口文件。 -## 扩展和自定义方式 + + + + diff --git a/docs/uniCloud/clientdb.md b/docs/uniCloud/clientdb.md index 0c728d8cd8fc3fb675997625635d5564b26f8f35..b99aedaaf42c49c6131666a8ec3453fce3ceec55 100644 --- a/docs/uniCloud/clientdb.md +++ b/docs/uniCloud/clientdb.md @@ -16,7 +16,7 @@ JQL语法相关文档已移至:[JQL语法](uniCloud/jql.md) 在`DB Schema`中,配置数据操作的权限和字段值域校验规则,阻止前端不恰当的数据读写。详见:[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema) -如果想在数据库操作之前或之后需要在云端执行额外的动作(比如获取文章详情之后阅读量+1),`clientDB`提供了action云函数机制。在HBuilderX项目的`cloudfunctions/uni-clientDB-actions`目录编写上传js,参考:[action](uniCloud/jql?id=action) +如果需要数据库操作之前或之后,云端执行关联逻辑(比如获取文章详情后,文章阅读量+1),`clientDB`提供了action云函数机制。在HBuilderX项目的`cloudfunctions/uni-clientDB-actions`目录编写上传js,参考:[action](uniCloud/jql?id=action) **注意** diff --git a/docs/uniCloud/jql.md b/docs/uniCloud/jql.md index 33f543fd6ee31f4754cf986fa38d1a6810a1b999..98757ddfb376a17c40cb6a6330e445b2288e7212 100644 --- a/docs/uniCloud/jql.md +++ b/docs/uniCloud/jql.md @@ -11,7 +11,7 @@ - sql是一种字符串表达式,写法形如: ``` -select * from table1 where field1="123" +select * from table1 where field1="value1" ``` - nosql是js方法+json方式的参数,写法形如: @@ -19,7 +19,7 @@ select * from table1 where field1="123" ```js const db = uniCloud.database() let res = await db.collection('table').where({ - field1: '123' + field1: 'value1' }).get() ``` @@ -42,7 +42,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型 如果要表达`或`关系,需要用`or`方法,写法更复杂 ```js - field1:dbCmd.gt(4000).or(dbCmd.gt(6000).and(dbCmd.lt(8000))) + field1:dbCmd.gt(0).or(dbCmd.lt(-5)) ``` 2. nosql的联表查询写法,比sql还复杂