config.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import type { TabBar } from '@uni-helper/vite-plugin-uni-pages'
  2. type FgTabBarItem = TabBar['list'][0] & {
  3. iconType: 'uniUi' | 'uiLib' | 'unocss' | 'iconfont' | 'image'
  4. icon: any // 其实是 string 类型,这里是为了避免 ts 报错
  5. activeIcon?: string // 只有在 image 模式下才需要,传递的是高亮的图片(PS: 不建议用 image 模式)
  6. }
  7. /**
  8. * tabbar 选择的策略,更详细的介绍见 tabbar.md 文件
  9. * 0: 'NO_TABBAR' `无 tabbar`
  10. * 1: 'NATIVE_TABBAR' `完全原生 tabbar`
  11. * 2: 'CUSTOM_TABBAR_WITH_CACHE' `有缓存自定义 tabbar`
  12. * 3: 'CUSTOM_TABBAR_WITHOUT_CACHE' `无缓存自定义 tabbar`
  13. *
  14. * 温馨提示:本文件的任何代码更改了之后,都需要重新运行,否则 pages.json 不会更新导致配置不生效
  15. */
  16. export const TABBAR_MAP = {
  17. NO_TABBAR: 0,
  18. NATIVE_TABBAR: 1,
  19. CUSTOM_TABBAR_WITH_CACHE: 2,
  20. CUSTOM_TABBAR_WITHOUT_CACHE: 3,
  21. }
  22. // TODO: 1/3. 通过这里切换使用tabbar的策略
  23. export const selectedTabbarStrategy = TABBAR_MAP.NATIVE_TABBAR
  24. // TODO: 2/3. 更新下面的tabbar配置
  25. // selectedTabbarStrategy==NATIVE_TABBAR(1) 时,需要填 iconPath 和 selectedIconPath
  26. // selectedTabbarStrategy==CUSTOM_TABBAR(2,3) 时,需要填 iconType 和 icon
  27. // selectedTabbarStrategy==NO_TABBAR(0) 时,tabbarList 不生效
  28. export const tabbarList: FgTabBarItem[] = [
  29. {
  30. iconPath: 'static/tabbar/home.png',
  31. selectedIconPath: 'static/tabbar/homeHL.png',
  32. pagePath: 'pages/index/index',
  33. text: '首页',
  34. // 本框架内置了 uniapp 官方UI库 (uni-ui)的图标库
  35. // 使用方式如:<uni-icons type="home" size="30"/>
  36. // 图标列表地址:https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html
  37. iconType: 'uniUi',
  38. icon: 'home',
  39. },
  40. // {
  41. // iconPath: 'static/tabbar/home.png',
  42. // selectedIconPath: 'static/tabbar/homeHL.png',
  43. // pagePath: 'pages/index/index',
  44. // text: '首页',
  45. // // 选用 UI 框架自带的 icon 时,iconType 为 uiLib
  46. // // TODO: 3/3. 需要自行替换vue代码中的图标代码,具体代码在 `tabbar/index.vue` 62行
  47. // // 如:<wd-icon name="home" /> (https://wot-design-uni.cn/component/icon.html)
  48. // // 如:<uv-icon name="home" /> (https://www.uvui.cn/components/icon.html)
  49. // // 如:<sar-icon name="image" /> (https://sard.wzt.zone/sard-uniapp-docs/components/icon)(sar没有home图标^_^)
  50. // iconType: 'uiLib',
  51. // icon: 'home',
  52. // },
  53. {
  54. iconPath: 'static/tabbar/example.png',
  55. selectedIconPath: 'static/tabbar/exampleHL.png',
  56. pagePath: 'pages/about/about',
  57. text: '关于',
  58. // 注意 unocss 图标需要如下处理:(二选一)
  59. // 1)在fg-tabbar.vue页面上引入一下并注释掉(见tabbar/index.vue代码第2行)
  60. // 2)配置到 unocss.config.ts 的 safelist 中
  61. iconType: 'unocss',
  62. icon: 'i-carbon-code',
  63. },
  64. // {
  65. // pagePath: 'pages/mine/index',
  66. // text: '我的',
  67. // // 注意 iconfont 图标需要额外加上 'iconfont',如下
  68. // iconType: 'iconfont',
  69. // icon: 'iconfont icon-my',
  70. // },
  71. // {
  72. // iconPath: 'static/tabbar/home.png',
  73. // selectedIconPath: 'static/tabbar/homeHL.png',
  74. // pagePath: 'pages/index/index',
  75. // text: '首页',
  76. // // 使用 ‘local’时,需要配置 icon + iconActive 2张图片(不推荐)
  77. // // 既然已经用了自定义tabbar了,就不建议用图片了,所以不推荐
  78. // iconType: 'image',
  79. // icon: '/static/tabbar/home.png',
  80. // iconActive: '/static/tabbar/homeHL.png',
  81. // },
  82. ]
  83. // NATIVE_TABBAR(1) 和 CUSTOM_TABBAR_WITH_CACHE(2) 时,需要tabbar缓存
  84. export const tabbarCacheEnable = selectedTabbarStrategy === TABBAR_MAP.NATIVE_TABBAR
  85. || selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
  86. // CUSTOM_TABBAR_WITH_CACHE(2) 和 CUSTOM_TABBAR_WITHOUT_CACHE(3) 时,启用自定义tabbar
  87. export const customTabbarEnable = selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
  88. || selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITHOUT_CACHE
  89. // CUSTOM_TABBAR_WITH_CACHE(2)时,需要隐藏原生tabbar
  90. export const nativeTabbarNeedHide = selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE
  91. const _tabbar: TabBar = {
  92. // 只有微信小程序支持 custom。App 和 H5 不生效
  93. custom: selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE,
  94. color: '#999999',
  95. selectedColor: '#018d71',
  96. backgroundColor: '#F8F8F8',
  97. borderStyle: 'black',
  98. height: '50px',
  99. fontSize: '10px',
  100. iconWidth: '24px',
  101. spacing: '3px',
  102. list: tabbarList as unknown as TabBar['list'],
  103. }
  104. // 0和1 需要显示底部的tabbar的各种配置,以利用缓存
  105. export const tabBar = tabbarCacheEnable ? _tabbar : undefined