Skip to content

Shell 容器

Shell 是小程序运行时的页面容器,负责构建完整的 UI 框架结构。

结构

┌──────────────────────────────────┐
│           StatusBar              │  系统状态栏
├──────────────────────────────────┤
│           NavBar                 │  导航栏(标题、返回)
├──────────────────────────────────┤
│                                  │
│                                  │
│          Content Area            │  页面内容区域
│        (开发者页面)             │  (webview 渲染)
│                                  │
│                                  │
├──────────────────────────────────┤
│           TabBar                 │  底部标签栏(可选)
└──────────────────────────────────┘

Shell HTML 生成

Shell 由 minidev-shell 包在编译时生成。核心函数 generateShellHtml() 根据 app.json 配置产出完整的 HTML 结构:

minidev-shell/index.js
  → generateShellHtml(appConfig)
    → NavBar HTML
    → Content Container
    → TabBar HTML(如果配置了 tabBar)
    → StatusBar HTML
    → 注入 runtime-src.js(运行时逻辑)
    → 注入 minidev-components(Web Components)

runtime-src.js

Shell 的运行时核心,负责:

  1. 事件监听 — 通过 setupBridge() 监听 Bridge 事件
  2. UI 渲染 — 收到事件后创建/更新 DOM
  3. 回调传递 — 用户交互结果通过 sendCallback() 回传
  4. Tab 分组 — 管理 activeGroup 状态,处理 Tab 分组切换

支持的事件

事件渲染行为
UI.showLoading创建 Loading overlay
UI.hideLoading移除 Loading overlay
UI.showToast创建 Toast 提示
UI.hideToast移除 Toast
UI.showDialog创建 Dialog + 等待回调
UI.alert创建 Alert + 等待回调
UI.showActionSheet创建 ActionSheet + 等待回调
UI.setNavigationBarTitle更新 NavBar 标题文字
UI.setNavigationBarColor更新 NavBar 颜色
UI.showNavigationBarLoadingNavBar 显示加载动画
UI.hideNavigationBarLoadingNavBar 隐藏加载动画
UI.showTabBar / hideTabBar显示/隐藏 TabBar
UI.setTabBarBadge设置 Tab 徽标
UI.setTabBarItem更新 Tab 项
UI.setTabBarStyle更新 TabBar 样式
Router.setActiveGroup切换 Tab 分组

配置 Shell 样式

通过 app.jsonwindow 字段配置全局样式:

json
{
  "window": {
    "navigationBarTitleText": "我的应用",
    "navigationBarBackgroundColor": "#ffffff",
    "navigationBarTextStyle": "black",
    "backgroundColor": "#f5f5f5"
  }
}
字段说明默认值
navigationBarTitleTextNavBar 标题
navigationBarBackgroundColorNavBar 背景色#ffffff
navigationBarTextStyleNavBar 文字颜色black
backgroundColor页面背景色#ffffff

MiniDev Studio — 小程序开发利器