Nuxt - 如何在服务器端渲染后 运行 客户端中的代码?
Nuxt - How can I run a code in client-side after server-side-rendering?
我创建了一个注入 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,因为它只能在浏览器中显示。
我有一个包含产品详细信息的页面,并且我正在使用 asyncData 方法接收数据。当找不到产品时,我想显示一条带有正确消息的通知,并将用户重定向到产品列表页面。当我在客户端更改路由时,一切都很棒。但是,在服务器端发生的第一页加载(例如,我在浏览器中手动更改 url )不会出现通知,只有重定向有效。
我的问题是:在这种情况下如何显示通知?如何在 SSR 之后在浏览器中创建一个 noty 或者什么是解决我的问题的最佳其他方法?
在客户端已经呈现之后(在服务器端呈现之后),有什么方法可以 运行 一些代码吗?
您可以只为该插件禁用 ssr。
plugins: [
...,
{ src: '~plugins/yourplugin.js', ssr: false }
]
好的,我找到了一个模块:https://github.com/potato4d/nuxt-client-init-module
不可能正确知道(当我回答时 nuxt <= 2.14.0)
但您可以结合客户端插件和客户端中间件来实现
请看看这个 link:
https://github.com/nuxt/nuxt.js/issues/2653#issuecomment-390588837
我创建了一个注入 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,因为它只能在浏览器中显示。 我有一个包含产品详细信息的页面,并且我正在使用 asyncData 方法接收数据。当找不到产品时,我想显示一条带有正确消息的通知,并将用户重定向到产品列表页面。当我在客户端更改路由时,一切都很棒。但是,在服务器端发生的第一页加载(例如,我在浏览器中手动更改 url )不会出现通知,只有重定向有效。 我的问题是:在这种情况下如何显示通知?如何在 SSR 之后在浏览器中创建一个 noty 或者什么是解决我的问题的最佳其他方法?
在客户端已经呈现之后(在服务器端呈现之后),有什么方法可以 运行 一些代码吗?
您可以只为该插件禁用 ssr。
plugins: [
...,
{ src: '~plugins/yourplugin.js', ssr: false }
]
好的,我找到了一个模块:https://github.com/potato4d/nuxt-client-init-module
不可能正确知道(当我回答时 nuxt <= 2.14.0) 但您可以结合客户端插件和客户端中间件来实现 请看看这个 link:
https://github.com/nuxt/nuxt.js/issues/2653#issuecomment-390588837