nuxt.js - 仅插件服务器端

标签 nuxt.js

我有一个不希望客户看到的插件。不幸的是,它总是为服务器和客户端构建的。如何预防?

<template>
    <div>
        Test
    </div>
</template>

<script>
    import getAll from '~/plugins/api'
    export default {
        asyncData (context, callback) {
            getAll(function(data){
                callback(null,data);
            })
        }
    }
</script>

这是我的 .vue 文件。数据的获取工作正常,但我也可以从客户端看到我不想要的代码。

最佳答案

也许您可以使用 context.isServer 属性。
这是一个 bool 值,让您知道您是否真的是服务器端的渲染器。

<script>
import getAll from '~/plugins/api'
export default {
    asyncData (context, callback) {
        if (context.isServer) {
            getAll(function(data){
                callback(null,data);
            })
        }
    }
}
</script>

这里有更多关于 Nuxt 上下文的细节:https://nuxtjs.org/api/context


更新:(感谢@Lanayx)

"注:从Nuxt.js 2.4开始,mode被引入作为插件的选项来指定插件类型,可能的值是:client或server。ssr:false将适配mode:'client'并被弃用在下一个主要版本中。”

// nuxt.config.js:

export default {
  plugins: [
    { src: '~/plugins/both-sides.js' },
    { src: '~/plugins/client-only.js', mode: 'client' },
    { src: '~/plugins/server-only.js', mode: 'server' }
  ]
}

关于nuxt.js - 仅插件服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494579/

相关文章:

graphql - 不变违规 : Expecting a parsed GraphQL document

javascript - Nuxt。属性或方法 "posts"未在实例上定义但在渲染期间被引用

vue.js - 当我更改页面时 Nuxt $vuetify.theme.dark 重置

vue.js - 更改输入文本值vuex

node.js - 如何更改 _nuxt 文件夹的名称?

typescript - HeadlessUI/vue : TypeError vue. defineComponent 不是一个函数

javascript - 获取http://localhost:3000/components/t.mp3 net::ERR_ABORTED 404(未找到)

json - Nuxt 如何在数组上循环并使用 v-for 正确显示数据

javascript - 无法直接访问 Nuxt SPA 中的页面

javascript - Firebase 在渲染之前在 Nuxtjs 上获取