feat: add React and Vue examples with Artplayer integration

- Implemented a React template with Vite, including ESLint configuration and necessary dependencies.
- Created a Vue template with Vite, including setup for Artplayer and plugins.
- Added internationalization support in both React and Vue examples.
- Included sample video and Danmuku plugin integration in both frameworks.
- Established project structure with appropriate configuration files and README documentation.
This commit is contained in:
Harvey Zhao committed 2026-01-03 14:08:31 +08:00
1 parent 62b4be9d82
commit fa2c69e83d
73 files changed
+129 -124

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
<script setup lang="ts">
import { reactive } from 'vue'
import Artplayer, { type Option } from 'artplayer'
import Player from './Player.vue'
const option = reactive<Partial<Option>>({
url: 'https://artplayer.org/assets/sample/video.mp4',
autoSize: true,
})
const style = reactive({
width: '800px',
height: '600px',
margin: '60px auto 0',
})
function getInstance(art: Artplayer) {
console.log('Artplayer instance:', art)
}
</script>
<template>
<Player :option="option" :style="style" @get-instance="getInstance" />
</template>
+47
View File
@@ -0,0 +1,47 @@
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref, shallowRef } from 'vue'
// Test type
import Artplayer, { type Option } from 'artplayer'
// Test i18n
import fr from 'artplayer/i18n/fr'
import id from 'artplayer/i18n/id'
// Test plugins
import artplayerPluginDocumentPip from 'artplayer-plugin-document-pip'
import artplayerPluginDanmuku from 'artplayer-plugin-danmuku'
const props = defineProps<{ option: Partial<Option> }>()
const emit = defineEmits(['getInstance'])
const art = shallowRef<Artplayer | null>(null)
const $container = ref<HTMLDivElement | null>(null)
onMounted(() => {
art.value = new Artplayer({
...props.option,
url: props.option.url as string,
container: $container.value as HTMLDivElement,
i18n: { id, fr },
lang: 'fr',
plugins: [
artplayerPluginDocumentPip({
//
}),
artplayerPluginDanmuku({
danmuku: 'https://artplayer.org/assets/sample/danmuku.xml',
}),
],
})
emit('getInstance', art.value)
})
onBeforeUnmount(() => {
art.value?.destroy(false)
})
</script>
<template>
<div ref="$container" />
</template>
+4
View File
@@ -0,0 +1,4 @@
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')