vue-Dplayer中url和视频路径问题
目录结构

App.vue #### 主要内容为get()方法中的注释
<template>
<div id="app">
<div class="a1"></div>
<div class="a2"></div>
<div class="a3"></div>
<br>
<!-- assets文件-->
<img src="@/assets/1.jpg" alt="">
<!--publci文件-->
<img src="../public/3.jpeg" alt="">
<!--static-->
<img src="../static/2.jpg" alt="">
<hr>
<br>
<button @click="get">切换</button>
<d-player ref="player" id="player" :options="options"></d-player>
</div>
</template>
<script>
export default {
data() {
return {
name1:'./video/',
name2:'../static/',
name3:'assets/',
namef1:'2.mp4',
namef2:'my.mp4',
namef3:'1.jpg',
dp:null,
options: {
container: document.getElementById("dplayer"), //播放器容器
mutex: false, // 防止同时播放多个用户,在该用户开始播放时暂停其他用户
theme: "#b7daff", // 风格颜色,例如播放条,音量条的颜色
loop: false, // 是否自动循环
lang: "zh-cn", // 语言,'en', 'zh-cn', 'zh-tw'
screenshot: true, // 是否允许截图(按钮),点击可以自动将截图下载到本地
hotkey: true, // 是否支持热键,调节音量,播放,暂停等
preload: "auto", // 自动预加载
volume: 0.7, // 初始化音量
playbackSpeed: [0.5, 0.75, 1, 1.25, 1.5, 2, 3], //可选的播放速度,可自定义
video: {
url:''
}},
}
},
mounted() {
this.dp = this.$refs.player.dp
},
methods:{
get(){
/* name1:'./video/',
name2:'../static/',
name3:'assets/',
namef1:'2.mp4',
namef2:'my.mp4',
namef3:'1.jpg',
*/
this.dp.switchVideo({
// url:require(this.name2+this.namef2) //不可以 static文件内
// url:require('../static/'+this.namef2) //可以 static文件内-----
// url:require("../static/my.mp4") //可以 static文件内-----
// url:require(this.name1+this.namef1) //不可以 public/video文件
// url:"../static//2.mp4", //找不到文件 404
// url:this.name1+this.namef1, //可以 public/video文件可
// url:"./video/2.mp4", //可以 public/video文件可-----
// pic:require('./assets/1.jpg') //可以 assets文件
// pic:require('@/assets/1.jpg') //可以 assets文件
// pic:require('@/'+this.name3+this.namef3) //报错 assets文件 Module not found: Error: Can't resolve '../views/HomeView.vue' in 'E:\学习\vue\untitled\src\router'
// pic:require('@/assets/'+this.namef3) //可以 assets文件
// pic: '@/assets/1.jpg' //找不到文件 404
/*
*img标签和 background-image: url() 可以成功获取
--- @/assets/xxx.jpg assets文件
--- ../public/xxx.jpeg public文件
--- ../static/xxx.jpg static文件
*vue-Dplayer中:
* url/pic:后面直接跟随路径可以, url直接有变量拼接可以
*url/pic:require() 里面不能使用多个变量拼接 可以直接写路径
- url:require("../static/my.mp4") //可以
- url:require('../static/'+this.namef2) //可以
- url:require(this.name2+this.namef2) //不可以
*/
})
},
},
}
</script>
<style lang="less">
.dplayer{
width: 500px;
height: 300px;
}
img{
width: 300px;
height: 300px;
}
.a1,.a2,.a3{
width: 300px;
height: 300px ;
}
.a1{
background-image: url('@/assets/1.jpg');
}
.a2{
background-image: url('../public/3.jpeg');
}
.a3{
background-image: url('../static/2.jpg');
}
</style>
问题
1.为啥require()中不能使用多个变量拼接,会报错或者没有效果
2.如果有一个需求,需要从后端获取视频的名字,如何实现动态切换视频。将视频存放在public中可以做到。如何不在public文件下使用require()怎么办呀。
3.为啥莫img标签和css中的背景图片属性 就可以直接获取static,public,asstes文件下的图片资源,而vue-Dpayer中的url和pic只能获取public下的图片视频资源,其他两个文件夹不能直接获取必须使用require() 但是require()不能使用多个变量拼接