Skip to content

页面结构 ​

每个页面一个目录:page.json 描述长什么样,同目录 page.js 用 Page({}) 填数据、响应操作。

建议先把 JSON 结构搭出来,再写生命周期和页面事件。组件清单见 组件。

只展示固定内容数据会变
文案直接写在 page.json写成 {{hello}} / bind,在 onLoad 里 this.setData
page.jsPage({}) 即可Page({ data });也可 Http.get 后再 setData
适用关于、说明、固定入口表单回填、列表、统计

入口 homePage 为首页目录,例如 pages/home。page.js 可用 require 引入其他 JS,路径规则见 require。

页面字段 ​

参数名类型必填说明
idString否页面标记。跳转可写文件夹,或入口 pages 中的 id
titleString / Object否导航栏。不写则不显示。字符串为标题;对象见下表
styleObject否内容区样式:padding / margin / background 等。未写 padding 时为 16
statusBarString / Object否顶部状态栏。字符串为背景色;对象为 background + color(light / dark)
jsString否默认加载同目录 page.js。见 页面生命周期、页面事件
enablePullDownRefreshBoolean否打开整页下拉。见 下拉刷新
bodyArray是组件列表。组件可写 action / onTap,见下方 JSON action、页面事件
popupsArray否弹层。显示隐藏用 showIf。要嵌自定义组件,在弹层 body 里写 { "type": "choose" },见 组件结构、组件 · Popup。动作面板、图片查看器写在 body 里,同样用 showIf,见 ActionSheet、ImageViewer

以上字段会覆盖 deekeScript.json 里 window 参数的同名配置。先加载 deekeScript.json 的 window,再加载当前页面。

title 为对象时:

参数名类型说明
textString标题文案,支持 {{path}}(如 ,对应 Page.data)
hiddenBooleantrue 则隐藏导航栏
fontSizeNumber字号,单位 sp
colorString文字颜色
backgroundString导航栏背景色
fontWeightStringbold
alignStringleft / center / right
styleObject也可把 fontSize / color 等写在 style 里
json
{
  "title": {
    "text": "{{pageTitle}}",
    "fontSize": 18,
    "color": "#FFFFFF",
    "background": "#006A65"
  }
}
json
{
  "title": {
    "text": "工作台",
    "fontSize": 18,
    "color": "#FFFFFF",
    "background": "#006A65"
  }
}
json
{ "title": { "text": "关于", "hidden": true } }

内容区写在 style 里,覆盖全局 window.style:

json
{
  "style": { "padding": 16, "margin": 0, "background": "#F5F5F5" },
  "statusBar": { "background": "#006A65", "color": "light" },
  "body": []
}

组件字段见 组件。把一组内置组件打包复用,见 自定义组件。事件和数据见 父页交互。

JSON action ​

body / 弹层里组件上的 action 是结构字段:轻触后由框架直接执行。也写在 组件 · 通用字段。

与 onTap(或 onClick)同时存在时:先调用 Page 方法,再执行 action。事件回调见 页面事件。字符串字段会做 {{path}} 替换(如 {{item.id}})。

只支持下列 type,不要编造其它 action(例如不要写 executeScript / runScript / showModal):

type说明主要字段对应 Page 方法
navigate打开另一页(每次新页面)page、paramsthis.navigate
redirect关掉当前二级页再打开page、paramsthis.redirect
switchTab切到底栏某一项page 或 indexthis.switchTab
back关闭当前二级页无this.back
toast短提示text,可选 durationthis.toast
save弹「已保存」类提示(仅 JSON)toast(可选,默认「已保存」)无同名方法;真正写入放在 onTap
openUrl用系统浏览器打开外链urlthis.openUrl

跳转细则(栈、底栏、params)见 页面跳转。

json
{
  "type": "button",
  "text": "打开详情",
  "action": {
    "type": "navigate",
    "page": "detail",
    "params": { "id": "{{item.id}}", "from": "stats" }
  }
}
json
{ "type": "button", "text": "替换打开", "action": { "type": "redirect", "page": "detail", "params": { "id": "2" } } }
json
{ "type": "button", "text": "切到统计", "action": { "type": "switchTab", "page": "pages/stats" } }
json
{ "type": "button", "text": "返回", "action": { "type": "back" } }
  • page:目标页文件夹(如 pages/detail)或入口 pages 里注册的 id
  • 底栏之间用 switchTab,不要用 navigate
  • 底栏根页上的 back 不会退出应用

toast / save / openUrl ​

json
{ "type": "button", "text": "提示", "action": { "type": "toast", "text": "已保存" } }
json
{ "type": "button", "text": "保存设置", "onTap": "onSave", "action": { "type": "save", "toast": "已保存" } }
json
{ "type": "button", "text": "官网", "action": { "type": "openUrl", "url": "https://deeke.cn" } }
  • toast.duration:可选,与 this.toast({ text, duration }) 一致(如 'long')

  • save 只负责弹提示;Storage.put 等写入写在 onTap 对应方法里

  • 整页外链用 openUrl,不要指望 WebView 与 Page 通信

  • 确认框用全局 Dialogs

  • 从按钮跑任务:见 执行脚本

固定内容 ​

结构和文案都写在 JSON 里,page.js 用空的 Page({}) 即可。

数据会变 ​

文案写成 {{hello}},表单用 name 对应 data 里的键。初始值放 Page({ data }),接口数据在 onLoad 里 this.setData。列表、触底加载见 List。

模板 {{path}} ​

写法含义
{{hello}}data 中的字段
{{data.hello}}同上
{{item.title}}列表当前项
{{index}}列表下标,从 0 开始
{{params.id}}跳转参数
{{storage.task_name}}本地 Storage
{{item.tags.0}}数组下标

路径不存在时替换为空字符串。点击、显示条件等写在组件上,见 组件 · 通用字段。