У меня есть проект nuxt 3 с несколькими макетами. Я хотел бы создать глобальный компонент, который запускается один раз, когда клиент впервые запрашивает мой сайт. И я не хочу, чтобы он размонтировался, когда пользователь меняет макеты. Возможно ли это с Nuxt 3?
Вот глобальный компонент:
<template>
<component is = "script" src = "https://js.pusher.com/8.0.0/pusher.min.js" />
</template>
<script setup>
onMounted(() => {
console.info('mounted here')
var pusher = new Pusher('APP_ID', {
cluster: 'CLUSTER_ID',
})
var channel = pusher.subscribe('notifications-general')
channel.bind('PATH, function (data) {
console.info('here in execute')
alert(data.notification.body_en)
})
})
</script>
Если вам нужно запускать только логику Javascript, вы можете использовать клиентское промежуточное ПО.
@tao Спасибо. Я даже забыл, что у меня есть app.vue
Полагаю, промежуточное ПО @nur_riyad запускается при каждом изменении маршрута. Это не сработает для меня.
Вы можете использовать промежуточное ПО именованных маршрутов, которое можно запускать только для одной страницы или маршрутов.





Попробуйте поместить эту логику в src/app.vue, теоретически это никогда не должно размонтироваться, пока сам браузер не будет закрыт?
Возможно, это сработает?
<template>
<component is = "script" src = "https://js.pusher.com/8.0.0/pusher.min.js" />
<nuxt-layout>
<nuxt-page />
</nuxt-layout>
</template>
<script setup>
onMounted(() => {
console.info('mounted here')
var pusher = new Pusher('APP_ID', {
cluster: 'CLUSTER_ID',
})
var channel = pusher.subscribe('notifications-general')
channel.bind('PATH, function (data) {
console.info('here in execute')
alert(data.notification.body_en)
})
})
</script>
Спасибо. TBH Я даже забыл, что у меня есть app.vue.
Экземпляр компонента, по крайней мере теоретически, привязан к конкретному узлу DOM. Он размонтируется, когда узел DOM удаляется логикой контекста. Похоже, что вам действительно нужно хранилище, которое позволяет сохранять данные в приложении без привязки к какому-либо узлу DOM. При этом само приложение является хорошим местом для хранения всего, что вы хотите, на нескольких «страницах». И он никогда не "демонтируется".