首页 > 解决方案 > SPA 模式下的 Nuxt.js 静态生成导致与内部加载组件相同的输出

问题描述

我使用“npx create-nuxt-app my-app”创建了一个全新的应用程序,并选择了所有默认选项,除了将模式设置为 SPA。

我运行npm run generate并期望 dist/*.html 文件包含我的页面/*.vue 的渲染内容,但所有生成的 HTML 都包含:

  ...
  <div id="nuxt-loading" aria-live="polite" role="status">
    <div>Loading...</div>
  </div>
  ...

在我希望从文件中获取内容的地方,给定样板 index.vue,index.html 应该包含 Vue 欢迎消息的 HTML。

我的期望错了吗?出于性能和 SEO 的原因,我想利用静态生成。我所有的页面都是静态的。

标签: nuxt.js

解决方案


回答我自己的问题:这是预期的行为。

显然我应该为这种情况选择“通用”模式,稍后仍将充当 SPA。

让我感到困惑的部分是将“通用”模式描述为“服务器端渲染”。正在为服务器渲染提供静态生成的文件 - 显然是的。

我一直认为“服务器渲染”需要实际渲染该 HTML,这不是我想要的。我想要静态生成的文件,稍后将成为 SPA。

如果您从浏览器的角度来看,任何 HTML 都将被服务器渲染,无论是 node.js 新渲染的东西,还是一年前生成的静态 HTML 文件。

仍然经常将 SSR 和静态生成描述为分离的方法,这也错误地暗示“静态生成”不是 SSR。在这种情况下它在哪里。


推荐阅读