问题标签 [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.
javascript - 如何在 vuex 商店中存储 nuxtjs 动态生成的路由
我试图通过创建一个静态网站来利用 nuxtjs SSG 功能,其中页面内容和导航是从 API 获取的。
我已经找到了如何通过定义一个模块来动态生成路由的方法,在该模块中我使用generate:before
钩子来获取页面内容和路由。创建路由时,我将页面内容存储为路由有效负载。下面的代码就是这样做的,并按预期工作。
现在我面临的问题是我有一些导航组件需要生成的路线,我正在考虑将它们存储到 vuex 商店中。
我尝试了generate:done
钩子,但我不知道如何从那里获取 vuex 存储上下文。我最终使用的是nuxtServerInit()
动作,因为如文档中所述:
这正是我所需要的,所以我尝试将它与以下代码一起使用:
确实调用了该操作,并且我得到了所有预期值,但是似乎每次调用nuxtServerInit()
存储状态都会重置。我在控制台中打印了这些值(因为我不确定是否可以调试它),这就是它们的样子:
我已经在这个主题上搜索了所有我能找到的东西,尽管我没有找到与我相似的例子,但我把所有我能找到的部分放在一起,这就是我想出的。
我的想法是只向 API 发出一个请求(在构建期间),将所有内容存储在 vuex 中,然后在组件和页面中使用该数据。
要么有办法做得更好,要么我没有完全掌握这个nuxtServerInit()
动作。我被卡住了,不知道如何解决这个问题,也看不到其他解决方案。
如果你能做到这一点,谢谢你的时间!
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
.
可能的解决方案
我目前的解决方案(我觉得太复杂了,但可能对某人有帮助)是添加一个rewrite
on next.config.js
,如下所示:
ssg - 我们可以在 Wordpress/Learndash 中使用这些 SSG WSG API 吗?
我们可以在 Wordpress/Learndash 中使用这些 SSG WSG API 吗?
vue.js - 如何在没有 nuxt 的情况下从 vue 项目中生成 SSG
我使用 vue cli 创建了一个 vue 项目:
我认为当我这样做时的输出npm run build
将是一个单页应用程序 (SPA)。使用现有代码生成静态网站(SSG / Jamstack)需要什么?我知道我可以使用 Nuxt 轻松做到这一点,但我想知道如何在没有 Nuxt 的情况下做到这一点。
编辑:我认为我的意思是预渲染一些页面,以便对 SEO 更好。
javascript - 错误:动态 SSG 页面需要 getStaticPaths,而“/blogs/[post]”缺少 getStaticPaths
我尝试npm run build
。
发生构建错误错误:动态 SSG 页面需要 getStaticPaths,而“/blogs/[post]”缺少 getStaticPaths。
我的代码:
next.js - Nextjs,包罗万象,静态生成和重定向
我有一个使用 nextjs 10.1 的网站
我正在使用 SSG 和一个包罗万象的策略,即在 /pages 下,我有
在我的 index.tsx 我有
在我的无头 cms(primic)中,保存了 slug 历史记录(这非常有用),然后多个 slug 引导到同一个页面,因为我还参数化了 fall 截至今天,为这些多个版本呈现了正确的规范标签,带有链接到在 prismic 上参数化的最后一个 slug。
我更喜欢301。
如何从我的 getStaticProps 创建一个 301,或者我如何构建我的 /pages/[catchall] 以便我有 301 从旧的蛞蝓到新的蛞蝓?
非常感谢您的帮助!
graphql - Next js - 无法使用 apollo 客户端 api 生成动态 getStaticPaths
我不想使用 Apollo graphql 客户端为 next.js 中的 SSG 导出生成我的帖子的 slug 列表。这是我的代码:
当我使用npm run dev
which 在开发模式下启动下一个应用程序时,这可以正常工作,但是当我想运行时next build && next export
,似乎 API 不起作用并data
返回undefined
,因此,没有生成页面并且它抛出一个错误说TypeError: Cannot read property 'title' of undefined
javascript - SSG和SSR如何选择?
我目前正在探索 Nextjs 并建立一个具有相同框架的网站。该网站具有公共流程、受保护的路线(例如用户仪表板、用户项目详细信息和一般用户数据)和产品页面。
问题是,我如何在 SSG 和 SSR 之间选择一条特定的路线。到目前为止,这是我的策略
- 所有静态页面(表单、用户输入) - SSG
- BLOG链接全部为SSG
我的问题是:
仪表板和用户详细信息页面将不是实时数据,而是可能包含项目特定信息的数据。这是具有增量重新验证的用例 SSG 还是 SSR?
公开可用的产品详细信息页面。可能有超过一千种产品。在这种情况下,预渲染产品页面的漫长构建过程是否超过了潜在的 seo 好处?因为这似乎是 SSG 重新验证的理想案例。还是最适合 SSR?
提前致谢!
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.vue
这是 slug.vue 的 pastebin