小编Ste*_*tto的帖子

在 Nuxt 2.14 通用模式中 target: 'static' 和 target: 'server' 之间的真正区别是什么?

在最新版本的 Nuxt (2.14) 中,他们引入了在不更改代码时构建应用程序的优化(以显着缩短构建时间)。

我在 jamstack 中制作网站,在 netlify 上部署nuxt generate,直到现在,使用target: 'server'. 我尝试了新target: 'static'的以利用这个新功能,但我的代码不会构建,因为在这种模式下,应用程序似乎无法访问this.$route以生成动态页面。

所以,我的问题是:这彼此有何不同?当我切换target到我要注意什么?

static vue.js netlify nuxt.js jamstack

15
推荐指数
1
解决办法
4055
查看次数

了解 Nuxt.js 中的 State 和 Getters:Getters 不起作用

我是 Vue 和 Nuxt 的新手,我正在使用这些框架以通用模式构建我的第一个网站。

我对商店在 nuxt 中的工作方式有些困惑,因为按照官方文档,我无法实现我的想法。

在我的商店文件夹中,我现在只放置了一个名为“products.js”的文件,在那里我像这样导出状态:

export const state = () => ({

  mistica: {
    id: 1,
    name: 'mistica'
    }
})
Run Code Online (Sandbox Code Playgroud)

(对象被简化以提供更清晰的解释)

在同一个文件中,我设置了一个简单的 getter,例如:

export const getters = () => ({

    getName: (state) => {
      return state.mistica.name
    }
})
Run Code Online (Sandbox Code Playgroud)

现在,根据文档,在我这样设置的组件中:

computed: {
 getName () {
  return this.$store.getters['products/getName']
 }
}
Run Code Online (Sandbox Code Playgroud)

或者(不知道用什么):

computed: {
 getName () {
  return this.$store.getters.products.getName
 }
}
Run Code Online (Sandbox Code Playgroud)

但是当在模板中使用“getName”是“未定义”时,在后一种情况下,应用程序损坏并显示“无法读取未定义的属性‘getName’”

请注意,在模板中,我可以使用“$store.state.products.mistica.name”直接访问状态值,没有问题,为什么会这样?

我做错了什么,或者更好的是,我不明白什么?

vue.js vuex nuxt.js

9
推荐指数
2
解决办法
3万
查看次数

如何正确使用 Nuxt 2.12 中新的 fetch() 钩子进行 SSR?

我将 Nuxt 更新到最新版本,因为他们引入了新的fetch()钩子。在我的项目中,我从 Prismic 检索数据。之前,我使用的是asyncData(),但是在导航时,需要一些时间才能渲染页面asyncData()(这就是它的工作原理)。

理想的解决方案是在该特定页面上导航,并在检索数据时显示加载动画。新的fetch()钩子看起来很合适,因为它暴露了$fetchState.pending以便检查操作的状态。

现在,代码(我正在从商店的类别中检索子类别):

        data(){
            return{
                docs: []
            }
        },

        async fetch() {
            try{
                const res = await this.$prismic.api.query(this.$prismic.predicates.at('my.category.uid', this.$route.params.sub))
                const el = res.results[0]
                const query = await this.$prismic.api.query([this.$prismic.predicates.at('document.type','sub-category'), this.$prismic.predicates.at('my.sub-category.category', el.id)], { orderings: '[my.sub-category.position, my.sub-category.title]' })
                this.docs = query.results
            }   
            catch (e) {
                console.log(e)
            }
        }
Run Code Online (Sandbox Code Playgroud)

这至少在客户端有效。这对于正确的 SSR 有效吗?我的意思是,在asyncData()(在服务器端调用)中,this是不可访问的,data(). asyncData()如果这是正确的解决方案,那么再使用又有什么用fetch()呢?

fetch vue.js server-side-rendering nuxt.js

0
推荐指数
1
解决办法
8105
查看次数