Vue.js Nuxt generate使我的动态路由保持工作状态

Vue.js Nuxt generate使我的动态路由保持工作状态,vue.js,routing,single-page-application,nuxt.js,Vue.js,Routing,Single Page Application,Nuxt.js,我将nuxt用于静态webapp,使用“mode:spa”和“nuxt generate” 文档说动态路由不适用于此,但我的应用程序(/dist)在生成路由后仍然可以在静态服务器上工作,即使没有生成路由。我不明白为什么 生成之前,我的路线如下所示: 导出函数createRouter(){ 返回新路由器({ 模式:“历史”, 基数:“/”, 路线:[ { 路径:“/”, 组件:_36d3a217, 名称:“索引” }, { 路径:“/:焦点”, 组件:_fbe76838, 儿童:[ { 路径:“”

我将nuxt用于静态webapp,使用“mode:spa”和“nuxt generate”

文档说动态路由不适用于此,但我的应用程序(/dist)在生成路由后仍然可以在静态服务器上工作,即使没有生成路由。我不明白为什么

生成之前,我的路线如下所示:

导出函数createRouter(){
返回新路由器({
模式:“历史”,
基数:“/”,
路线:[
{
路径:“/”,
组件:_36d3a217,
名称:“索引”
},
{
路径:“/:焦点”,
组件:_fbe76838,
儿童:[
{
路径:“”,
组成部分:_6d415767,
名称:“焦点”
},
{
路径:“:视图”,
组成部分:19cdee48,
名称:“焦点视图”
}
]
}
],
后退:错误
})
}

现在,生成的/dist并没有像预期的那样创建/focus目录……但是在我的应用程序中,我使用route-URL-params来查询API,它仍然可以工作

如下图所示,组件将使用“thisFocus”和“thisView”作为API中的参数:

/thisFocus/thisView

由于/dist中不存在动态路由,我认为这将不再有效。那么,在没有路由存在的情况下,应用程序如何仍然成功地使用这些URL参数呢


编辑:另一个更简单的提问方式可能是:为什么即使路由不存在,我仍然可以访问/:focus/:view route.params?

如果使用
numxt generate
,通常需要静态生成的页面。这意味着,每个路由有一个HTML文件,其中包含服务器呈现的实际HTML

您希望这样做,因为它将为您提供“两全其美”、良好的SEO、更快的TTI等等,但无需一直运行Node.js服务器。()

如果您想要一个传统的SPA,通常只有一个
index.html
文件,其中几乎没有html,只包含Javascript

一个典型SPA的源代码

动态路线

当您“预呈现”(==静态生成)页面时,Nuxt需要它应该呈现的路由信息。对于没有简单参数的路由(例如,
about.vue
posts/index.vue
)。一旦有了动态参数,Nuxt就无法“猜测”它们

所以,是的,动态路由被“忽略”,因为Nuxt不知道如何处理它们,除非您告诉Nuxt要预渲染哪些路由

然后将生成这些路由。这并不意味着你不能访问你没有提供给Nuxt的动态路由。您仍然可以访问它们(例如:),请求将被解析(取决于您的服务器配置以及是否启用了
generate.fallback
但是您失去了SEO优势,并看到了一个微调器,因为回退文件相当于传统SPA中的
index.html


来源:

我认为它们不会被预渲染,这会让你失去SSR和预渲染的优势,但我0%肯定很好奇有知识的人会怎么说;^)@巴迪,我想你是对的。出于某种原因,SPA模式适用于动态路线-我已经得到其他人的确认。它不在文档中。。。