# uni-polymerize
**Repository Path**: yingbing-developer/uni-polymerize
## Basic Information
- **Project Name**: uni-polymerize
- **Description**: 基于uni-app 聚合资源的app
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 15
- **Forks**: 12
- **Created**: 2022-12-20
- **Last Updated**: 2025-07-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#应用介绍
* 1、该项目为聚合资源APP,暂只支持安卓APP
* 2、聚合资源包括小说、漫画、视频、直播、文章、论坛、音乐等
* 3、该项目支持加载外部来源,也支持内置来源
* 4、为避免版权问题,该项目不提供内置源
* 5、[1.0版本的好用聚合库链接](https://gitee.com/yingbing-developer/uni-polymerize_1.git)
* 6、[项目使用图标库](https://www.iconfont.cn/collections/detail?cid=33)
* 7、有什么不懂的,可以加群 1087735942 聊
#免责声明
* 本免责声明(以下简称“免责声明”或“本声明”)适用于好用聚合项目(以下简称"好用聚合"),在使用人及组织(以下简称"使用者")阅读本声明后若不同意此声明中的任何条款,或对本声明存在质疑,请立刻停止使用此项目。若您已经开始或正在使用此项目,则表示您已阅读并同意本声明的所有条款之约定。
* 1.使用者通过任何形式或方式使用好用聚合即表示您已经同意本声明,本声明立即自动生效。
* 2.使用者使用好用聚合自行承担风险,作者不做任何形式的保证, 因代码质量、系统BUG等任何技术原因而引起的问题,作者也不承担任何法律责任。
* 3.使用者保证好用聚合不用于任何违法犯罪行为,如传播色情、赌博等。
* 4.使用者保证好用聚合所展示内容不涉及版权或隐私等问题。
* 5.使用者保证好用聚合不用于任何商业或盈利等行为。
* 6.使用者使用好用聚合违反上述任何行为所造成的一切后果均由使用者承担。
#源规则详解
* 内置方法
| 方法名 | 说明 |
| :---- | :---- |
| HTMLParser | 格式化html字符串,用于获取数据 |
| Base64 | base64加密和解密方法 |
| CryptoJS | CryptoJS工具组 |
| Xhr | xmlHttpRequest方法 |
| Http | uni.request方法 |
| GBK | 转gbk编码格式 |
| HtmlDecode | 解密特殊字符 |
| DecodeUnicode | 三方字体解码 |
| DateFormat | 日期转换 |
| TimeFormat | 时间转换 |
| TimeToseconds | 时间转换秒数 |
| RandomSoleNumbers | 生成随机不重复数字 |
| RandomNumberString | 生成随机不重复数字字符串 |
| RandomId | 生成随机id |
| RandomString | 生成随机字符串 |
| TypeCall | 判断变量类型 |
| TimeMinuse | 计算2个时间差的分钟数或者秒数 |
| Suffix | 获取文件名或者路径的文件后缀 |
| RemoveUrl | 移除http域名 |
| Zeroize | 给数字补零 |
| ConvertUrlQueryObject | 转化url参数为对象 |
* 关键词
| 方法名 | 说明 |
| :---- | :---- |
| | 条件判断 |
| | 满足条件判断执行 |
| | 不满足条件判断执行 |
| | 执行js |
* 特殊转义字符
| 转义字符 | 原字符 | 说明 |
| :---- | :----: | :---- |
| &es; | \\ | 斜杠 |
| &wrap; | \n | 换行 |
|   ; | | 空格 |
| &tabu; | \t | 制表符 |
| " ; | \" | 双引号 |
| &apos ; | \' | 单引号 |
| < ; | < | 左尖括号 |
| > ; | > | 右尖括号 |
| &oe; | { | 左大括号 |
| &ce; | } | 右大括号 |
* 声明符
| 方法名 | 说明 |
| :---- | :---- |
| @text: | 文本声明符(直接返回文本) |
| @sync: | 同步方法声明符 |
| @async: | 异步方法声明符 |
| @sel: | dom方法声明符(实例化html字符串提取dom) |
| @json: | json方法声明符(获取json属性) |
| @for: | for循环声明符 |
| @map: | map循环声明符(返回最终的列表) |
| @filter: | 过滤声明符(过滤不满足条件的循环项) |
| @find: | 查找声明符(找到满足条件的一项) |
| @sort: | 排序声明符(排序) |
| @replace: | 替换声明符(替换单个字符串) |
| @replaceAll: | 替换全部声明符(替换所有满足条件的字符串) |
| @plain: | 纯文本声明符(去除文本中的所有html标签和换行符只保留文本内容) |
| @split: | 分割声明符(分割字符串为数组) |
| @string: | 转化字符串声明符(将数组转化为字符串等同于toString) |
| @dateFormat: | 日期格式转换声明符 |
| @join: | 数组转字符串声明符 |
| @slice: | 字符串和数组切割声明符 |
| @trim: | 修剪声明符(去除字符串左右空格) |
| @have: | 包含声明符(判断字符串中是否包含某个字符串) |
| @unhave: | 不包含声明符(判断字符串中是否不包含某个字符串) |
| @equal: | 相等声明符(判断两个参数是否相等) |
| @unequal: | 不等声明符(判断两个参数是否不等) |
| @eval: | 字符串转函数声明符(尝试转换字符串为函数) |
| @query: | 链接参数获取并转换对象声明符(将url链接上拼接的参数转化为对象并返回) |
| @match: | 正则匹配声明符(使用正则表达式匹配字符串中的字符) |
| @reverse: | 反转声明符(反转数组) |
| @encodeUri: | 转义声明符(等同于js的encodeURIComponent) |
| @decodeUri: | 反转义声明符(等同于js的decodeURIComponent) |
| @objectKeys: | 对象key属性整合数组声明符(等同于js的Object.keys) |
| @objectArray: | 对象转换数组声明符(将对象转化为数组) |
| @upper: | 大写字母声明符(转化小写字母为大写字母) |
| @lower: | 小写字母声明符(转化大写字母为小写字母) |
| @response: | 返回结果声明符(直接使用该返回结果) |
* 使用示例:
```json
//@text:使用示例
{
"test1": "@text:玄幻小说",//通常形式(输出 "玄幻小说")
"test2": "玄幻小说",//当没有其它声明符时可省略(输出 "玄幻小说")
"test3": "@text:@sync:return '玄幻小说'",//当有其它声明符时不可省略(输出 "@sync:return '玄幻小说'")
"test4": "@text:你好这是一本@sync:return '玄幻小说'"//配合可以选择编译任意声明符而不是直接输出文本(输出 "你好这是一本玄幻小说")
}
//@sync:使用示例
{
"test1": "@sync:return '玄幻小说'",//普通用法(输出 "玄幻小说")
"test2": "@sync:return '玄幻小说'@sync:return lastResult.replace('小说','')",//继承上类规则结果lastResult(输出 "玄幻")
"test3": "@sync:return Suffix('这是一个文件.mp4')"//调用内置方法(输出 "mp4")
}
//@async:使用示例
{
"test1": "@async:return await Http.get('https://www.baidu.com')",//普通用法(输出 "百度页面的html")
"test2": "@sync:return 'https://www.baidu.com'@async:return await Http.get(lastResult)"//继承上类规则结果lastResult(输出 "百度页面的html")
}
//@json:使用示例
{
"test1": "@sync:return {'name': '名字', value: '123'}@json:name",//调用对象(输出 "名字")
"test2": "@sync:return {list: ['你好', '不好', '很好']}@json:list[1]"//调用数组(输出 "不好")
}
//@sel:使用示例
{
"test1": "@sel:id.text>>text",//id选择器 假设有html文本 玄幻小说(输出 "玄幻小说")
"test2": "@sel:class.text[0]>>text",//class选择器 假设有html文本 玄幻小说(输出 "玄幻小说")
"test3": "@sel:tag.span[0]>>text",//tag选择器 假设有html文本 玄幻小说(输出 "玄幻小说")
"test4": "@sel:class.item[0]>>class.text[1]>>text",
//多层选择 假设有html文本
玄幻小说悬疑小说
(输出 "悬疑小说")
"test5": "@sel:class.text[0]>>attr.title",//获取标签属性 假设有html文本 (输出 "玄幻小说")
"test6": "@sel:id.item>>content",//获取innerHTML内容 假设有html文本 玄幻小说
(输出 "玄幻小说")
"test6": "@sel:id.item>>html",//获取outerHTML内容 假设有html文本 玄幻小说
(输出 "玄幻小说
")
}
//@for:使用示例
{
"test1": "@sync:return [{name: '玄幻'},{name: '悬疑'}]@for:result.push(item.name)"//普通用法(输出 "['玄幻', '悬疑']")
}
//@map:使用示例
{
"test1": "@sync:return [{name: '玄幻'},{name: '悬疑'}]@map:item.name",//普通用法(输出 "['玄幻', '悬疑']")
"test2": "@sync:return [{name: '玄幻', value: 1},{name: '悬疑', value: 2}]@map:{ return item.name + item.value}"//复杂用法(输出 "['玄幻1', '悬疑2']")
}
//@filter:使用示例
{
"test1": "@sync:return [{name: '玄幻'},{name: '悬疑'},{name: '古风'}]@filter:item.name == '玄幻'",//普通用法(输出 "[{name: '玄幻'}]")
"test2": "@sync:return [{name: '玄幻', value: 1},{name: '悬疑', value: 2}]@filter:{ return item.name == '悬疑' && item.value == 2}"//复杂用法(输出 "[{name: '悬疑', value: 2}]")
}
//@sort:使用示例
{
"test1": "@sync:return [4,1,6,8,10]@sort:a-b",//普通用法(输出 "[1,4,6,8,10]")
"test2": "@sync:return [{name: '悬疑', value: 2}, {name: '玄幻', value: 1}, {name: '古风', value: 3}]@sort:{ return a.value - b.value }"//复杂用法(输出 "[{name: '玄幻', value: 1}, {name: '悬疑', value: 2}, {name: '古风', value: 3}]")
}
//@find:使用示例
{
"test1": "@sync:return [{name: '悬疑'}, {name: '玄幻'}, {name: '古风'}]@find:item.name == '悬疑'",//普通用法(输出 "{name: '悬疑'}")
"test2": "@sync:return [{name: '悬疑'}, {name: '玄幻'}, {name: '古风'}]@find:{ var name = '悬疑';return item.name == name }"//复杂用法(输出 "{name: '悬疑'}")
}
//@replace:使用示例
{
"test1": "@sync:return '玄幻小说'@replace:小说>>漫画",//普通用法(输出 "玄幻漫画")
"test2": "@sync:return '玄幻小说'@replace:小说"//替换字符串为空(输出 "玄幻")
}
//@replaceAll:使用示例
{
"test1": "@sync:return '玄幻小说科幻小说'@replaceAll:小说>>漫画",//普通用法(输出 "玄幻漫画科幻漫画")
"test2": "@sync:return '玄幻小说科幻小说'@replaceAll:小说"//替换字符串为空(输出 "玄幻科幻")
}
//@plain:使用示例
{
"test1": "@sync:return '玄幻小说
'@plain:"//普通用法(输出 "玄幻小说")
}
//@split:使用示例
{
"test1": "@sync:return '玄幻,科幻'@split:,",//普通用法(输出 "['玄幻', '科幻']")
"test2": "@sync:return '玄幻,科幻'@split:,>>1"//指定下标(输出 "科幻")
}
//@string:使用示例
{
"test1": "@sync:return ['玄幻','科幻','古风']@string:",//普通用法(输出 "玄幻,科幻,古风")
"test2": "@sync:return 10@string:2",//转换2进制(输出 "1010")
"test3": "@sync:return 10@string:16"//转换16进制(输出 "A")
}
//@dateFormat:使用示例
{
"test1": "@sync:return 1695608527060@dateFormat:",//时间戳转换(输出 "2023-09-25 10:23:21")
"test2": "@sync:return 1695608527060@dateFormat:yyyy-mm-dd",//只转换日期(输出 "2023-09-25")
"test3": "@sync:return 1695608527060@dateFormat:hh:mm:ss"//只转换时间(输出 "10:23:21")
}
//@join:使用示例
{
"test1": "@sync:return ['玄幻','科幻','古风']@join:;"//普通用法(输出 "玄幻;科幻;古风")
}
//@slice:使用示例
{
"test1": "@sync:return '玄幻小说'@slice:0>>1",//截取字符串(输出 "玄")
"test1": "@sync:return ['玄幻', '科幻']@slice:0>>1",//截取数组(输出 "['玄幻']")
"test1": "@sync:return '玄幻小说'@slice:1"//不传最后位置默认截取到最后(输出 "幻小说")
}
//@trim:使用示例
{
"test1": "@sync:return ' 这是一段2边有空格的文本 '@trim:"//普通用法(输出:"这是一段2边有空格的文本")
}
//@have:使用示例
{
"test1": "@sync:return '这本小说已完结'@have:已完结"//普通用法(输出:"true")
}
//@equal:使用示例
{
"test1": "@sync:return 500@equal:50"//普通用法(输出:"false")
}
//@unequal:使用示例
{
"test1": "@sync:return 500@unequal:50"//普通用法(输出:"true")
}
//@eval:使用示例
{
"test1": "@sync:return 'function () { return [1,2,3,4,5] }'@eval:",//普通用法(输出:"[1,2,3,4,5]")
"test2": "@sync:return '[1,2,3,4,5]'@eval:function"//普通字符串强制转化为function用法(输出:"[1,2,3,4,5]")
}
//@query:使用示例
{
"test1": "@sync:return '/article/read.html?id=150&c=123'@query:",//普通用法(输出:"{id: 150, c: 123}")
}
//@match:使用示例
{
"test1": "@sync:return '你看过这本小说吗这是一本不错的小说'@match:小说>>小说",//普通用法(输出:"['小说吗这是一本不错的小说', '吗这是一本不错的']")
"test2": "@sync:return '/article/150215.html'@match:article&es;/>>.html>>1"//复杂用法(输出:"150215")
}
//@reverse:使用示例
{
"test1": "@sync:return [1,2,3]@reverse:"//普通用法(输出:"[3,2,1]")
}
//@encodeUri:使用示例
{
"test1": "@sync:return '?id=123&c=123'@encodeUri:"//普通用法(输出:"id%3D123%26c%3D123")
}
//@decodeUri:使用示例
{
"test1": "@sync:return 'id%3D123%26c%3D123'@decodeUri:"//普通用法(输出:"?id=123&c=123")
}
//@objectKeys:使用示例
{
"test1": "@sync:return {name: 1, value: 2}@objectKeys:"//普通用法(输出:"['name', 'value']")
}
//@objectArray:使用示例
{
"test1": "@sync:return {name: 1, value: 2}@objectArray:"//普通用法(输出:"[1, 2]")
}
//@upper:使用示例
{
"test1": "@sync:return 'name'@upper:"//普通用法(输出:"NAME")
}
//@lower:使用示例
{
"test1": "@sync:return 'NAME'@lower:"//普通用法(输出:"name")
}
//@response:使用示例
{
"list": "@sel:class.item",//获取class为item的所有元素,输出数组
"title": "@sel:text",//获取每一项中的文本内容
"description": "@response:@sel:class.intro>>text"//通过response声明该项不从列表中获取数据,直接指定从元数据中获取
}
//使用示例
{
"test1": "@sync:return true@sync: return '正确'",//(输出:"正确")
"test2": "@sync:return false@sync: return '正确'@sync: return '错误'"//(输出:"错误")
}
//list列表示例
{
"list": "@sel:class.items",//特殊属性(一定要保证返回的是列表)
"filter": "@sel:class.title[0]>>text@have:",//特殊字段 用于筛选列表(这里表示筛选出包含类名为title且包裹文本内容的元素)
"...": "..."//自定义属性除了特殊字段其余为自定义属性
}
```
#源规则基本结构
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| id | String | ---- | ---- | 应用唯一id |
| name | String | ---- | ---- | 应用名称 |
| type | String | ---- | ---- | 应用类型 |
| creator | String | ---- | ---- | 应用创建者 |
| description | String | ---- | ---- | 应用简介 |
| versionCode | Number | 100 | ---- | 应用版本号 |
| versionName | String | 1.0.0 | ---- | 应用版本名称 |
| href | String | ---- | ---- | 应用主域名(在请求缺少域名时会使用该域名拼接) |
| logo | String | ---- | ---- | 应用图标网络路径 |
| themeColor | String | ---- | ---- | 主题颜色 |
| cacheEfficiency | Number | 100000 | ---- | 请求结果缓存有效时间 |
| isAdult | Number | 0 | 1/0 | 是否包含敏感内容 |
| dynamic | Object | ---- | ---- | 动态域名请求规则 |
| globalStyle | Object | ---- | ---- | 公共样式 |
| tabbar | Object | ---- | ---- | 应用底部导航栏 |
| pages | Array | ---- | ---- | 应用页面集合 |
* 示例用法
```json
{
"id": "......",//应用id
"name": "......",//应用名称
"type": "......",//应用类型
"creator": "......",//应用创建者
"versionCode": 100,//应用版本号
"versionName": "1.0.0",//应用版本
"description": "......",//应用简介
"href": "......",//应用链接
"logo": "......",//应用图标
"themeColor": "#F5F5F5",//主题颜色
"cacheEfficiency": 100000,//缓存有效时间
"isAdult": 0,//是否敏感
"dynamic": {},//动态链接请求
"globalStyle": {},//应用公共样式
"tabbar": {},//应用tabbar
"pages": []//应用页面列表
}
```
#request(请求)
* 注意事项
- 在请求中的属性出现{{}}双大括号包裹的内容表示动态绑定 例:"url": "/cat/1.html?&page={{page}}",page表示当前的页数
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| url | String | ---- | ---- | 请求链接 |
| device | String | 电脑 | 电脑/手机 | 请求平台 |
| method | String | get | get/post/postget | 请求方式 |
| params | Object | ---- | ---- | 请求参数 |
| header | Object | ---- | ---- | 请求头 |
| timeout | Number | 10000 | ---- | 请求超时时间 |
| charset | String | utf-8 | utf-8/gbk | 请求编码格式 |
| response | String | ---- | ---- | 请求结果处理规则 |
| cacheEfficiency | Number | 10000 | ---- | 请求结果缓存时间 |
* 可能出现的动态绑定数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| page | Number | 1 | ---- | 当前页数 |
| keyword | String | ---- | ---- | 搜索关键字(页面开启搜索功能后) |
| $ + 序号(例:$1) | String | ---- | $1/$2/$3/... | filter(筛选页)选中的选项值 |
| left | String | ---- | ---- | linkage(双向联动页面)左边选项栏选中值 |
| top | String | ---- | ---- | linkage(双向联动页面)顶部选项栏选中值 |
* 示例用法
```json
{
"request": {
"url": "https://www.test.com/cat/1.html?&page={{page}}",//请求链接
"params": {
"sort": "{{$1}}",
"sign": "{{$2}}"
},
"device": "电脑"//请求平台
}//请求
}
```
#dynamic(动态域名请求规则)(同上方request结构相同,只是多了result结果返回)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| result | String | ---- | ---- | 最后返回的结果规则 |
* 示例用法
```json
{
"id": "......",//应用id
"name": "......",//应用名称
"type": "......",//应用类型
"creator": "......",//应用创建者
"versionCode": 100,//应用版本号
"versionName": "1.0.0",//应用版本
"description": "......",//应用简介
"href": "......",//应用链接
"logo": "......",//应用图标
"isAdult": 0,//是否敏感
"dynamic": {
"url": "https://www.test.com",//请求链接
"deivce": "电脑",//请求平台
"result": "@sel:class.link>>attr.href"//返回结果
}
}
```
#页面样式
* globalStyle(默认样式)
* darkStyle(暗黑样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| navigationTitle | String | ---- | ---- | 顶部导航栏标题 |
| navigationTextColor | String | ---- | ---- | 顶部导航栏文字颜色 |
| navigationCapsuleStyle | String | auto | dark/light/auto | 胶囊按钮样式 |
| navigationBackground | String | ---- | ---- | 顶部导航栏背景(支持网络图片路径) |
| navigationBackgroundOpacity | Number | 1 | ---- | 顶部导航栏背景透明度 |
| enableNavigationTransparent | Number | 0 | 1/0 | 开启顶部导航栏背景透明 |
| enableNavigationCapsuleBorder | Number | 0 | 1/0 | 开启胶囊按钮边框 |
| enableNavigationSearchInput | Number | 0 | 1/0 | 开启顶部导航栏搜索框 |
| navigationSearchInputUrl | String | ---- | ---- | 顶部导航栏搜索框点击跳转链接(支持在线网址和规则页面) |
| navigationInputBackgroundColor | String | ---- | ---- | 顶部导航栏搜索框背景色 |
| navigationInputTextColor | String | ---- | ---- | 顶部导航栏搜索框提示文字颜色 |
| enablePulldown | Number | 0 | 1/0 | 开启下拉刷新 |
| enableLoadmore | Number | 0 | 1/0 | 开启上拉加载更多 |
| enableBackTop | Number | 0 | 1/0 | 开启返回顶部按钮 |
| enableBounce | Number | 0 | 1/0 | 开启页面回弹 |
| enableSwiper | Number | 0 | 1/0 | 开启左右滑动(仅支持filter/linkage/column/user类型页面) |
| enableSearch | Number | 0 | 1/0 | 开启搜索功能(仅支持module/column/filter/linkage类型页面) |
| enableTopGap | Number | 1 | 1/0 | 开启顶部间隔 |
| enableFilterIcon | Number | 1 | 1/0 | 强制开启筛选页面的筛选图标(仅支持filter页面) |
| backTopImage | String | ---- | ---- | 自定义返回按钮网络图片路径 |
| pulldownRefreshImage | String | ---- | ---- | 自定义下拉刷新图片网络路径 |
| background | String | ---- | ---- | 页面背景(支持网络图片路径) |
| backgroundBlur | Number | 10 | ---- | 页面背景高斯模糊 |
| pageMarginGap | Number | 20 | ---- | 页面左右边距 |
| componentBackgroundOpacity | Number | 1 | ---- | 统一设置页面组件背景透明度 |
| subsectionMainIndex | Number | 0 | ---- | 选项栏tabs的主要索引(仅支持filter页面) |
| subsectionColumn | Number/String | auto | auto/任意整数 | 选项栏tabs列数(仅支持filter/linkage/column/user类型页面) |
| subsectionBackgroundColor | String | ---- | ---- | 选项栏tabs背景色(仅支持filter/linkage/column/user类型页面) |
| subsectionSelectedColor | String | ---- | ---- | 选项栏tabs选中高亮色(仅支持filter/linkage/column/user类型页面) |
| loadingColor | String | ---- | ---- | 加载提示色 |
| themeColor | String | ---- | ---- | 应用主题色(统一设置高亮色) |
* 示例用法
```json
{
"id": "......",//应用id
"name": "......",//应用名称
"type": "......",//应用类型
"creator": "......",//应用创建者
"versionCode": 100,//应用版本号
"versionName": "1.0.0",//应用版本
"description": "......",//应用简介
"href": "......",//应用链接
"logo": "......",//应用图标
"isAdult": 0,//是否敏感
"globalStyle": {
"navigationTitle": "首页",//导航栏标题
"navigationTextColor": "#333333",//导航栏文字颜色
"darkStyle": {//暗黑模式
"navigationTextColor": "#999999",//导航栏文字颜色
}
}
}
```
#tabbar(底部导航栏)
* style(默认样式)
* darkStyle(暗黑样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| background | String | ---- | ---- | 底部导航栏背景(支持网络图片路径) |
| color | String | ---- | ---- | 底部导航栏默认颜色 |
| selectedColor | String | ---- | ---- | 底部导航栏选中高亮颜色 |
| backgroundOpacity | Number | 1 | ---- | 底部导航栏背景透明 |
* list(底部导航栏列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| name | String | ---- | ---- | 绑定页面名称 |
| icon | String | ---- | ---- | 默认图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| selectedIcon | String | ---- | ---- | 选中显示图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| text | String | ---- | ---- | 文字 |
* 示例用法
```json
{
"id": "......",//应用id
"name": "......",//应用名称
"type": "......",//应用类型
"creator": "......",//应用创建者
"versionCode": 100,//应用版本号
"versionName": "1.0.0",//应用版本
"description": "......",//应用简介
"href": "......",//应用链接
"logo": "......",//应用图标
"isAdult": 0,//是否敏感
"tabbar": {
"style": {
"background": "#ffffff",//tabbar背景
"color": "#cccccc",//默认颜色
"selectedColor": "#333333",//选中颜色
"darkStyle": {
"background": "#050505",//tabbar背景
"color": "#999999",//默认颜色
"selectedColor": "#cccccc",//选中颜色
}//暗黑模式 结构和style一样
},
"list": [{
"name": "index",//页面名称
"icon": "home",//默认图标
"selectedIcon": "home_fill",//选中图标
"text": "首页"//文字
},{
"name": "filter",//页面名称
"icon": "form",//默认图标
"selectedIcon": "form_fill",//选中图标
"text": "分类"//文字
}]//tabbar列表
},//应用tabbar
}
```
#pages(页面)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| name | String | ---- | ---- | 页面名称 |
| style | Object | ---- | ---- | 页面样式(详情查看上方globStyle) |
| type | String | ---- | module/filter/column/linkage/short/user/novel/comic/article/picture/video/audio/live | 页面类型 |
#页面跳转
* 1、通过每个页面的name来实现跳转,例如:
```json
{
"pages": [{
"name": "index",
"type": "module",
"style": {
"navigationTitle": "首页"
},
"components": [
{
"name": "search-input",
"style": {
"url": "search",//跳转name为search的规则页面
"placeholder": "点击搜索内容",//提示文字
"borderRadius": 10//圆角
}
}
]
},{
"name": "search",
"type": "module",
"style": {
"navigationTitle": "搜索页面",
"enableSearch": 1//开启搜索功能
}
}]//应用页面列表
}
```
* 2、跳转时可以携带参数,例如:
```json
{
"pages": [{
"name": "index",
"type": "module",
"style": {
"navigationTitle": "列表"
},
"cell": {
"staticData": [{
"title": "......",
"cover": "......",
"subtitle": "......",
"url": "detail?id=123"//跳转时携带id参数
}]
}
}, {
"name": "detail",
"type": "novel",
"style": {
"navigationTitle": "详情"
},
"detail": {
"request": {
"url": "/detail/{{id}}.html"//可以在请求当中动态绑定传过来的参数
},
"dynamicData": {
"title": "......",
"subtitle": "......",
"cover": "......"
}
}
}]//应用页面列表
}
```
* 3、跳转时可以携带固定参数来实现修改跳转页面的样式,例如:
```json
{
"pages": [{
"name": "index",
"type": "module",
"style": {
"navigationTitle": "列表"
},
"cell": {
"staticData": [{
"title": "......",
"cover": "......",
"subtitle": "......",
"url": "detail?id=123&background=https://www.test.com/images/151545.png"//跳转时background参数,该参数会覆盖掉跳转页面style样式中的background
}]
}
}, {
"name": "detail",
"type": "novel",
"style": {
"navigationTitle": "详情",
"background": "#f5f5f5"//跳转参数中携带background,则该样式会被覆盖
},
"detail": {
"request": {
"url": "/detail/{{id}}.html"//可以在请求当中动态绑定传过来的参数
},
"dynamicData": {
"title": "......",
"subtitle": "......",
"cover": "......"
}
}
}]//应用页面列表
}
```
* 4、跳转时可以携带固定参数来实现修改拥有选项栏页面的默认选项(比如column, filter, linkage页面):
```json
{
"pages": [{
"name": "index",
"type": "module",
"style": {
"navigationTitle": "首页"
},
"components": [
{
"name": "menu",
"style": {
"column": 2,
"columnGap": 15
},
"staticData": [,{
"icon": "close",
"title": "韩漫",
"url": "type?$2=2"//跳转参数中携带($+数字),filter页面默认选中第二个选项栏值为1的选项
},{
"icon": "close",
"title": "日漫",
"url": "art?selected=1"//跳转时携带selected参数,column页面默认显示第二栏
},{
"icon": "close",
"title": "排行",
"url": "rank?top=3&left=4"//跳转时携带top和left参数,linkage页面默认选中顶部导航栏值为3的选项和侧边导航栏值为4的选项
}]
}
]
}]
}
```
#module(模块页)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
| components | Array | ---- | ---- | 组件集合(具体见下方components组件讲解) |
* 示例用法
```json
{
"pages": [{
"name": "index",
"type": "module",
"style": {
"navigationTitle": "首页"
},
"components": [
{
"name": "search-input",
"style": {
"url": "search",//跳转name为search的规则页面
"placeholder": "点击搜索内容",//提示文字
"borderRadius": 10//圆角
}
}
],
"cell": {
"style": {
"cellName": "h-cell",
"cellImageWidth": 160,
"cellImageHeight": 220,
"cellDescriptionLines": 4
},
"request": {
"url": "/index",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.book-extra[0]>>text",
"description": "@sel:class.book-intro[0]>>text",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
}]//应用页面列表
}
```
#filter(筛选页)
* 注意事项
- filter页面如果有多个选项栏默认会折叠只显示一行,样式中subsectionMainIndex用于控制折叠后显示哪一个选项栏
- 选中的选项栏的值会以($ + 序号)的方式传给cell单元格列表的请求中,如第一行选项栏的值为($1)例:"url": "/cat/{{$1}}.html"
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| subsection | Object | ---- | ---- | 选项栏tabs |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
* subsection(选项栏)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| staticData | Array | ---- | ---- | 静态数据 |
| request | Object | ---- | ---- | 请求(详情见上方request请求讲解) |
| dynamicData | Object | ---- | ---- | 动态数据 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| label | String | ---- | ---- | 选项栏标题 |
| children | Array/Object | ---- | ---- | 选项栏集合 |
* children
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| label | String | ---- | ---- | 选项栏标题 |
| value | String | ---- | ---- | 选项栏绑定值 |
* 示例用法
```json
{
"pages": [{
"name": "type",
"type": "filter",
"style": {
"navigationTitle": "小说分类",
"background": "#fff",
"subsectionMainIndex": 2,
"enableSwiper": 0,
"enableNavigationSearchInput": 1,
"navigationSearchInputUrl": "search",
"enableLoadmore": 1
},
"darkStyle": {
"background": "#131313"
},
"subsection": {
"request": {
"url": "/cat/-1.html",
"device": "电脑"
},
"staticData": [{
"label": "排序",
"children": [{
"label": "综合排序",
"value": "hot"
},{
"label": "最多援力",
"value": "supp"
},{
"label": "最多收藏",
"value": "fav"
},{
"label": "最多字数",
"value": "wrods"
},{
"label": "最近更新",
"value": "updates"
}]
}],//静态数据
"dynamicData": [{
"label": "@sel:class.search-condition[1]>>class.condition-type[0]>>text",
"children": {
"list": "@sel:class.search-condition[1]>>tag.li",
"label": "@sel:tag.a[0]>>text",
"value": "@sel:tag.a[0]>>attr.href@split:sign=>>1"
}
},{
"label": "@sel:class.search-condition[2]>>class.condition-type[0]>>text",
"children": {
"list": "@sel:class.search-condition[2]>>class.special",
"label": "@sel:tag.a[0]>>text",
"value": "@sel:tag.a[0]>>attr.href@match:cat&es;/>>.html>>1"
}
}]//动态数据
},
"cell": {
"style": {
"cellImageWidth": 160,
"cellImageHeight": 220,
"cellDescriptionLines": 4
},
"request": {
"url": "/cat/{{$3}}.html",
"device": "电脑",
"params": {
"sort": "{{$1}}",
"sign": "{{$2}}",
"page": "{{page}}"
}
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>class.rank-book",
"title": "@sel:class.book-name[0]>>text",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.book-extra[0]>>text",
"description": "@sel:class.book-intro[0]>>text",
"url": "book?id=@sel:class.book-mask-left[0]>>attr.href@match:book&es;/>>.html>>1"
}
}
}]//应用页面列表
}
```
#column(分栏页)
* 注意事项
- column页面结构和module(模块页)基本一样,只是多了一层subsection包裹
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| subsection | Array | ---- | ---- | 选项栏tabs和页面类容 |
* subsection
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| label | String | ---- | ---- | 分栏标题 |
| components | Array | ---- | ---- | 组件集合(具体见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
* 示例用法
```json
{
"name": "article",
"type": "column",
"style": {
"navigationTitle": "文章列表",
"background": "#fff",
"enableNavigationSearchInput": 1,
"enableLoadmore": 1,
"navigationSearchInputUrl": "search",
"enableSwiper": 0
},
"darkStyle": {
"background": "#131313"
},
"subsection": [{
"label": "轻之专栏",
"cell": {
"style": {
"cellName": "v-cell",
"cellColumn": 1,
"cellImageHeight": 280
},
"request": {
"url": "/article/list?cat=1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.article-list[0]>>class.media",
"title": "@sel:class.media-object[0]>>attr.alt",
"cover": "@sel:class.media-object[0]>>attr.src",
"subtitle": "@sel:class.text-muted[0]>>text",
"url": "articledetail?id=@sel:tag.a[0]>>attr.href@match:article&es;/>>.html>>1"
}
}
},{
"label": "作者须知&公告",
"cell": {
"style": {
"cellName": "v-cell",
"cellColumn": 1,
"cellImageHeight": 280
},
"request": {
"url": "/article/list?cat=2&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.article-list[0]>>class.media",
"title": "@sel:class.media-object[0]>>attr.alt",
"cover": "@sel:class.media-object[0]>>attr.src",
"subtitle": "@sel:class.text-muted[0]>>text",
"url": "articledetail?id=@sel:tag.a[0]>>attr.href@match:article&es;/>>.html>>1"
}
}
}]
}
```
#linkage(双向联动页)
* 注意事项
- 选中的顶部选项栏的值会top方式传给cell单元格列表的请求中,例:"url": "/cat/{{top}}.html"
- 选中的左边选项栏的值会left方式传给cell单元格列表的请求中,例:"url": "/cat/{{left}}.html"
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| topSubsection | Object | ---- | ---- | 顶部选项栏tabs |
| leftSubsection | Object | ---- | ---- | 左边选项栏tabs |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
* topSubsection(顶部选项栏)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| staticData | Array | ---- | ---- | 静态数据 |
| request | Object | ---- | ---- | 请求(详情见上方request请求讲解) |
| dynamicData | Object | ---- | ---- | 动态数据 |
* leftSubsection(左边选项栏)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| staticData | Array | ---- | ---- | 静态数据 |
| request | Object | ---- | ---- | 请求(详情见上方request请求讲解) |
| dynamicData | Object | ---- | ---- | 动态数据 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| label | String | ---- | ---- | 选项栏标题 |
| value | String | ---- | ---- | 选项栏值 |
* 示例用法
```json
{
"name": "rank",
"type": "linkage",
"style": {
"navigationTitle": "排行榜",
"background": "#f5f5f5",
"subsectionColumn": 3,
"enableSwiper": 1,
"enableNavigationSearchInput": 1,
"navigationSearchInputUrl": "search",
"enableLoadmore": 1
},
"darkStyle": {
"background": "#050505"
},
"topSubsection": {
"staticData": [{
"label": "周排行",
"value": "week"
},{
"label": "月排行",
"value": "month"
},{
"label": "新书排行",
"value": "new"
}]
},
"leftSubsection": {
"request": {
"url": "/list/top",
"device": "手机"
},
"dynamicData": {
"list": "@sel:class.top-slide-menu[0]>>class.slide-menu-item",
"label": "@sel:text",
"value": "@sel:attr.value"
}
},
"cell": {
"style": {
"cellImageWidth": 160,
"cellImageHeight": 220,
"cellDescriptionLines": 4
},
"request": {
"url": "/hub/getTopBooks?unit={{left}}&page={{page}}&time={{top}}",
"device": "电脑"
},
"dynamicData": {
"list": "@json:data.books",
"title": "@json:name",
"cover": "@json:coverUrl",
"subtitle": "@text:@json:author/@json:hot",
"description": "@json:about",
"url": "book?id=@json:id"
}
}
}
```
#short(短视频页)
* 注意事项
- 想要实现短视频滑动加载必须设置enableLoadmore为1
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
* cell
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| src | String | ---- | ---- | 播放视频链接 |
| isLive | Number | 0 | 1/0 | 是否直播视频 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* 示例用法
```json
{
"name": "recome",
"type": "short",
"style": {
"navigationTitle": "推荐",
"enableNavigationTransparent": 1,
"enablePulldown": 1,
"enableLoadmore": 1
},
"cell": {
"request": {
"url": "/graphql",
"method": "post",
"params": {
"operationName": "visionNewRecoFeed",
"variables": {}
}
},
"dynamicData": {
"list": "@sync:return lastResult.data.visionNewRecoFeed ? lastResult.data.visionNewRecoFeed.feeds : lastResult.data.sameCityData.feeds",
"title": "@json:photo.caption",
"cover": "@json:photo.coverUrl",
"src": "@json:photo.photoUrl"
}
}
}
```
#novel(小说页)
* 注意事项
- 每个属性(例如:detail和items)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| items | Object | ---- | ---- | 章节列表 |
| context | Object | ---- | ---- | 章节正文 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* items(章节列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | Array | ---- | ---- | 标题 |
| ...(这里可以任意添加属性) | Any | ---- | ---- | 自定义属性(用于请求正文内容时使用,你可以自定义为任何内容) |
* context(章节正文)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| content | String | ---- | ---- | 正文内容 |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* 示例用法
```json
{
"name": "book",
"type": "novel",
"style": {
"navigationTitle": "小说详情",
"enableLoadmore": 1,
"componentBackgroundOpacity": 0.7
},
"detail": {
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.book-title[0]>>text",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.book-data[0]>>text",
"description": "@sel:class.about-text[0]>>text",
"tags": {
"list": "@sel:class.book-cats>>tag.a",
"title": "@sel:text",
"url": "@sel:attr.href@have:cattype?$3=@sel:attr.href@match:cat&es;/>>.html>>1@sel:attr.href@have:tagtag?navigationTitle=@sel:text&tag=@sel:attr.href@split:tag=>>1matchBooks?navigationTitle=@sel:text&mid=@sel:attr.href@split:mid=>>1"
}
}
},
"items": {
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.chapter",
"title": "@sel:tag.a[0]>>text",
"href": "@sel:tag.a[0]>>attr.href"
}
},
"context": {
"request": {
"url": "{{href}}",
"device": "电脑"
},
"dynamicData": {
"content": "@sel:class.article-text[0]>>content@replaceAll:<p>><p style="margin-top: 10px""
}
},
"comments": {
"request": {
"url": "/comment/items?type=book&tid={{id}}&pageSize=15&page={{page}}&_={{RandomNumberString(13)}}"
},
"dynamicData": {
"list": "@json:items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id",
"subComments": {
"list": "@json:replies.items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id"
}
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "作者",
"cellName": "h-cell",
"cellColumn": 1,
"cellImageWidth": 80,
"cellImageHeight": 80,
"cellDescriptionLines": 1,
"cellImageBorderRadius": 80
},
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.novelist",
"title": "@sel:class.name[0]>>tag.a[0]>>text",
"cover": "@sel:tag.img[0]>>attr.src",
"description": "@sel:class.about[0]>>text",
"url": "user?id=@sel:class.name[0]>>tag.a[0]>>attr.href@replace:/user/info?id="
}
},{
"name": "card",
"style": {
"cardTitle": "作者其它作品",
"cellName": "h-cell",
"cellColumn": 1,
"moreText": "更多",
"moreUrl": "userwork?id=@sel:class.section-helper[0]>>tag.a[0]>>attr.href@split:id=>>1"
},
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.from-author",
"title": "@sel:class.suggest-book-name[0]>>text",
"cover": "@sel:class.suggest-cover[0]>>tag.img[0]>>attr.src",
"description": "@sel:class.suggest-book-desc[0]>>text",
"url": "book?id=@sel:tag.a[0]>>attr.href@match:book&es;/>>.html>>1"
}
}]
}
```
#comic(漫画页)
* 注意事项
- 每个属性(例如:detail和items)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| items | Object | ---- | ---- | 章节列表 |
| context | Object | ---- | ---- | 章节正文 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* items(章节列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | Array | ---- | ---- | 标题 |
| content | String | ---- | ---- | 正文内容 |
| ...(这里可以任意添加属性) | Any | ---- | ---- | 自定义属性(用于请求正文内容时使用,你可以自定义为任何内容) |
* context(章节正文)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| content | Array | ---- | ---- | 正文内容 |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* 示例用法
```json
{
"name": "comic",
"type": "comic",
"style": {
"navigationTitle": "漫画详情",
"enableLoadmore": 1,
"componentBackgroundOpacity": 0.7
},
"detail": {
"request": {
"url": "/manhua/detail/{{id}}/",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.detail-info-title[0]>>text",
"cover": "@sel:class.detail-info-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.cy_xinxi[0]>>tex",
"description": "@sel:id.comic-description>>text",
"tags": {
"list": "@sel:class.cy_xinxixi[0]>>tag.a",
"title": "@sel:text",
"url": "tag?str=@sel:attr.href@replace:https://www.dongman.la"
}
}
},
"items": {
"request": {
"url": "/manhua/detail/{{id}}/",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:id.mh-chapter-list-ol-0>>tag.li@reverse:",
"title": "@sel:tag.a[0]>>text",
"href": "@sel:tag.a[0]>>attr.href"
}
},
"context": {
"request": {
"url": "{{href}}all.html",
"device": "电脑"
},
"dynamicData": {
"content": "@sel:class.imgListBox[0]>>tag.img>>attr.data-src"
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "可能感兴趣的",
"cellName": "v-cell",
"cellImageHeight": 300,
"cellColumn": 3,
"enableRefresh": 1
},
"request": {
"url": "/manhua/detail/{{id}}/",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:id.similarList>>tag.li",
"title": "@sel:tag.b[0]>>text",
"cover": "@sel:tag.img[0]>>attr.src",
"url": "comic?id=@sel:tag.a[0]>>attr.href@match:detail&es;/>>&es;/>>1"
}
}]
}
```
#video(视频页)
* 注意事项
- 每个属性(例如:detail和items)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| items | Object | ---- | ---- | 剧集列表 |
| context | Object | ---- | ---- | 剧集正文 |
| barrages | Object | ---- | ---- | 弹幕列表 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* items(剧集列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | Array | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 播放链接 |
| ...(这里可以任意添加属性) | Any | ---- | ---- | 自定义属性(用于请求正文内容时使用,你可以自定义为任何内容) |
* context(剧集正文)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 播放链接 |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* barrages(弹幕列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| text | String | ---- | ---- | 弹幕 |
| time | Number | ---- | ---- | 弹幕显示时间(单位s) |
| color | String | ---- | ---- | 弹幕颜色 |
* 示例用法
```json
{
"name": "video",
"type": "video",
"style": {
"navigationTitle": "视频详情",
"enableLoadmore": 1,
"enableNavigationTransparent": 1
},
"detail": {
"request": {
"url": "/index.php/vod/detail/id/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.page-title[0]>>text",
"cover": "@sel:class.video-cover[0]>>tag.img[0]>>attr.data-src",
"description": "@sel:class.video-info-main[0]>>text",
"tags": {
"list": "@sel:class.video-info-aux[0]>>tag.a",
"title": "@sel:text",
"url": "tag?href=@sel:attr.href&navigationTitle=@sel:text"
}
}
},
"items": {
"request": {
"url": "/index.php/vod/detail/id/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:id.sort-item-2>>tag.a",
"title": "@sel:text",
"requestHref": "@sel:attr.href"
}
},
"context": {
"request": {
"url": "{{requestHref}}",
"device": "电脑"
},
"dynamicData": {
"src": "@sel:class.player-wrapper[0]>>tag.script[0]>>content@replace:var player_aaaa=@sync:return JSON.parse(lastResult)@json:url",
"formats": "m3u8"
}
},
"comments": {
"request": {
"url": "/index.php/comment/ajax.html?rid={{id}}&mid=1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.mxone-comment__item",
"title": "@sel:class.title[0]>>text",
"avatar": "@sel:class.face[0]>>attr.src@sync:return lastResult.indexOf('http') == -1 ? 'http://www.lzizy9.com/' + lastResult : lastResult",
"subtitle": "@sel:class.text-muted@sync:return lastResult[1].innerHTML.trim() + ' ' + lastResult[0].innerHTML.trim()",
"content": "@sel:class.comment-cont[0]>>text"
}
},
"barrages": {
"request": {
"url": "{{requestHref}}",
"device": "电脑"
},
"dynamicData": {
"list": "@json:data.list",
"text": "@json:title",
"time": "@sel:time",
"color": "@sel:color"
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "相关影片",
"cellName": "v-cell",
"cellColumn": 3
},
"request": {
"url": "/index.php/vod/detail/id/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.module-items[0]>>class.module-item",
"title": "@sel:class.module-item-title[0]>>text",
"cover": "@sel:tag.img[0]>>attr.data-src",
"subtitle": "@sel:class.module-item-text[0]>>text",
"url": "video?id=@sel:class.module-item-title[0]>>attr.href@match:id&es;/>>.html>>1"
}
}]
}
```
#audio(音频页)
* 注意事项
- 每个属性(例如:detail和items)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| items | Object | ---- | ---- | 播放列表 |
| context | Object | ---- | ---- | 音频正文 |
| lyrics | Object | ---- | ---- | 歌词列表 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| content | String | ---- | ---- | 文本内容 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* items(播放列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | Array | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 播放链接 |
| ...(这里可以任意添加属性) | Any | ---- | ---- | 自定义属性(用于请求正文内容时使用,你可以自定义为任何内容) |
* context(音频正文)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 播放链接 |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* lyrics(歌词列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 歌词 |
| time | Number | ---- | ---- | 歌词显示时间 |
* 示例用法
```json
{
"name": "music",
"type": "audio",
"style": {
"navigationTitle": "音乐详情",
"componentBackgroundOpacity": 0.5
},
"detail": {
"request": {
"url": "/listen/{{id}}",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.frame1[0]>>tag.h1[0]>>text",
"subtitle": "@sel:class.song_info[0]>>text",
"cover": "@sel:class.music_intro[0]>>tag.img[0]>>attr.src@sync:return lastResult && lastResult.indexOf('http') == -1 ? 'https://www.itingwa.com' + lastResult : lastResult",
"content": "@sel:class.music_intro[0]>>content@replaceAll:src="&es;/file>>src="https://www.itingwa.com/file"
}
},
"items": {
"request": {
"url": "/listen/{{id}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.jp-jplayer",
"href": "@sel:attr.init-data"
}
},
"context": {
"request": {
"url": "{{href}}",
"device": "电脑"
},
"dynamicData": {
"src": "@sel:attr.init-data"
}
},
"lyrics": {
"request": {
"url": "{{href}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.jp-lyrics",
"title": "@sel:text",
"time": "@sel:attr.init-date"
}
},
"comments": {
"request": {
"url": "?c=comment&m=get_comment&id={{id}}&type=0&p={{page}}"
},
"dynamicData": {
"list": "@json:comments.list",
"title": "@json:u_name",
"subtitle": "@json:comm_addtime",
"avatar": "https://www.itingwa.com/upload/pic/180/@json:u_img",
"content": "@json:content",
"url": "user?id=@json:comm_user"
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "发布者",
"cellName": "h-cell",
"cellColumn": 1,
"cellImageWidth": 90,
"cellImageHeight": 90
},
"request": {
"url": "/listen/{{id}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rt_frame",
"title": "@sel:class.clearfix[0]>>class.nickname[0]>>text",
"subtitle": "@sel:class.user_data[0]>>text",
"cover": "@sel:class.clearfix[0]>>tag.img[0]>>attr.src",
"url": "user?id=@sel:class.clearfix[0]>>tag.a[0]>>attr.href@split:u/>>1"
}
},{
"name": "card",
"style": {
"cardTitle": "相关专辑",
"cellName": "v-cell",
"cellColumn": 3,
"cellImageHeight": 200
},
"request": {
"url": "/listen/{{id}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.album_items[0]>>tag.li",
"title": "@sel:class.top_10[0]>>text",
"cover": "@sel:tag.img[0]>>attr.src",
"url": "album?id=@sel:tag.a[0]>>attr.href@split:album/>>1&background=@sel:tag.img[0]>>attr.src"
}
}]
}
```
#picture(图片页)
* 注意事项
- 每个属性(例如:detail和items)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| items | Object | ---- | ---- | 图片列表 |
| context | Object | ---- | ---- | 图片正文 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* items(图片列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 图片链接 |
| ...(这里可以任意添加属性) | Any | ---- | ---- | 自定义属性(用于请求正文内容时使用,你可以自定义为任何内容) |
* context(图片正文)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面 |
| src | String | ---- | ---- | 图片链接 |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* 示例用法
```json
{
"name": "picture",
"type": "picture",
"style": {
"navigationTitle": "壁纸详情",
"enableNavigationTransparent": 1
},
"detail": {
"staticData": {
"cover": "{{background}}"
},
"request": {
"url": "{{href}}",
"device": "手机"
},
"dynamicData": {
"title": "@sel:class.detail-title[0]>>text",
"subtitle": "@sel:class.detail-info[0]>>text"
}
},
"items": {
"request": {
"url": "{{href}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.image-content[0]>>class.swiper-slide",
"title": "@sel:tag.img[0]>>attr.alt",
"cover": "https:@sel:tag.img[0]>>attr.data-src",
"src": "https:@sel:tag.img[0]>>attr.data-src"
}
},
"comments": {
"request": {
"url": "?c=comment&m=get_comment&id={{id}}&type=0&p={{page}}"
},
"dynamicData": {
"list": "@json:comments.list",
"title": "@json:u_name",
"subtitle": "@json:comm_addtime",
"avatar": "https://www.itingwa.com/upload/pic/180/@json:u_img",
"content": "@json:content",
"url": "user?id=@json:comm_user"
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "相关推荐",
"cellName": "v-cell",
"cellColumn": 2,
"cellImageHeight": 500
},
"request": {
"url": "{{href}}",
"device": "手机"
},
"dynamicData": {
"list": "@sel:class.list-ul[0]>>class.list-li",
"title": "@sel:class.li-title[0]>>text",
"cover": "https:@sel:tag.img[0]>>attr.data-src",
"url": "picture?href=@sel:tag.a[0]>>attr.href&background=https:@sel:tag.img[0]>>attr.data-src"
}
}]
}
```
#live(直播页)
* 注意事项
- 每个属性(例如:detail)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| barrages | Object | ---- | ---- | 弹幕列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"name": "live",
"type": "live",
"style": {
"navigationTitle": "直播详情",
"enableNavigationTransparent": 1
},
"detail": {
"request": {
"url": "/live/detail/{{id}}",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.vod>>attr.alt",
"cover": "@sel:class.cover>>attr.src",
"src": "@sel:class.vod>>attr.src"
}
}
}
```
#article(文章页)
* 注意事项
- 每个属性(例如:detail)中都默认包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| comments | Object | ---- | ---- | 评论列表 |
| components | Array | ---- | ---- | 组件列表(详情见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(详情见下方cell单元格讲解) |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| content | String | ---- | ---- | 文章内容 |
| tags | Object | ---- | ---- | 标签列表 |
| isAdult | Number | 0 | 1/0 | 是否敏感内容 |
* tags(标签列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* comments(评论列表)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| avatar | String | ---- | ---- | 头像网络图片路径 |
| title | String | ---- | ---- | 评论标题 |
| subtitle | String | ---- | ---- | 评论二级标题 |
| content | String | ---- | ---- | 评论内容 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| subComments | Object | ---- | ---- | 二级评论列表(结构和评论列表相同) |
| masterComments | Object | ---- | ---- | 顶部评论列表(结构和评论列表相同) |
* 示例用法
```json
{
"name": "articledetail",
"type": "article",
"style": {
"navigationTitle": "文章内容",
"enableLoadmore": 1
},
"detail": {
"request": {
"url": "/article/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.heading-block[0]>>class.title[0]>>text",
"subtitle": "@sel:class.heading-block[0]>>class.text-muted[0]>>text",
"cover": "@sel:class.article-cover[0]>>tag.img[0]>>attr.src",
"content": "@sel:id.article-content>>content"
}
},
"components": [{
"name": "card",
"style": {
"cardTitle": "热门推荐",
"cellName": "v-cell",
"cellColumn": 2,
"cellImageHeight": 140
},
"request": {
"url": "/article/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.recommend-list[0]>>class.recommend-item",
"title": "@sel:class.recommend-text[0]>>attr.title",
"cover": "@sel:class.recommend-cover[0]>>attr.style@match:background-image: url&es;('>>'&es;)>>1",
"url": "articledetail?id=@sel:attr.href@match:article&es;/>>.html>>1"
}
}],
"comments": {
"request": {
"url": "/comment/items?type=article&tid={{id}}&pageSize=15&page={{page}}&_={{RandomNumberString(13)}}"
},
"dynamicData": {
"list": "@json:items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id",
"subComments": {
"list": "@json:replies.items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id"
}
}
}
}
```
#user(用户页)
* 注意事项
- detail包含staticData,request和dynamicData属性,这里因为内容太多就不显示了
- subsection为集合,同column页面类似
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| detail | Object | ---- | ---- | 详情信息 |
| subsection | Array | ---- | ---- | 分栏列表 |
* detail(详情信息)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| avatar | String | ---- | ---- | 头像图片网络路径 |
| cover | String | ---- | ---- | 封面图片网络路径 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| isAdult | Number | 0 | 1/0 | 是否敏感 |
* subsection
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :---- | :----: | :----: | :----: | :---- |
| label | String | ---- | ---- | 分栏标题 |
| components | Array | ---- | ---- | 组件集合(具体见下方components组件讲解) |
| cell | Object | ---- | ---- | 单元格列表(具体见下方cell单元格讲解) |
* 示例用法
```json
{
"name": "user",
"type": "user",
"style": {
"navigationTitle": "作者信息",
"enableNavigationTransparent": 1,
"enableSwiper": 1,
"background": "#ffffff",
"subsectionColumn": 3
},
"darkStyle": {
"background": "#131313"
},
"detail": {
"request": {
"url": "/user/info?id={{id}}",
"device": "电脑"
},
"dynamicData": {
"title": "@sel:class.r-side[0]>>class.name[0]>>tag.p[0]>>text",
"avatar": "@sel:class.r-side[0]>>class.profile-cover[0]>>tag.img[0]>>attr.src",
"cover": "https://eli.linovel.net/static/img/profile_cover.22b302b.jpg",
"description": "@sel:class.r-side[0]>>class.profile[0]>>class.list[0]>>text"
}
},
"subsection": [{
"label": "小说",
"cell": {
"style": {
"cellName": "v-cell",
"cellColumn": 3,
"cellImageHeight": 300
},
"request": {
"url": "/user/info?id={{id}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.works-grid[0]>>class.grid",
"title": "@sel:class.title[0]>>text",
"cover": "@sel:tag.img[0]>>attr.src",
"url": "book?id=@sel:tag.a[0]>>attr.href@match:book&es;/>>.html>>1"
}
}
},{
"label": "粉丝",
"style": {
"enableLoadmore": 1
},
"cell": {
"style": {
"cellName": "h-cell",
"cellColumn": 1,
"cellImageWidth": 80,
"cellImageHeight": 80,
"cellImageBorderRadius": 80
},
"request": {
"url": "/user/followerList?id={{id}}&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.user-list[0]>>tag.li",
"title": "@sel:class.name[0]>>text",
"subtitle": "@sel:class.sign[0]>>text",
"cover": "@sel:tag.img[0]>>attr.data-original",
"url": "user?id=@sel:tag.a[0]>>attr.href@replace:/user/info?id="
}
}
},{
"label": "关注",
"style": {
"enableLoadmore": 1
},
"cell": {
"style": {
"cellName": "h-cell",
"cellColumn": 1,
"cellImageWidth": 80,
"cellImageHeight": 80,
"cellImageBorderRadius": 80
},
"request": {
"url": "/user/followeeList?id={{id}}&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.user-list[0]>>tag.li",
"title": "@sel:class.name[0]>>text",
"subtitle": "@sel:class.sign[0]>>text",
"cover": "@sel:tag.img[0]>>attr.data-original",
"url": "user?id=@sel:tag.a[0]>>attr.href@replace:/user/info?id="
}
}
}]
}
```
#cell(单元格)
* h-cell(横向单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | h-cell | ---- | 单元格名称 |
| cellColumn | Number | 3 | ---- | 列数 |
| cellImageWidth | Number | 120 | ---- | 图片宽度 |
| cellImageHeight | Number | 160 | ---- | 图片高度 |
| cellImageBorderRadius | Number | 10 | ---- | 图片圆角 |
| cellImageTipSize | Number | 20 | ---- | 图片加载提示文字大小 |
| cellTitleLines | Number | 1 | ---- | 标题最多显示多少行 |
| cellDescriptionLines | Number | 3 | ---- | 简介最多显示多少行 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| subTitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| cover | String | ---- | ---- | 图片地址 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"cell": {
"style": {
"cellName": "h-cell",
"cellImageWidth": 160,
"cellImageHeight": 220,
"cellDescriptionLines": 4
},
"request": {
"url": "/search/?kw={{keyword}}&sign={{$2}}&sort={{$1}}&words=-1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.book-extra[0]>>text",
"description": "@sel:class.book-intro[0]>>text",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
}
```
* v-cell(竖向单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | v-cell | ---- | 单元格名称 |
| cellColumn | Number | 3 | ---- | 列数 |
| cellImageHeight | Number | 240 | ---- | 图片高度 |
| cellImageBorderRadius | Number | 10 | ---- | 图片圆角 |
| cellImageTipSize | Number | 20 | ---- | 图片加载提示文字大小 |
| cellTitleLines | Number | 1 | ---- | 标题最多显示多少行 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| subTitle | String | ---- | ---- | 二级标题 |
| cover | String | ---- | ---- | 图片地址 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"cell": {
"style": {
"cellName": "v-cell",
"cellImageHeight": 240,
"cellColumn": 3,
},
"request": {
"url": "/search/?kw={{keyword}}&sign={{$2}}&sort={{$1}}&words=-1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"subtitle": "@sel:class.book-extra[0]>>text",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
}
```
* img-cell(图片单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | img-cell | ---- | 单元格名称 |
| cellColumn | Number | 3 | ---- | 列数 |
| cellImageHeight | Number | 240 | ---- | 图片高度 |
| cellImageBorderRadius | Number | 10 | ---- | 图片圆角 |
| cellImageTipSize | Number | 20 | ---- | 图片加载提示文字大小 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cover | String | ---- | ---- | 图片地址 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"cell": {
"style": {
"cellName": "img-cell",
"cellImageHeight": 240,
"cellColumn": 3,
},
"request": {
"url": "/search/?kw={{keyword}}&sign={{$2}}&sort={{$1}}&words=-1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"cover": "@sel:class.book-cover[0]>>tag.img[0]>>attr.src",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
}
```
* text-cell(文字单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | text-cell | ---- | 单元格名称 |
| cellColumn | Number | 3 | ---- | 列数 |
| cellTitleLines | Number | 1 | ---- | 标题最多显示多少行 |
| cellDescriptionLines | Number | 3 | ---- | 简介最多显示多少行 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| subTitle | String | ---- | ---- | 二级标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"cell": {
"style": {
"cellName": "text-cell",
"cellImageHeight": 240,
"cellColumn": 3,
},
"request": {
"url": "/search/?kw={{keyword}}&sign={{$2}}&sort={{$1}}&words=-1&page={{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"subtitle": "@sel:class.book-extra[0]>>text",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
}
```
* tag-cell(标签单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | tag-cell | ---- | 单元格名称 |
| cellColumn | Number/String | auto | ---- | 列数 |
| cellTitleLines | Number | 1 | ---- | 标题最多显示多少行 |
| cellTitleSize | Number | 24 | ---- | 标签文字大小 |
| cellBorderRadius | Number | 10 | ---- | 标签圆角 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "card",
"style": {
"cardTitle": "热门标签",//卡片标题
"cellName": "tag-cell",
"cellColumn": "auto",
},
"request": {
"url": "/search/?kw={{keyword}}&sign={{$2}}&sort={{$1}}&words=-1",
"device": "电脑"
},//请求
"dynamicData": {
"list": "@sel:class.rank-book-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}//动态数据
}
]
}
```
* article-cell(文章单元格)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cellName | String | article-cell | ---- | 单元格名称 |
| cellColumn | Number | 1 | ---- | 列数 |
| cellImageWidth | Number | 230 | ---- | 图片宽度 |
| cellImageHeight | Number | 190 | ---- | 图片高度 |
| cellTitleLines | Number | 1 | ---- | 标题最多显示几行 |
| cellDescriptionLines | Number | 3 | ---- | 简介最多显示几行 |
| cellImageTipSize | Number | 1 | ---- | 图片加载提示文字大小 |
| cellImageBorderRadius | Number | 10 | ---- | 图片圆角 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| subtitle | String | ---- | ---- | 二级标题 |
| description | String | ---- | ---- | 简介 |
| images | Array/String | ---- | ---- | 图片组 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"cell": {
"style": {
"cellName": "article-cell"
},
"request": {
"url": "?c=tingshuo&m=get_feeds",
"device": "电脑"
},
"dynamicData": {
"list": "@json:data@sel:tag.dl",
"title": "@sel:class.feed_detail[0]>>class.hide[0]>>text",
"description": "@sel:class.feed_info[0]>>tag.div[0]&&tag.div[1]>>text@string:",
"subtitle": "@sel:class.feed_info[0]>>tag.ul[0]>>text",
"images": "https://www.itingwa.com@sel:class.feed_img[0]>>attr.src",
"url": "@sel:tag.a[1]>>attr.href@have:listenmusic?id=@sel:tag.a[1]>>attr.href@split:listen/>>1@sel:tag.a[1]>>attr.href@have:albumalbum?id=@sel:tag.a[1]>>attr.href@split:album/>>1article?id=@sel:tag.a[1]>>attr.href@split:article/>>1&background=https://www.itingwa.com@sel:class.feed_img[0]>>attr.src",
"dataId": "@sel:attr.init-data"
}
}
}
```
* comment-cell(评论单元格)
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| subtitle | String | ---- | ---- | 二级标题 |
| avatar | String | ---- | ---- | 头像 |
| content | String | ---- | ---- | 评论内容 |
| masterComments | Array | ---- | ---- | 顶部评论集合 |
| subComments | Array | ---- | ---- | 二级评论集合 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"comments": {
"request": {
"url": "?c=comment&m=get_comment&id={{id}}&type=0&p={{page}}"
},
"dynamicData": {
"list": "@json:items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id",
"subComments": {
"list": "@json:replies.items",
"avatar": "@json:author.avatar",
"title": "@json:author.nick",
"subtitle": "@json:date@sync:return lastResult*1000@dateFormat:",
"content": "@json:content",
"url": "user?id=@json:author.id"
}
}
}
}
```
#components(组件)
* search-input(搜索框)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
| placeholder | String | ---- | ---- | 搜索框提示文字 |
| borderRadius | Number | 10 | ---- | 搜索框圆角 |
* 示例用法
```json
{
"components": [
{
"name": "search-input",
"style": {
"url": "search",//跳转name为search的规则页面
"placeholder": "点击搜索内容",//提示文字
"borderRadius": 10//圆角
}
},
{
"name": "search-input",
"style": {
"url": "https://www.baidu.com"//跳转在线网址
}
}
]
}
```
* slider(轮播图)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| height | Number | 280 | ---- | 高度 |
| enableIndicatorDots | Number | 1 | 1/0 | 开启指示点 |
| indicatorActiveColor | String | ---- | ---- | 指示点选中色 |
| titleShow | Number | 1 | 1/0 | 展示轮播图标题 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 轮播图标题 |
| cover | String | ---- | ---- | 轮播图图片路径 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "slider",
"style": {
"height": 280,//高度
"enableIndicatorDots": 1,//开启指示点
"indicatorActiveColor": "#42b983",//指示点选中色
"titleShow": 1//展示标题
},
"staticData": [{
"title": "轮播图第一张",//标题
"cover": "https://image.test.com/test1.png",//图片路径
"url": "https://www.test.com"//跳转路径
},{
"title": "轮播图第二张",//标题
"cover": "https://image.test.com/test2.png",//图片路径
"url": "https://www.test.com"//跳转路径
}]//静态数据
},
{
"name": "slider",
"style": {
"height": 280,//高度
"enableIndicatorDots": 1,//开启指示点
"indicatorActiveColor": "#42b983",//指示点选中色
"titleShow": 0//不展示标题
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"list": "@sel:tag.li",//列表规则
"cover": "@sel:class.img[0]>>attr.src",//图片规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径规则
}//动态数据
}
]
}
```
* banner(banner图)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| height | Number | ---- | ---- | 高度 |
| borderRadius | Number | 15 | ---- | 圆角 |
| mode | String | widthFix | widthFix/aspectFit/aspectFill/heightFix | 图片剪切模式 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cover | String | ---- | ---- | 轮播图图片路径 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "banner",
"style": {
"height": 280,//高度
"borderRadius": 15,//开启指示点
"mode": "aspectFill",//图片剪切模式
},
"staticData": [{
"cover": "https://image.test.com/test1.png",//图片路径
"url": "https://www.test.com"//跳转路径
},{
"cover": "https://image.test.com/test2.png",//图片路径
"url": "https://www.test.com"//跳转路径
}]//静态数据
},
{
"name": "banner",
"style": {
"height": 280,//高度
"borderRadius": 15,//开启指示点
"mode": "aspectFill",//图片剪切模式
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"list": "@sel:tag.li",//列表规则
"cover": "@sel:class.img[0]>>attr.src",//图片规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径规则
}//动态数据
}
]
}
```
* notice-bar(公告栏)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| icon | String | ---- | ---- | 图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| borderRadius | Number | 10 | ---- | 圆角 |
| moreText | String | ---- | ---- | 更多按钮文字 |
| moreUrl | String | ---- | ---- | 更多跳转路径(支持在线网址和规则页面) |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "notice-bar",
"style": {
"icon": "notification",//图标 可使用网络图片路径
"moreText": "全部",//更多按钮文字
"moreUrl": "notice",//更多跳转路径(网址 | 页面)
"borderRadius": 10,//圆角
},
"staticData": [{
"title": "这是一条公告1",//标题
"url": "https://www.test.com"//跳转路径
},{
"cover": "这是一条公告2",//标题
"url": "https://www.test.com"//跳转路径
}]//静态数据
},
{
"name": "notice-bar",
"style": {
"icon": "notification",//图标 可使用网络图片路径
"moreText": "全部",//更多按钮文字
"moreUrl": "notice",//更多跳转路径(网址 | 页面)
"borderRadius": 10,//圆角
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"list": "@sel:tag.li",//列表规则
"title": "@sel:tag.p[0]>>text",//标题规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径规则
}//动态数据
}
]
}
```
* menu(菜单栏)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| column | Number | 4 | ---- | 列数 |
| columnGap | Number | 15 | ---- | 间隔 |
| borderRadius | Number | 15 | ---- | 圆角 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| icon | String | ---- | ---- | 图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| iconColor | String | ---- | ---- | 图标颜色 |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "menu",
"style": {
"column": 2,//列数
"columnGap": 15,//列间隔
"borderRadius": 15//圆角
},
"staticData": [{
"icon": "notifacation",//图标 可使用网络图片路径
"iconColor": "#f5f5f5",//图标颜色
"title": "菜单",//标题
"url": "list"//跳转路径(网址 | 页面)
},{
"icon": "notifacation",//图标 可使用网络图片路径
"iconColor": "#f5f5f5",//图标颜色
"title": "菜单",//标题
"url": "list"//跳转路径(网址 | 页面)
}]//静态数据
},
{
"name": "menu",
"style": {
"column": 2,//列数
"columnGap": 15,//列间隔
"borderRadius": 15//圆角
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"list": "@sel:tag.li",//列表规则
"icon": "@sel:tag.img[0]>>attr.src",//图片规则
"title": "@sel:tag.p[0]>>text",//标题规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径(网址 | 页面)
}//动态数据
}
]
}
```
* link(链接)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| iconColor | String | ---- | ---- | 图标颜色 |
| iconBorderRadius | Number | 0 | ---- | 图标圆角 |
| borderRadius | Number | 0 | ---- | 圆角 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| icon | String | ---- | ---- | 图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| title | String | ---- | ---- | 标题 |
| description | String | ---- | ---- | 简介 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "link",
"style": {
"iconColor": "#f5f5f5",//图标颜色
"iconBorderRadius": 0,//图标圆角
"borderRadius": 0,//圆角
},
"staticData":{
"icon": "notification",//图标
"title": "这是一个链接",//标题
"description": "这是一个链接简介",//简介
"url": "https://www.baidu.com"//跳转网址
}//静态数据
},
{
"name": "link",
"style": {
"iconColor": "#f5f5f5",//图标颜色
"iconBorderRadius": 0,//图标圆角
"borderRadius": 0,//圆角
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"icon": "@sel:tag.img[0]>>attr.src",//图片规则
"title": "@sel:tag.p[0]>>text",//标题规则
"description": "@sel:class.intro[0]>>text",//简介规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径(网址 | 页面)
}//动态数据
}
]
}
```
* links(链接栏)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| column | Number | 2 | ---- | 列数 |
| borderRadius | Number | 0 | ---- | 圆角 |
* 数据
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| icon | String | ---- | ---- | 图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| iconColor | String | ---- | ---- | 图标颜色 |
| title | String | ---- | ---- | 标题 |
| url | String | ---- | ---- | 跳转路径(支持在线网址和规则页面) |
* 示例用法
```json
{
"components": [
{
"name": "links",
"style": {
"column": 2,//列数
"borderRadius": 0//圆角
},
"staticData": [{
"icon": "notifacation",//图标 可使用网络图片路径
"iconColor": "#f5f5f5",//图标颜色
"title": "链接",//标题
"url": "list"//跳转路径(网址 | 页面)
},{
"icon": "notifacation",//图标 可使用网络图片路径
"iconColor": "#f5f5f5",//图标颜色
"title": "链接",//标题
"url": "list"//跳转路径(网址 | 页面)
}]//静态数据
}
{
"name": "links",
"style": {
"column": 2,//列数
"borderRadius": 0//圆角
},
"request": {
"url": "https://www.test.com",//请求链接
"device": "电脑"//请求平台
},//请求
"dynamicData": {
"list": "@sel:tag.li",//列表规则
"icon": "@sel:tag.img[0]>>attr.src",//图片规则
"title": "@sel:tag.p[0]>>text",//标题规则
"url": "detail?id=@sel:class.link[0]>>attr.href"//跳转路径(网址 | 页面)
}//动态数据
}
]
}
```
* card(卡片)
* style(样式)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| cardTitle | String | ---- | ---- | 卡片标题 |
| cardIcon | String | ---- | ---- | 卡片图标 可使用网络图片路径或者[图标库](https://www.iconfont.cn/collections/detail?cid=33) |
| cardIconColor | String | ---- | ---- | 卡片图标颜色 |
| cardDescription | String | ---- | ---- | 卡片简介 |
| enableRefresh | Number | 0 | 1/0 | 开启换一组功能(需要配合cellCount使用,cellCount用来控制每一组的最大数量) |
| enableScroll | Number | 0 | 1/0 | 开启滚动功能 |
| enableTopCard | Number | 0 | 1/0 | 开启顶部卡片显示 |
| topImageWidth | Number | 120 | ---- | 顶部卡片图片宽度 |
| topImageHeight | Number | 160 | ---- | 顶部卡片图片高度 |
| moreText | String | ---- | ---- | 更多按钮文字 |
| moreUrl | String | ---- | ---- | 更多按钮链接(支持在线网址和规则页面) |
| cellName | String | ---- | h-cell | v-cell | img-cell | text-cell | tag-cell | 单元格 |
| cellCount | Number/String | auto | ---- | 列表总数 |
| cellScrollWidth | Number | 200 | ---- | 开启滚动后,单项单元格的宽度 |
| borderRadius | Number | 0 | ---- | 圆角 |
| subsectionSelectedColor | String | ---- | ---- | 分段器选中颜色 |
* data(数据)
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :----- | :----: | :----: | :----: | :---- |
| subsection | Array | ---- | ---- | 分段数据 |
* 示例用法(该组件需要配合cell单元格使用)
```json
{
"components": [
{
"name": "card",
"style": {
"cardTitle": "作者",
"cellName": "h-cell",
"cellColumn": 1,
"cellImageWidth": 80,
"cellImageHeight": 80,
"cellDescriptionLines": 1,
"cellImageBorderRadius": 80
},
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.novelist",
"title": "@sel:class.name[0]>>tag.a[0]>>text",
"cover": "@sel:tag.img[0]>>attr.src",
"description": "@sel:class.about[0]>>text",
"url": "user?id=@sel:class.name[0]>>tag.a[0]>>attr.href@replace:/user/info?id="
}
},
{
"name": "card",
"style": {
"cardTitle": "推荐阅读",
"cellName": "v-cell"
},
"request": {
"url": "/book/{{id}}.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.side-show-image-list[0]>>class.side-show-image-item",
"title": "@sel:tag.img[0]>>attr.alt",
"cover": "@sel:tag.img[0]>>attr.src",
"url": "book?id=@sel:tag.a[0]>>attr.href@match:book&es;/>>.html>>1"
}
},
{
"name": "card",
"style": {
"cardTitle": "版权强推",
"cellName": "img-cell",
"cellColumn": 2,
"cellImageHeight": 140,
"enableTopCard": 1
},
"request": {
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.blog-list[0]>>tag.li",
"cover": "@sel:class.lazy[0]>>attr.data-original",
"url": "@sel:tag.a[0]>>attr.href"
}
},
{
"name": "card",
"style": {
"cellName": "text-cell"
},
"request": {
"url": "/article/{{$1}}/{{page}}",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.article[0]>>tag.li",
"title": "@sel:class.title[0]>>text",
"subtitle": "@sel:class.top_20[0]>>text",
"url": "@sel:class.right[0]>>tag.img[0]article?id=@sel:class.title[0]>>attr.href@split:article/>>1&background=@sel:class.right[0]>>tag.img[0]>>attr.srcarticle?id=@sel:class.title[0]>>attr.href@split:article/>>1&background=@sel:class.face[0]>>attr.src"
}
},
{
"name": "card",
"style": {
"cardTitle": "分类",
"cellName": "tag-cell",
"cellColumn": "auto"
},
"request": {
"url": "/book/fenlei.html",
"device": "电脑"
},
"staticData": {
"subsection": ["热血", "推理", "悬疑"]
},
"dynamicData": {
"list": [{
"list": "@sel:id.album_tabs>>tag.li[2]>>tag.a",
"title": "@sel:text",
"url": "detail?id=@sel:attr.href@match:cate->>.html>>1&navigationTitle=@sel:text"
},{
"list": "@sel:id.album_tabs>>tag.li[3]>>tag.a",
"title": "@sel:text",
"url": "detail?id=@sel:attr.href@match:cate->>.html>>1&navigationTitle=@sel:text"
},{
"list": "@sel:id.album_tabs>>tag.li[4]>>tag.a",
"title": "@sel:text",
"url": "detail?id=@sel:attr.href@match:cate->>.html>>1&navigationTitle=@sel:text"
}]
}
},
{
"name": "card",
"style": {
"cardTitle": "最近应援",
"cardDescription": "大佬万岁\/(^o^)/ ",
"cellName": "v-cell",
"cellColumn": 4,
"cellCount": 4,//每组数量为4
"enableRefresh": 1,//开启换一组功能
"cellImageHeight": 160
},
"request": {
"url": "/book.html",
"device": "电脑"
},
"dynamicData": {
"list": "@sel:class.reward-list[0]>>tag.a",
"title": "@sel:class.book-name[0]>>text",
"subtitle": "@sel:class.reward-detail[0]>>text",
"cover": "@sel:class.lazy[0]>>attr.data-original",
"url": "book?id=@sel:attr.href@match:book&es;/>>.html>>1"
}
}
]
}
```