uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)
一、项目概述
uniapp-ttlive 一款基于uni-app+uview-ui+vue.js+uapopup
等技术混合开发的多端仿制抖音短视频/直播/聊天项目。支持全屏沉浸式、上下滑动切换视频等功能。
二、预览效果
【uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)】如下图:在h5、小程序、APP端编译效果
文章图片
三、编码技术
- 编码器/技术:HbuilderX3.1.21+Uniapp+Nvue+Vuex+Uapopup
- UI组件库:uView-ui / uni-ui
- 矢量图标库:iconfont字体图标
- 弹窗组件:UApopup 基于uni-app封装跨端弹窗组件
- 自定义导航条+底部菜单栏
- 编译支持:H5+小程序+APP端
四、功能特性 ? 支持全屏沉浸式透明模式
? 顺滑的上下滑动体验
? 迷你时间进度条
? 自定义组件支持Nvue页面
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/38a37c8838ee428b85f186ca8e7bb476.gif)
文章图片
五、目录结构/编译
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/47ab269dc2d94266bcf244fd4191dae8.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/f8cc37080fff4332b664efed7bd443da.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/e98408924e4f43d9a90aed85e1136783.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/ba59bfe2d20046ccb3562fb803f93c12.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/c2f9cd1398d94911992a81e66c297b48.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/ab9b5e0c32904a349235250201a9dc61.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/179d8d058bbe472c905f953de7d5b07a.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/dfa4f295aa2441adafb1e9395a85ffba.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/d948e986164a450890f2ae01926bc630.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/9f141c9f5163469d9540b3258cd2a5d5.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/f75322b6bcd84284b9a0004782d62dcf.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/609859afd63842679603094a2d3f8f84.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/a18bd3fce6b149ddbb7818fbc704aabf.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/02c30cb729bb4d5b938d04e07c6cb065.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/0c5688ea33924dc08a7e51800d1d218d.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/580f4fb0c9644de583607c3344b2391d.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/f47a6e420a8143f9bc700ad54c7e3516.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/e375fd2650c340b2b92c39df1f0943c2.jpg)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/91e7573d9f254d749d324e194585be63.jpg)
文章图片
项目中使用的组件库是uview-ui,多平台快速开发UI框架。
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/0f9bc3cd145d43ae9a8437c74af5d32c.jpg)
文章图片
main.js配置
import Vue from 'vue'
import App from './App'import uView from 'uview-ui'
Vue.use(uView)import API from '@/common/request'
Vue.prototype.$api = API// 引入状态管理
import Store from './store'
Vue.prototype.$store = StoreVue.config.productionTip = false
App.mpType = 'app'// #ifdef APP-PLUS
plus.navigator.closeSplashscreen()
// #endifconst app = new Vue({
...App
})
app.$mount()
考虑到Nvue页面不支持prototype原型全局挂载,改为使用globalData来控制。
/**
* 主入口配置
* @author xiaoyan
*/
uniapp自定义navbar+tabbar组件
大家看到的顶部导航条及底部菜单栏,是全新开发的支持nvue组件。
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/1f7ad63b4b554fd6bae2f2bda1c72652.png)
文章图片
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/2f0050919833491da8326c13b3ba661f.jpg)
文章图片
{{'\ue84c'}}
{{title}}
更多详细介绍,大家可以去参看之前的分享文章。
uniapp自定义导航栏+菜单栏组件
uniapp封装自定义弹框组件
uaPopup全新封装的一款多端弹窗组件,支持nvue页面。
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/01b915b089474e4bb63a4323e92c0d43.jpg)
文章图片
支持20+自定义参数,支持标签式+函数式两种调用方式。
如果感兴趣的话,可以参看之前的这篇分享文章。
uaPopup弹窗:一款uniapp的平台弹窗组件
uniapp短视频/直播
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/ba59bfe2d20046ccb3562fb803f93c12.jpg)
文章图片
项目中小视频/直播页面整体分为顶部导航区+视频区+底部区三个部分。
视频可以上下滑动切换,支持播放/暂停,点赞评论
{{`\ue607`}}
{{item.author}}
{{item.isFollow ? '已关注' : '关注'}}
#{{kw}}
{{item.desc}}
{{`\ue734`}}
{{`\ue635`}} {{item.likeNum+(item.isLike ? 1 : 0)}}
{{`\ue632`}} {{item.replyNum}}
{{`\ue63b`}} {{item.shareNum}}
短视频底部新增了一条时间播放进度条。
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/d27d977718b84a41a47e1364982125e8.jpg)
文章图片
// 播放进度变化时触发
handleTimeUpdate(e) {
let { currentTime, duration } = e.detailthis.progressBar = parseInt((currentTime / duration).toFixed(2) * parseInt(this.winWidth))
},
OKey,基于Uniapp开发仿制抖音短视频/直播实例就分享到这里。
最后附上一个最新项目案例
https://segmentfault.com/a/11...
![uni-ttLive(基于uniapp+uViewUI短视频+聊天直播实例)](https://img.it610.com/image/info9/b74721309f044cc68c7ce7bdaae5d9ad.gif)
文章图片
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 韵达基于云原生的业务中台建设 | 实战派
- EasyOA|EasyOA 基于SSM的实现 未完成总结与自我批判
- 基于stm32智能风扇|基于stm32智能风扇_一款基于STM32的智能灭火机器人设计
- stm32|基于STM32和freeRTOS智能门锁设计方案
- Python|Python 基于datetime库的日期时间数据处理