0

我用 Nuxt 创建了一个博客,其中包含我的每篇文章(articles/_slug.vue)的动态路由。在_slug.vue文件中,我使用 asyncData 从strapi CMS 中获取标记内容。

aricles/_slug.vue

在运行nuxt generate然后nuxt start并导航到我的浏览器中的文章页面后,当我打开页面源时,我发现有许多 Js 文件正在导入/_nuxt/{randomNumbers}.js和一个 id为 __nuxt的 div ,很可能类似于 SPA 格式。

一篇文章的页面来源

我的 index.vue 页面不会发生这种情况,因为当我查看 index.vue 的页面源时,我的所有内容都在 HTML 中。

谷歌爬虫能够索引我的文章页面上的内容很重要,因此不包含博客内容的页面来源并不理想。

我不明白的是,当我打开 nuxt 生成的 dist 文件夹时,我发现我的所有文章都在包含用我的博客内容硬编码的 HTML 文件的子文件夹中。所以我想知道为什么 nuxt 不提供这些 HTML 文件,有没有办法这样做?

文件夹

4

2 回答 2

0

据我所知,所有页面和组件都放在一个名为 Nuxt 的组件中,我认为“__nuxt”元素就是这样。顺便说一句,使用 asyncData 和“nuxt generate”不会使您的应用程序服务器端动态化,因为“nuxt generate”会生成一个静态站点,并且在使用“nuxt generate”时,所有 asyncData 挂钩都将被调用一次。对于硬编码的博客文章,我认为您应该在 nuxt.config.js 中禁用 Nuxt Crawler。 Nuxt Docs:生成属性#Crawler

export default {
  generate: {
    crawler: false
  }
}
于 2021-02-24T17:25:19.950 回答
0

似乎在 Vercel 上托管项目后,静态行为会相应地起作用。在本地测试网站(nuxt start)时,内容不会预加载到页面源中,它继续充当动态路由上的 SPA。但是,在部署到 Vercel 后,可以在页面源代码中找到博客内容。

于 2021-02-25T16:51:18.537 回答