我用next创建了一个博客,为我的每篇文章提供动态路由(articles/_slug.vue)。在_slug.vue内部我使用asyncData从strapi CMS抓取标记内容。
从/_slug.vue
运行完next generatenext start并在浏览器中导航到文章页面,当我打开页面源代码时,我发现有许多Js文件正在导入/_nuxt/{randomNumbers}.js和一个id为__next的div,很可能类似于SPA格式。
文章的页面来源
这不会发生在我的索引中。当我查看页面源的索引。我所有的内容都在HTML中。
重要的是,谷歌爬虫能够索引我的文章页面上的内容,所以不包含博客内容的页面来源是不理想的。
我不明白的是,当我打开由next生成的dist文件夹时,我发现我所有的文章都在包含HTML文件的子文件夹中,这些文件与我的博客内容硬编码。所以我想知道为什么不下一步服务这些HTML文件,有没有办法做到这一点?
distFolder
据我所知,所有的页面和组件都在一个名为next的组件中,我认为"__nuxt"元素就是这样。顺便说一下,使用asyncData和' next generate'不会使你的应用程序服务器端动态,因为' next generate'生成一个静态站点,而使用' next generate'所有asyncData钩子将被调用一次。对于硬编码的博客文章,我认为你应该在你的next .config.js中禁用next Crawler。下一个文档:生成属性#Crawler
export default {
generate: {
crawler: false
}
}
似乎在Vercel上托管项目后,静态行为相应地工作。当在本地测试网站时(下次开始),内容不会预先加载到页面源中,它会继续作为动态路由上的SPA。然而,在部署到Vercel后,博客内容可以在页面源代码中找到。