历经两周撸一个爆款h5+小程序+App酒店预订app程序模板UniVue3Hotel。
vue3-uniapp-wetrip原创uniapp+vite5+pinia2+uni-ui
等技术仿同程/携程预约酒店app实例。支持编译H5、小程序和App端,能够在不同平台上提供一致的用户体验。
uni-vue3-trip不仅具备基本的酒店预订功能,还集成了消息聊天功能模块,提升了用户体验和互动性。
uniapp+vue3跨多端酒店预订app系统已经发布到我的原创作品集。
https://gf.bilibili.com/item/detail/1107519011
技术栈
- 跨端框架:Uniapp + Vue3
- 构建工具:Vite5
- 状态管理:Pinia2
- UI组件库:uni-ui + uv-ui
- 缓存技术:pinia-plugin-unistorage
项目结构和开发工具
HbuilderX 4.36
HbuilderX是一款强大的开发工具,特别适用于Uniapp项目的开发。它提供了丰富的功能和良好的用户体验。
公共布局模板
<script setup>
// #ifdef MP-WEIXIN
defineOptions({
/**
* 解决小程序class、id穿透问题
* manifest.json中配置mergeVirtualHostAttributes: true, 在微信小程序平台不生效,组件外部传入的class没有挂到组件根节点上,在组件中增加options: { virtualHost: true }
* https://github.com/dcloudio/uni-ui/issues/753
*/
options: { virtualHost: true }
})
// #endif
const props = defineProps({
// 是否显示自定义tabbar
showTabBar: { type: [Boolean, String], default: false },
})
</script>
<template>
<view class="uv3__container flexbox flex-col flex1">
<!-- 顶部插槽 -->
<slot name="header" />
<!-- 内容区 -->
<view class="uv3__scrollview flex1">
<slot />
</view>
<!-- 底部插槽 -->
<slot name="footer" />
<!-- tabbar栏 -->
<uv3-tabbar :show="showTabBar" transparent zIndex="99" />
</view>
</template>
app.vue模板
<script setup>
import { provide } from 'vue'
import { onLaunch, onShow, onHide, onPageNotFound } from '@dcloudio/uni-app'
onLaunch(() => {
console.log('App Launch')
// 初始化启动
initLaunch()
})
onShow(() => {
console.log('App Show')
})
onHide(() => {
console.log('App Hide')
})
onPageNotFound((e) => {
console.warn('Route Error:', `${e.path}`)
})
const initLaunch = () => {
// 获取系统信息
uni.getSystemInfo({
success: (e) => {
// 获取手机状态栏高度
let statusBar = e.statusBarHeight
let customBar = 0
// #ifndef MP
customBar = statusBar + (e.platform == 'android' ? 50 : 45)
// #endif
// #ifdef MP-WEIXIN
// 获取胶囊按钮的布局位置信息
let menu = wx.getMenuButtonBoundingClientRect()
// 导航栏高度 = 胶囊下距离 + 胶囊上距离 - 状态栏高度
customBar = menu.bottom + menu.top - statusBar
// #endif
// #ifdef MP-ALIPAY
customBar = statusBar + e.titleBarHeight
// #endif
// 由于globalData在vue3 setup存在兼容性问题,改为provide/inject替代
provide('globalData', {
statusBarH: statusBar,
customBarH: customBar,
screenWidth: e.screenWidth,
screenHeight: e.screenHeight,
platform: e.platform
})
}
})
}
</script>
<style>
/* #ifndef APP-NVUE */
@import 'static/fonts/iconfont.css';
/* #endif */
/* 隐藏系统Tabbar */
.uni-app--showtabbar .uni-tabbar-bottom {display: none;}
</style>
<style lang="scss">
@import 'styles/reset.scss';
@import 'styles/layout.scss';
</style>
vue3+uniapp实现自定义顶部导航/底部菜单栏
tabbar菜单栏采用毛玻璃虚化高斯模糊效果。
const props = defineProps({
// 当前选中项
current: { type: [Number, String] },
// 背景色
bgcolor: { type: String, default: '#fff' },
// 颜色
color: { type: String, default: '#333' },
// 激活颜色
activeColor: { type: String, default: '#f90' },
// 是否固定
fixed: { type: [Boolean, String], default: false },
// 是否背景透明
transparent: { type: [Boolean, String], default: false },
// 是否中间凸起按钮
dock: { type: [Boolean, String], default: true },
// 设置层级
zIndex: { type: [Number, String], default: '2024' },
// 自定义iconfont字体图标库前缀
customPrefix: { type: String, default: 'uv3trip-icon' },
// 自定义样式
customStyle: String,
// 是否显示
show: { type: Boolean, default: true },
// tab选项
tabs: {
type: Array,
default: () => []
}
})
vue3+uniapp预订模板
丰富的酒店信息展示:包括酒店名称、地址、星级、酒店设施、客房类型及价格等。
支持自定义开始/结束日期、日期区间、日期自定义打点信息。
<!-- 日历 -->
<uv3-popup
v-model="isVisibleCalendar"
title="选择日期"
position="bottom"
round
xclose
xposition="left"
:customStyle="{'overflow': 'hidden'}"
@open="showCalendar=true"
@close="showCalendar=false"
>
<uv-calendars
v-if="showCalendar"
ref="calendarRef"
mode="range"
insert
color="#ffaa00"
:startDate="startDate"
:endDate="endDate"
:date="rangeDate"
:selected="dingDate"
title="选择日期"
start-text="入住"
end-text="离店"
@change="handleCalendarChange"
/>
</uv3-popup>
uniapp+vue3聊天功能
聊天这部分由于之前有开发一款uniapp+vue3聊天app实例,就不作过多的介绍,如果感兴趣可以去看看下面这篇文章。
https://www.cnblogs.com/xiaoyan2017/p/18165578
聊天编辑框也免费发布到了uniapp插件市场,欢迎下载使用。
https://ext.dcloud.net.cn/plugin?id=13275
综上就是uniapp+vue3实战开发一款酒店预订app实例的一些分享,希望对大家有些帮助~
https://segmentfault.com/a/1190000045381943
https://segmentfault.com/a/1190000045487385
https://segmentfault.com/a/1190000045331960
https://segmentfault.com/a/1190000045245775
https://segmentfault.com/a/1190000044899693
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。