【问题标题】:How SSG works in Nuxt?SSG 如何在 Nuxt 中工作?
【发布时间】:2021-12-30 09:50:05
【问题描述】:

我是 Nuxt 开发平台的新手,主要在 Vue(v2) 中工作。

在深入研究文档并在本地进行了一些实验后,我仍然需要澄清一些事情:

  1. 在静态生成模式下,每个页面是否都有自己的 Vue 应用实例?也就是说,从服务器请求的每个预渲染页面在客户端都表现为 SPA。
  2. 如果 #1 为真,是否每个页面以及实际上每个应用程序都与所有其他页面和应用程序隔离运行?没有共享状态?
  3. 在 SSG 模式下使用 Vuex 时,每个页面是否都有自己的 Vuex 存储,该存储在服务器上呈现页面时会以初始状态膨胀?而且,这种状态是否会传递给客户端?
  4. 导航到其他页面(甚至刷新当前页面)时,此商店会被销毁,以替换为新页面,对吗?

【问题讨论】:

    标签: javascript vue.js web nuxt.js


    【解决方案1】:
    1. 在 SSG 中,每个页面都会提前呈现,但最后会被水合,从而成为 SPA。 Nuxt 基本上是 Vue 的类固醇,但它仍然是 Vue。
    2. 不知道你在这里所说的隔离,你完全可以传递道具,使用发射等......同时,如果你有页面,它们不会同时加载,有代码拆分+延迟加载+预取。一些信息可以是found here
    3. 在将 Vuex 与 Nuxt 结合使用时,您可以开箱即用地使用 namespaced modules。您确实有 nuxtServerInit 来预填充商店是的。您可以阅读Nuxt lifecycle btw。但是您没有开箱即用的逐页 Vuex 模块,这个 IMO 没有真正的用途。是的,您当然会在客户端上获得您的 Vuex 商店。
    4. 如果您使用<a></a> 标签导航到不同的路径,您将核对您的 SPA 是的。如果您使用<nuxt-link></nuxt-link>,您将留在 SPA 中,因为 Vue 路由器将进行“导航”。但是,是的,如果您直接在 url 中输入路径并按 Enter 或使用 F5 刷新页面,您的整个 SPA 将被删除,所有内容都将从头开始替换。

    我有spoken at the latest Nuxt-nation,质量不是很好(对此感到抱歉),但你可能会从中得到一些有趣的东西。

    【讨论】:

    • @praet 请更新你的答案,而不是写在 cmets 中。
    • 关于#4:使用 NuxtLink 时,当导航到另一个预渲染页面创建新的 Vue 应用程序实例时,页面如何保留在 SPA 中?这与#1 不矛盾吗?关于#3:因此,即使对于我们的应用程序中需要状态管理的门控/身份验证页面等场景,Vuex 也是过度杀伤力?您链接的视频非常有帮助,即使是几分钟,谢谢。
    • @praet 1. 使用 SSG 时,所有路由都是提前知道的,因此您可以禁用 JS 并且仍然可以看到它们。顺便说一句,它不是一个新的 Vue 应用程序实例,它安装了一个组件/页面,但没有从头开始。水合作用发生一次,所以不,它并不矛盾。补水后,您可以像使用典型的 Vue 应用程序一样留在 SPA 中。 3. Vuex 在很多方面都有用,我需要更多地了解用例才能在这里给出建议。如果你想对你的页面进行一些检查,你可以使用 Vuex 也可以使用中间件:nuxtjs.org/docs/directory-structure/…
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2022-12-08
    • 2022-11-11
    • 2019-03-18
    • 2022-01-03
    • 2021-08-04
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多