【问题标题】:Integrate Google Optimize in Nuxt application在 Nuxt 应用程序中集成 Google Optimize
【发布时间】:2020-12-15 11:06:19
【问题描述】:

我正在尝试在我的 Nuxt 应用程序中使用 Google Optimize。我需要一种在任何页面组件更新后触发激活事件的方法。当前的问题是 API 返回的数据可能会使用 API 数据在页面加载时重新呈现 DOM。之后我需要触发激活事件。下面给出了在 SPA 中触发激活事件的谷歌文档 Firing activation in a single page application

对于angular app,是通过添加来完成的

myapp.run(function($rootScope, $timeout) {
   $rootScope.$watch(function(){
     $timeout(function(){
       dataLayer.push({'event': 'optimize.activate'});
     },0,false);
   })
})

我正在我的 Nuxt 应用程序中寻找类似的替代方案

我知道在组件内部,我可以在内容更新并重新渲染 DOM 后监听 updated 生命周期钩子。但是当任何组件更新或 DOM 重新渲染时,我需要一种方法在中心位置执行一些代码。

我使用的是在plugins 目录中创建了一个全局mixin (globalMixin.js) 并使用它的updated 生命周期方法。因此,这个 mixin 代码被注入到每个组件中,并且如果这些组件数据中的任何一个发生更改,就会调用 update 方法。但我怀疑这种方法是否是理想的解决方案。

任何人都可以向我建议一种更好的方法来完成这项任务,或者 Nuxt/Vue 有什么标准的方法吗? plugins/globalMixin.js里面的代码如下:

if (!Vue.__my_mixin__) {
      Vue.__my_mixin__ = true
      Vue.mixin({
        updated() {
        ..execute some code
       }
     }) 
    } 

【问题讨论】:

    标签: javascript vue.js nuxt.js


    【解决方案1】:

    您应该使用诸如Vuex 之类的存储来处理应用程序的本地状态。

    然后您可以在任何页面或组件中检索商店的状态。我推荐使用vuex-map-fields

    【讨论】:

    • 抱歉不是这样,我需要在页面中更新DOM时执行一些代码。我们通常为此使用更新的生命周期挂钩,但这仅适用于组件。页面包含很多组件,如果页面中的任何组件发生水合作用,我需要执行一些代码。基本上我在使用 Nuxt 构建的 Web 应用程序中使用 Google 优化。当页面中的任何组件重新呈现时,我需要触发激活事件。
    • 您应该更新您的问题,说明您如何在您的应用程序中集成谷歌优化,并解释更多您尝试用它做什么。我仍然认为 vuex 可能是您的解决方案,因为您可以根据其状态捕获任何组件的任何更改
    • 应用程序中有很多组件,我正在寻找的是我需要在一个中心位置编写代码,以便它也适用于未来的组件。站点已经使用 vuex,如果您指定 vuex 解决方案,请指定如何在不修改应用程序中使用的 n 个组件的情况下完成此任务。谷歌优化单页应用程序的实现在这个链接中给出support.google.com/optimize/answer/…
    • 请查看 Angular 应用程序实现的链接,它只是几行代码,因此适用于整个应用程序。我需要在我们的应用程序中使用这种替代方案。我们的应用程序已经使用 vuex,但用于组件间通信
    • 如果你不想重写任何东西,也许你可以在整个应用程序中添加一个脚本并使用MutationObserver。您根本不必关心将 google 优化与 vuejs 集成
    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多