Nuxt-服务器端渲染后如何在客户端运行代码?

时间:2018-08-17 09:22:45

标签: vue.js nuxt.js serverside-rendering noty

我创建了一个注入noty(https://ned.im/noty/#/)的插件,以便可以在全球范围内使用它,它看起来像这样:

export default ({ app }, inject) => {

    const notify = function (options = {}) {
        if (process.client) {
            new Noty(options).show();
        }
    }

    app.$notify = notify;
    inject('notify', notify);

}

此插件仅在客户端显示Noty。在服务器端不会出现noty,因为它只能在浏览器中显示。 我有一个包含产品详细信息的页面,并且正在asyncData方法中接收数据。当找不到产品时,我想显示一条带有适当消息的Noty,并将用户重定向到产品列表页面。当我在客户端更改路由时,一切都很棒。但是,在第一页加载(例如,我在浏览器中手动更改url)的情况下,该错误在服务器端不会出现,只有重定向有效。 我的问题是:在这种情况下如何显示出noty?在SSR之后如何在浏览器中创建一个noty,或者对我的问题最好的其他解决方案是什么?

在客户端已经渲染之后(服务器端渲染之后),有什么方法可以运行一些代码吗?

3 个答案:

答案 0 :(得分:0)

您可以仅对该插件禁用ssr。

plugins: [
   ...,
   { src: '~plugins/yourplugin.js', ssr: false }
]

答案 1 :(得分:0)

好的,我为此找到了一个模块:https://github.com/potato4d/nuxt-client-init-module

答案 2 :(得分:-1)

不可能正确知道(我回答时,nuxt <= 2.14.0) 但是您可以结合使用客户端插件和客户端中间件来实现 请查看此链接:

https://github.com/nuxt/nuxt.js/issues/2653#issuecomment-390588837