Получение текущего заголовка страницы и обновление из вложенного компонента и обновление в Vuejs 2

Файлы Javascript часто кэшируются браузером намного дольше, чем вы могли ожидать.

Это может часто приводить к неожиданному поведению при выпуске новой версии вашего JS-файла.

Таким образом, общепринятой практикой является добавить параметр QueryString в URL-адрес файла javascript. Таким образом, браузер кэширует файл Javascript с помощью v = 1. Когда вы выпускаете новую версию своего javascript-файла, вы меняете URL-адрес на v = 2, и браузер будет вынужден загрузить новую копию.

1
задан sbell9 16 January 2019 в 17:38
поделиться

2 ответа

Альтернативным подходом было бы использование Vuex для управления состоянием.

const store = new Vuex.Store({
  state: {
    notifications: []
  },
  mutations: {
    load (state, notifications) {
      state.notifications = notifications
    }
  },
  actions: {
    load (context) {
      Vue.$http.get('/notifications').then(response = {
        context.commit('load', response.data);
      })
    }
  }
});

// Notifications.vue
new Vue({
  mounted () {
    // you will want to add more than just an interval. You will want to keep track of this and perhaps stop it if, for example, the user logs out.
    setInterval(function () {
      store.dispatch('load');
    }.bind(this), 1000)
  }
});


// Add to your router
metaInfo: function () {
  return {
    title: '(' + store.state.notifications + ')' + 'Leads - ' + this.view
  }
}

Это был быстрый пример того, как использование Vuex решит эту проблему. Это не проверено и предназначено только для образовательных целей. Узнайте больше на https://vuex.vuejs.org/guide/

0
ответ дан TimWickstrom.com 16 January 2019 в 17:38
поделиться

Я предполагаю, что у вас есть объект данных в вашем компоненте уведомлений.

Упрощенная версия Notification.vue

new Vue({
  data: {
    notifications: []
  },
  watch: {
    notifications (current, previous) {
      document.title = '(' + current.length + ')' + document.title.replace(/ *\([^)]*\) */g, "");
    }
  }
})

То, что мы здесь делаем, - это отслеживание изменений в объекте уведомлений. Если это изменится, мы добавляем номер уведомления к названию документа.

document.title.replace(/ *\([^)]*\) */g, "") эта часть удаляет текущий счетчик уведомлений перед обновлением с новым счетчиком.

Ограничения для этого подхода:

Если в скобках есть другие слова (слова), они будут удалены.

Если счетчик уведомлений равен нулю, он будет отображать (0) заголовок, если счет равен 1234, он будет отображать (1234) заголовок. Возможно, вы захотите поставить еще несколько проверок, чтобы не показывать НОЛЬ, и, возможно, сделать 9+, если длина> 9

0
ответ дан TimWickstrom.com 16 January 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: