如何在Nuxt / Vue应用程序中加载基于域的组件?

时间:2018-04-21 01:22:55

标签: vue.js nuxt.js

我的系统需要根据传入的域名加载不同的动态Vue组件。我可以在context参数中的中间件函数中识别主机,但不知道如何在组件脚本中访问传入域。有没有办法直接在组件中访问它或将数据从中间件传递到组件?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

根据传入加载不同的动态Vue组件   域名

您可以使用nuxtServerInit()方法。

  • 此方法仅在服务器端运行
  • 您无需使用process.server来检测控制流是与服务器还是客户端

  • 此方法可以访问context对象

  • 您必须使用nuxtServerInit()Vuex

  • Nux中默认启用
  • Vuex。所以你可以自由使用Vuex。

每当请求新页面时,下面的代码将在服务器端执行。

您可以将 重定向到基于域 逻辑

的不同页面

actions: {
    nuxtServerInit ({ commit }, reqObject) {
      console.log("url ", reqObject.req.url);
      console.log("method ", reqObject.req.method);
      console.log("host ", reqObject.req.headers.host);
      if(reqObject.req.headers.host == "mydomain.com"){
          reqObject.redirect("/anynuxtpage");
      }
      else{
          //do nothing. page corresponding to the current route will be loaded
      }
    }
}

如果你使用这种方法,那么你不必考虑调用任何中间件

<强>参考

nuxtserverinit https://nuxtjs.org/guide/vuex-store#the-nuxtserverinit-action

vuex-store https://nuxtjs.org/guide/vuex-store