首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于uni-app+vue3实战短视频+聊天+直播app商城

基于uni-app+vue3实战短视频+聊天+直播app商城

原创
作者头像
andy2018
发布2025-07-03 22:08:17
发布2025-07-03 22:08:17
2130
举报
文章被收录于专栏:h5h5

2025最新跨端uniapp+vue3+pinia2+uv-ui搭建仿抖音app小视频+直播+聊天一体的多功能直播商城系统。

uni-vue3-welive支持编译运行到H5+小程序端+App端

使用技术

  • 编辑器:HbuilderX 4.66
  • 框架技术:Uniapp+Vue3+Vite5+Nvue+Pinia2
  • UI组件库:uv-ui+vk-uview
  • 弹框组件:uaPopup(uniapp封装多端弹框组件)
  • 自定义组件:uaNavbar+uaTabbar组件
  • 本地缓存:pinia-plugin-unistorage
  • 编译支持:h5+小程序+APP端

支持全屏沉浸式滑动切换短视频/直播模块。支持拖拽播放进度条

项目结构

uniapp短视频模板

代码语言:actionscript
复制
<ua-layout>
    <view class="ua__swipervideo flex1">
        <swiper
            class="ua__swipervideo-wrap flex1"
            :current="currentVideo"
            vertical
            :circular="true"
            :duration="200"
            @change="handleChange"
            @transition="handleTransition"
        >
            <swiper-item v-for="(item, index) in videoList" :key="index">
                <video
                    class="ua__swipervideo-player flex1"
                    :id="'uplayer' + index"
                    :src="item.src"
                    :danmu-list="item.danmu"
                    :enable-danmu="true"
                    :controls="false"
                    :loop="true"
                    :autoplay="index == currentVideo"
                    :show-center-play-btn="false"
                    object-fit="contain"
                    @click="handleClickVideo"
                    @play="isPlaying=true"
                    @timeupdate="handleTimeUpdate"
                    :style="{'width': `${winWidth}px`, 'height': `${winHeight}px`}"
                >
                </video>
                
                <!-- 浮层模块 -->
                <view class="ulive__video-float__info flexbox flex-col">
                    <view class="flexbox flex-row flex-alignb">
                        <!-- 左侧 -->
                        <view class="vdinfo__left flex1 flexbox flex-col">
                            <view class="ltrow danmu flexbox" @click="handleOpenDanmu"><text class="danmu-txt">弹</text><uv-icon class="ico" name="edit-pen" color="#fff" size="14" /></view>
                            <view class="ltrow"><text class="ait">@{{item.author}}</text></view>
                            <view class="ltrow"><text class="desc">{{item.desc}}</text></view>
                        </view>
                        <!-- 右侧操作栏 -->
                        <view class="vdinfo__right flexbox flex-col">
                            <view class="rtbtn avatar flexbox flex-col">
                                <view class="ubox"><image class="uimg" :src="item.avatar" mode="aspectFill" /></view>
                                <view class="btn flexbox" :class="{'active': item.isFollow}" @click="handleFollow(index)"><uv-icon :name="item.isFollow ? 'checkmark' : 'plus'" :color="item.isFollow ? '#ff007f' : '#fff'" size="11" /></view>
                            </view>
                            <view class="rtbtn flexbox flex-col" @click="handleLiked(index)"><uv-icon name="heart-fill" :color="item.isLike ? '#ff007f' : '#fff'" size="40" /><text class="num">{{item.likeNum+(item.isLike ? 1 : 0)}}</text></view>
                            <view class="rtbtn flexbox flex-col" @click="handleOpenComment(index)"><uv-icon name="chat-fill" color="#fff" size="40" /><text class="num">{{item.replyNum}}</text></view>
                            <view class="rtbtn flexbox flex-col"><uv-icon name="star-fill" color="#fff" size="40" /><text class="num">{{item.starNum}}</text></view>
                            <view class="rtbtn flexbox flex-col" @click="handleOpenShare(index)"><uv-icon name="share-fill" color="#fff" size="40" /><text class="num">{{item.shareNum}}</text></view>
                        </view>
                    </view>
                </view>
            </swiper-item>
        </swiper>
        
        <!-- 固定tabs(脱离滑动区) -->
        <view class="ulive__video-header__tabs" :style="{'margin-top': `${menuBarT}px`}">
            <uv-tabs :current="tabsCurrent" :list="tabsList" />
        </view>
        
        <!-- 播放暂停按钮 -->
        <view v-if="!isPlaying" class="ua__swipervideo-playbtn" :style="{'left': `${winWidth/2}px`, 'top': `${winHeight/2}px`}" @click="handleClickVideo">
            <text class="ua__swipervideo-playico welive-icon welive-icon-play nvueicon"></text>
        </view>
        
        <!-- 播放mini进度条 -->
        <view v-if="sliderValue > 0" class="ua__swipervideo-slider">
            <slider
                :value="sliderValue"
                :step="sliderStep"
                :max="sliderMaxValue"
                activeColor="#fff"
                backgroundColor="rgba(255,255,255,.2)"
                block-color="#fff"
                block-size="6"
                @changing="onSliderChanging"
                @change="onSliderChange"
            />
        </view>
    </view>
    
    <template #footer>
        <ua-tabbar bgcolor="transparent" color="rgba(255,255,255,.7)" :border="false" :dock="false" transparent z-index="1000" />
    </template>
</ua-layout>

uniapp聊天功能

基于uniapp+deepseek+vue3跨平台ai流式对话:https://cloud.tencent.com/developer/article/2518214

electron35+deepseek桌面端ai模板:https://cloud.tencent.com/developer/article/2514843

vue3.5+deepseek网页版ai流式对话:https://cloud.tencent.com/developer/article/2508594

DeepSeek-Vue3基于vite6+vant4仿deepseek/Kimi流式AI聊天小助手

flutter3.27+getx仿抖音app短视频商城:https://cloud.tencent.com/developer/article/2493971

Electron32桌面端os系统:https://cloud.tencent.com/developer/article/2449406

electron31+vue3客户端聊天Exe实例:https://cloud.tencent.com/developer/article/2435159

tauri2.0+vue3客户端admin后台系统:https://cloud.tencent.com/developer/article/2458392

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用技术
  • 项目结构
  • uniapp短视频模板
  • uniapp聊天功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档