Stories

Detail Return Return

VueZone-H5開發模板的一些常用功能 - Stories Detail

官網:https://vue-zone.github.io/docs/
github:https://github.com/vue-zone/vue3-vant-mobile
這是一個開源的vue3+viteH5模板,多端設備兼容方式為 px -> vwrem
已接入過項目,親測好用,沒有過多配置,拉代碼啓動就能用了。
你可以把它當成一個已經搭好的架子,你只需要往裏面加頁面就好了。
個人使用下來感覺便利的點有以下幾個:
1、內置瀏覽器設備兼容,並且專注於H5模板,PC模式會限制最大寬度,兼容性好
2、無需手動設置路由,內部設置了通過 unplugin-vue-router 插件實現路由自動生成,只需要在pages下新建文件夾,文件夾名稱就是對應的路由。
3、內置了海量icon,可直接使用,預覽如下:https://icon-sets.iconify.design/carbon/page-48.html
4、pinia配置已經寫好了,直接使用
5、tabbarApp.vue文件裏,你可以手動控制tabbar的顯隱
下面是項目實際使用的一些常用技巧

Tabbar創建


配置tabbar標籤欄白名單,比如你的tabbar有三個選項,分別對應上這三個

tabbar的組件,右側你可以自定義tabbar的顯示,可以是寫死的名稱,也可以是國際化

如果是國際化,需要在這裏配置國際化key

一個tabbar,一個navbar,你可以手動控制他們的顯示隱藏,詳情頁可以隱藏掉
隱藏tabbar我這裏封裝了一個行數,可以直接使用,新建一個store,用於存儲全局狀態

import useStateStore from '@/stores/modules/state'
import { storeToRefs } from 'pinia'

const { isDesktop } = storeToRefs(useStateStore())

/**
 * 設置tabbar、navbar的狀態
 * @param {boolean} state 狀態
 */
function setBarState(state: boolean) {
  isDesktop.value = state
}

export default setBarState
<script setup lang='ts'>
import setBarState from '@/utils/setBarState'

setBarState(false);
</script>

對應頁面設置,false隱藏,true顯示
tabbar的路由對應pages下的頁面,首頁路由/直接對應index.vue,其它的就對應指定文件夾下的index.vue,比如:"/messages" 路由 對應 page/messages/index.vue
你後續有新頁面直接在pages內新建文件夾即可,路由自動生成,非常方便。

ICON使用

項目內置了vant組件,vanticon可能並不能完全滿足場景,所以還內置了iconify
網站:https://icon-sets.iconify.design/carbon/page-2.html
頁面使用

<div class="i-carbon:home" />

i-是前綴,必須
carbon:home為具體icon
無法通過模板字符串動態設置(可能?)

詳情頁的返回

有些詳情頁是沒有NavBar的,但是需要返回按鈕,我這裏封裝了一個組件,可以直接使用

<script setup lang='ts'>
const router = useRouter()
function onBack() {
  if (window.history.state.back)
    history.back()
  else
    router.replace('/')
}
</script>

<template>
  <div class="back-box" @click="onBack">
    <div class="i-carbon:undo" />
  </div>
</template>

<style lang="less" scoped>
.back-box {
  position: absolute;
  left: 10px;
  top: 10px;
  font-size: 15px;
  padding: 6px;
  width: fit-content;
  z-index: 100;
  color: white;
  border-radius: 50%;
  background-color: rgba(0, 0, 0, 0.3);
}
</style>


具體樣式,你可以根據實際情況調整

const router = useRouter()
function onBack() {
  if (window.history.state.back)
    history.back()
  else
    router.replace('/')
}

主要邏輯是這段,你可以在任何頁面使用這個函數實現返回功能。

滾動條緩存

由於項目採用了頁面緩存,切換頁面的時候滾動條可能不會回到頂部,依舊保持在上個頁面的位置,需要特殊處理

/**
 * 滾動到頂部
 */
export function scrollBehavior() {
  document.getElementById('app').scrollTo({ top: 0 })
}

對應的頁面調用這個函數即可。

user avatar steven_code Avatar tianmiaogongzuoshi_5ca47d59bef41 Avatar
Favorites 2 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.