App.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <script setup>
  2. import { ref, computed, onMounted } from 'vue'
  3. // import UtmTracker from 'utm-params-extractor-test'
  4. import '../../src/index'
  5. const utm = ref(null)
  6. let tracker = null
  7. onMounted(async () => {
  8. tracker = new UtmTracker({
  9. reportUrl: 'http://1e86b0fd.r32.cpolar.top/admin/marketing/config/report',
  10. autoSend: false
  11. });
  12. utm.value = await tracker.getParamsAsync()
  13. })
  14. const utmJson = computed(() => utm.value ? JSON.stringify(utm.value, null, 2) : '正在获取...')
  15. const sendUtm = () => {
  16. if (tracker) {
  17. tracker.send()
  18. } else {
  19. console.warn('UtmTracker 尚未初始化')
  20. }
  21. }
  22. </script>
  23. <template>
  24. <div style="padding: 24px;">
  25. <h1>UTM Params Extractor Demo (Vue3)</h1>
  26. <p>本页面演示如何在 Vue3 项目中使用 <code>utm-params-extractor-test</code> 包。</p>
  27. <button @click="sendUtm">发送</button>
  28. <h2>获取到的参数:</h2>
  29. <pre style="background: #f6f8fa; padding: 16px; border-radius: 8px; text-align: left;">
  30. {{ utmJson }}
  31. </pre>
  32. </div>
  33. </template>
  34. <style scoped>
  35. .logo {
  36. height: 6em;
  37. padding: 1.5em;
  38. will-change: filter;
  39. transition: filter 300ms;
  40. }
  41. .logo:hover {
  42. filter: drop-shadow(0 0 2em #646cffaa);
  43. }
  44. .logo.vue:hover {
  45. filter: drop-shadow(0 0 2em #42b883aa);
  46. }
  47. </style>