问题标签 [ssg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
47 浏览

reactjs - 为什么 lang 参数没有从 getStaticPaths 传递给 getStaticProps?

getStaticPaths方法:

getStaticProps

console.log输出:

在此处输入图像描述

我想在上下文中以某种方式查看 lang。我怎么能做到这一点?

0 投票
1 回答
562 浏览

javascript - 如何在 vuex 商店中存储 nuxtjs 动态生成的路由

我试图通过创建一个静态网站来利用 nuxtjs SSG 功能,其中页面内容和导航是从 API 获取的。

我已经找到了如何通过定义一个模块来动态生成路由的方法,在该模块中我使用generate:before钩子来获取页面内容和路由。创建路由时,我将页面内容存储为路由有效负载。下面的代码就是这样做的,并按预期工作。

现在我面临的问题是我有一些导航组件需要生成的路线,我正在考虑将它们存储到 vuex 商店中。

我尝试了generate:done钩子,但我不知道如何从那里获取 vuex 存储上下文。我最终使用的是nuxtServerInit()动作,因为如文档中所述:

这正是我所需要的,所以我尝试将它与以下代码一起使用:

确实调用了该操作,并且我得到了所有预期值,但是似乎每次调用nuxtServerInit()存储状态都会重置。我在控制台中打印了这些值(因为我不确定是否可以调试它),这就是它们的样子:

我已经在这个主题上搜索了所有我能找到的东西,尽管我没有找到与我相似的例子,但我把所有我能找到的部分放在一起,这就是我想出的。

我的想法是只向 API 发出一个请求(在构建期间),将所有内容存储在 vuex 中,然后在组件和页面中使用该数据。

要么有办法做得更好,要么我没有完全掌握这个nuxtServerInit()动作。我被卡住了,不知道如何解决这个问题,也看不到其他解决方案。

如果你能做到这一点,谢谢你的时间!

0 投票
0 回答
169 浏览

javascript - Next.js 动态路由:避免为路径参数生成新页面

tl;博士:我需要mypage.com/users/123表现得像mypage.com/users?user_id=123

我正在使用 Next.js 10。我希望有类似mypage.com/users/123和的路线mypage.com/users/445。我的所有搜索都将我带到动态路由,这建议在pages文件夹下使用此结构:

这不适用于我的情况,因为随后会在服务器中为每个用户生成一个新页面。我只想要一个静态生成的页面,在 下users/,它在客户端获取user_id作为参数。

使用查询参数,这很简单。我可以使用这个文件夹结构

然后,当有人访问时mypage.com/users?user_id=123,会提供相同的页面,然后客户端 js 代码可以访问user_id.

可能的解决方案

我目前的解决方案(我觉得太复杂了,但可能对某人有帮助)是添加一个rewriteon next.config.js,如下所示:

0 投票
1 回答
68 浏览

ssg - 我们可以在 Wordpress/Learndash 中使用这些 SSG WSG API 吗?

我们可以在 Wordpress/Learndash 中使用这些 SSG WSG API 吗?

https://developer.ssg-wsg.sg/webapp/docs/product/4ZCqa7uABJeR6vtKUjsxyx/group/5QgnbY9GvH7KzcemkGY47V#

0 投票
1 回答
736 浏览

vue.js - 如何在没有 nuxt 的情况下从 vue 项目中生成 SSG

我使用 vue cli 创建了一个 vue 项目:

我认为当我这样做时的输出npm run build将是一个单页应用程序 (SPA)。使用现有代码生成静态网站(SSG / Jamstack)需要什么?我知道我可以使用 Nuxt 轻松做到这一点,但我想知道如何在没有 Nuxt 的情况下做到这一点。

编辑:我认为我的意思是预渲染一些页面,以便对 SEO 更好。

0 投票
1 回答
756 浏览

javascript - 错误:动态 SSG 页面需要 getStaticPaths,而“/blogs/[post]”缺少 getStaticPaths

我尝试npm run build

发生构建错误错误:动态 SSG 页面需要 getStaticPaths,而“/blogs/[post]”缺少 getStaticPaths。

我的代码:

0 投票
0 回答
45 浏览

next.js - Nextjs,包罗万象,静态生成和重定向

我有一个使用 nextjs 10.1 的网站

我正在使用 SSG 和一个包罗万象的策略,即在 /pages 下,我有

在我的 index.tsx 我有

在我的无头 cms(primic)中,保存了 slug 历史记录(这非常有用),然后多个 slug 引导到同一个页面,因为我还参数化了 fall 截至今天,为这些多个版本呈现了正确的规范标签,带有链接到在 prismic 上参数化的最后一个 slug。

我更喜欢301。

如何从我的 getStaticProps 创建一个 301,或者我如何构建我的 /pages/[catchall] 以便我有 301 从旧的蛞蝓到新的蛞蝓?

非常感谢您的帮助!

0 投票
1 回答
630 浏览

graphql - Next js - 无法使用 apollo 客户端 api 生成动态 getStaticPaths

我不想使用 Apollo graphql 客户端为 next.js 中的 SSG 导出生成我的帖子的 slug 列表。这是我的代码:

当我使用npm run devwhich 在开发模式下启动下一个应用程序时,这可以正常工作,但是当我想运行时next build && next export,似乎 API 不起作用并data返回undefined,因此,没有生成页面并且它抛出一个错误说TypeError: Cannot read property 'title' of undefined

0 投票
1 回答
216 浏览

javascript - SSG和SSR如何选择?

我目前正在探索 Nextjs 并建立一个具有相同框架的网站。该网站具有公共流程、受保护的路线(例如用户仪表板、用户项目详细信息和一般用户数据)和产品页面。

问题是,我如何在 SSG 和 SSR 之间选择一条特定的路线。到目前为止,这是我的策略

  1. 所有静态页面(表单、用户输入) - SSG
  2. BLOG链接全部为SSG

我的问题是:

  1. 仪表板和用户详细信息页面将不是实时数据,而是可能包含项目特定信息的数据。这是具有增量重新验证的用例 SSG 还是 SSR?

  2. 公开可用的产品详细信息页面。可能有超过一千种产品。在这种情况下,预渲染产品页面的漫长构建过程是否超过了潜在的 seo 好处?因为这似乎是 SSG 重新验证的理想案例。还是最适合 SSR?

提前致谢!

0 投票
2 回答
1988 浏览

nuxt.js - 推送新路由时 Nuxt 静态未加载获取状态

我正在使用 nuxt 生成完整的静态 Web 应用程序,如此处所述https://nuxtjs.org/blog/going-full-static/#crazy-fast-static-applications

我也有一个小博客作为静态站点加载,所以我使用 fetch 钩子从 api 加载数据。

当我生成( npm run generate)时,获取的状态是在里面正确生成的dist/assets/static,所以直接访问时/blog,状态正确加载,数据正确显示。但是,当我在主页中并使用

或一个

获取的状态没有被加载,我必须再次调用api,或者在钩子中再调用this.$fetch()一次mounted()

我已经添加了一个

到主页

我需要在使用导航时正确加载获取的状态我还缺少什么?

澄清

我没有遇到 fetch 钩子本身的任何问题,而是导航没有检索目标路由的状态。连HTML都在那里我需要页面来获取目标路由的状态,当路由发生变化时,因为vue模板依赖它,所以如果没有加载,ui就不会显示任何东西,我是被迫的手动调用 fetch 钩子

为了看得更清楚,这是我的 devtools 在直接访问 /blog 时的屏幕截图,注意 state.js 是如何正确检索的(它包含所有呈现的内容) 直接访问时正确获取状态

以下是我的 devtools 在访问 / 时的屏幕截图,然后使用 nuxt-link 或 this.$router.push 去博客(结果相同)

导航后未获取状态

静态截图: /blog 的静态 state.js

Blog.vue

这是 slug.vue 的 pastebin

https://pastebin.com/DmJa9Mm1