我应该使用哪一个:s-s-r、仅 SPA 或 SSG 用于我的 Nuxt 项目?

Posted

技术标签:

【中文标题】我应该使用哪一个:s-s-r、仅 SPA 或 SSG 用于我的 Nuxt 项目?【英文标题】:Which one should I use: s-s-r, SPA only or SSG for my Nuxt project? 【发布时间】:2021-10-09 18:35:41 【问题描述】:

我需要使用 laravel 和 nuxtjs 开发一个网站。 据我所知,s-s-r 模式是 nuxtjs 的高级功能之一,但它需要运行 nuxt 服务器。换句话说,我们需要像nginx一样在服务器上部署laravel,并且必须使用npm run start来运行nuxt服务器。如果我们使用 SPA 模式,nuxt 将静态页面生成到 dist 目录中,我们可以简单地将其合并到 laravel 项目中,一切都完成了。我们不需要运行额外的服务器。

这是我目前的看法。我不确定这是否属实,所以我无法决定选择哪一个。首先,我不确定哪个更好。其次,我不确定 s-s-r 模式是否真的需要运行额外的服务器。

我想听取专家的建议并做出决定。如果您对此提出建议,我将不胜感激。提前致谢。

【问题讨论】:

你的前提不正确。 s-s-r 和 SPA 并不相互排斥。 SPA 是单页应用程序,这意味着您使用客户端“路由器”在页面之间进行转换,而无需在服务器中发出请求。 s-s-r 意味着有一个服务器将预渲染应用程序 html,因此它可以在初始加载时由浏览器加载,并且用户(和网络爬虫)不必在看到页面之前等待 JS 到达。您显然可以同时使用两者,并且都需要某种服务器才能运行。 s-s-r 需要一个可以执行 JS 的服务器,而 SPA 需要一个服务器来提供 HTML 谢谢。这是否意味着我们需要为 s-s-r 模式运行额外的服务器?喜欢npm run start 这两种情况都需要服务器。但是,是的,如果您有 s-s-r,您可能需要专门的 node.js 服务器(因此使用 npm run start),而在您只有 SPA 的情况下,您只需要“编译”一次 javascript 然后提供它使用更基本的服务器,例如一个 apache 网络服务器,甚至是一个 AWS S3 存储桶。此外,当您使用 s-s-r 时,在编写代码时可能需要考虑一些额外的事情,例如 window 全局可能并不总是可用,即当代码在服务器端呈现时 谢谢。那是一清二楚。我需要将编译后的内容合并到 laravel 项目中(Laravel 部署在 nginx 服务器上)。我还需要运行节点服务器吗?对于 s-s-r 模式? 这是一个固执己见的问题,但我不敢标记它,因为我去过那里,我知道这是一个非常重要的决定,需要专业知识。 【参考方案1】:

我建议使用 SSG(target: statics-s-r: true),这将为您提供 SEO + 速度,并且您不需要任何服务器。因此,在 Netlify 上托管它是完全免费的。 可以在此处找到有关各个步骤的更多信息:What's the real difference between target: 'static' and target: 'server' in Nuxt 2.14 universal mode?

此外,这一切都归结为 s-s-r 和 SSG 之间的缺点。更多信息可以在谷歌上找到。但是,如果您没有受密码或某些后台管理员专用工具保护的首页,那么 SSG 通常是您的最佳选择。

【讨论】:

谢谢。这就是我想知道的。我想利用 s-s-r 的 SEO 优势,但不想为此运行额外的服务器。 那么它可以与 Laravel 合并并只使用 LAMP 堆栈吗? @Fahmi 不确定你在这里问什么。在 Laravel 应用程序中添加 Nuxt?随意发布一个包含所有细节的新问题!

以上是关于我应该使用哪一个:s-s-r、仅 SPA 或 SSG 用于我的 Nuxt 项目?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-r 版本为使用 Vue cli3 库的 Vuejs cli3 SPA 应用程序说“未定义文档”

如何在 laravel 应用程序中为单个 vue 组件实现 s-s-r?

如何在没有 SPA 或图形界面的情况下,仅通过 POSTMAN 访问 Laravel Sanctum 的 API 路由?

如何将 s-s-r NuxtJs 应用程序部署到主机

使用 cypress.io 模拟 s-s-r 反应应用程序 e2e 测试的服务器

s-s-r 是不是会降低单页应用程序的用户体验? [关闭]