标签: dynamic-routing

React中动态与静态路由的优点

我正在阅读React路由器中的静态与动态路由,我正在努力识别后者的优势(以及为什么v4选择使用它).我可以看到列出应用程序的所有路由(静态)的优势,以及每个路由映射到的组件,允许您跟踪给定特定URL的内容.但我没有看到动态路线有任何明显的优势.

如果有的话,我只能看到缺点,因为没有明确的方法来查看URL将映射到什么状态,而无需从根应用程序元素开始并按照路径进行操作(尽管我可能会弄错).

动态路由解决了什么情况?为什么它更适合静态路由(可能特别是在React应用程序中)?

reactjs react-router react-router-v4 dynamic-routing

20
推荐指数
2
解决办法
5128
查看次数

Next.js 嵌套动态文件夹路由

更新:

  1. 由于 [category_slug]-index.js 导致此错误getServerSideProps
  2. 我尝试index.js在产品文件夹下执行此操作,它有效,这意味着它可以与 [category_slug] 配合使用getServerSideprops,对吗?

这是我的文件夹结构

pages
   |-categories
       |-[category_slug]
           |-index.js     
           |-product
               |-[product_slug].js       
Run Code Online (Sandbox Code Playgroud)

当我输入时,它会导致错误[product_slug]。显示:

错误:未在 /categories/[category_slug]/product/[product_slug] 的 getStaticPaths 中以字符串形式提供所需参数 (category_slug)

这可以在 Next.js 中执行嵌套路由文件夹吗?我找不到这方面的任何信息。我在下面展示我的代码。

pages
   |-categories
       |-[category_slug]
           |-index.js     
           |-product
               |-[product_slug].js       
Run Code Online (Sandbox Code Playgroud)

我尝试向 提供硬编码值[category_slug]。这样的话就正确了吗?我也不确定。我在文档中找不到此内容。

// [product_slug].js

export async function getStaticProps({ params: { product_slug } }) {
  const product_res = await fetch(
    `${API_URL}/products/?product_slug=${product_slug}`
  ); // question mark is query slug, to find the slug in the json
  const found = await product_res.json();

  return …
Run Code Online (Sandbox Code Playgroud)

javascript routes next.js dynamic-routing

18
推荐指数
1
解决办法
2万
查看次数

如何使用 nextjs 13 进行动态路由?

我们如何在 nextjs 13 中使用布局进行动态路由?

我在新的下一页应用程序中有一个目录,我在其中尝试进行动态路由:app/dashboard/[id].jsx,但是它不适用于仪表板布局。

我该怎么做?普通页面的工作方式是这样的app/dashboard/pages.jsx,但是我们如何做动态路由,在其中我也可以获得 id 呢?

reactjs next.js dynamic-routing

15
推荐指数
2
解决办法
3万
查看次数

NextJs 和动态路由 - 如何处理空参数场景?

我试图在不使用查询字符串的情况下检索 url 参数,例如,http://localhost:3000/test/1这是我到目前为止所拥有的:

目录结构

test
 - [pageNumber].jsx
Run Code Online (Sandbox Code Playgroud)

索引.jsx

import React from 'react';
import { useRouter } from 'next/router';

const Index = () => {
  const router = useRouter();

  return (
    <>
      <h1>Page number: {router.query.pageNumber}</h1>
    </>
  );
};

export default Index;
Run Code Online (Sandbox Code Playgroud)

它可以工作,但如果我省略 pageNumber 参数,我得到的只是 404 页面,这是我们使用查询字符串时不存在的问题。

现在的问题是:是否可以在不创建额外的 index.jsx 页面和重复代码来处理空参数场景的情况下对此进行排序?

reactjs next.js dynamic-routing

10
推荐指数
1
解决办法
4692
查看次数

在Vuejs中动态添加子路由

根据这个官方示例,我们可以在vuejs中添加嵌套/子路由.但我找不到任何关于动态添加这些子路由的方法的帮助/文档.例如,仅在访问父路线时添加子路线.

目前,Vue应用程序中的所有路由都是在我们创建路由器实例的单个位置定义的.有一个名为addRoutes的api ,但我不知道如何使用它在路由旁添加延迟加载的应用程序功能.如果有人熟悉Angular2 + Module系统,那么就可以为该模块中的功能模块定义路由,甚至可以延迟加载它们.想知道VueJs是否可以实现某些目标?

lazy-loading vue.js vue-router dynamic-routing

7
推荐指数
1
解决办法
3869
查看次数

使用 NextJS 进行动态子域路由

如何在 NextJS 中实现动态子域路由功能?

abc示例:如果用户在站点中提供用户名,xyz那么他可以访问他的站点abc.xyz.com

另外,如果用户有abc.com域,那么他可以指向abc.comabc.xyz.com 所以”,如果将来有人打开abc.com,则abc.xyz.com可以提供服务。URL 中也abc.com显示了。

我调查了 NPM 中的一些插件,例如 vhost 和通配符子域,但不确定这是解决此问题的正确方法。

虚拟主机需要对hosts本地系统中的系统进行更改,而通配符子域纯粹通过路由解决了问题。

本地系统设置我已经使用暂时有效的代码自定义了Server.js,但似乎不是可以在生产中使用的解决方案:

服务器.js

  ...
    if (pathname === "/demo.demo.com") {
          app.render(req, res, "/demo.demo.com", query);
    }
    ...
Run Code Online (Sandbox Code Playgroud)

在_app.js

static async getInitialProps(appArgument) {
   ...
    return {
      ...
      renderFrom: "demo.demo.com"
    };
  }
Run Code Online (Sandbox Code Playgroud)

在我的主机中我也demo.demo.com指出了localhost

该网站适用于我,demo.demo.com:3000但如何使用数据库和CNAME记录将其推广到生产场景中,并使用用户操作自动添加/更改 CNAME 记录。

subdomain wildcard-subdomain next.js dynamic-routing

7
推荐指数
2
解决办法
9091
查看次数

Nuxt 为所有动态路由生成带有后备文件的静态站点

我已经在整个互联网上搜索了我的问题的答案。到目前为止还没有运气。

我想要实现的目标:我有一个在通用模式下运行的 Nuxt 应用程序。它就像一个小型社交网络,用户可以在其中创建自己的个人资料并分享他们的工作。

因此,我正在使用动态路由(users/_id.vue)从 url 获取参数并从我的数据库(firebase)获取适当的数据。到目前为止,一切都很好。

我想用静态主机(Netlify 或 Zeit Now)托管它,并且我知道可以通过生成配置呈现动态路由。但这不是我想要的。对于这个特定的路线,我可以使用空 shell,然后异步 Javascript 访问 API 并用数据填充 shell。SEO 在这里并不重要,因为配置文件无论如何都在身份验证后面。

我需要的只是 Nuxt 生成一个“捕获所有”文件,然后呈现用户配置文件客户端(users/martha 或 users/johndoe)。Gridsome 通过从 _id.vue 文件中渲染 _id.html 来实现这一点。Nuxt 也有办法做同样的事情吗?

谢谢你在这里帮助我。

dynamic-routing nuxt.js

5
推荐指数
1
解决办法
3883
查看次数

Nuxtjs 动态路由在“全静态”时不接受有效负载

当我在 my 中nuxt generate运行时,我的动态创建的路由不接受它们的有效负载,它们的负载如下:target: "static"nuxt.config.js

****nuxt.config.js****
generate: {
    routes() {
      return axios
        .get(`${process.env.ROOT_URL}/businesses`)
        .then(res => {
          return res.data.map(business => {
            return {
              route: `/business/${business.id}`,
              payload: business
            };
          });
        });
     }
}

****business.vue****
async asyncData({ params, store, error, payload }) {
    if (payload) {
      console.log('GOT PAYLOAD!', payload);
      return { business: payload };
    } else {
      // other stuff
    }
})
Run Code Online (Sandbox Code Playgroud)

nuxt generate在上面的 console.log中,每个动态路由都会被命中,所以我知道它正在接收正确的负载。

nuxt generate在我的dist文件夹为每个动态路由都有一个子文件夹之后,但index.html每个动态路由内部只有几行,当我在浏览器上访问每个动态路由的页面时,不会出现特定于动态路由的内容(我的组件中的导航栏layout显示正常) )。

应用程序中的导航工作正常,因此,如果我转到不同的页面并进入我的动态路线内容页面,将会出现,所以asyncData有效,接受有效负载是麻烦。 …

javascript deployment dynamic-routing nuxt.js

5
推荐指数
0
解决办法
1409
查看次数

如何根据当前动态页面使 Next.js 链接动态化?

我正在使用 Next.js 构建 LMS。到目前为止我的项目结构是localhost/courses/1。每门课程有 7 页。仪表板、作业、测试和测验、成绩册、资源、公告和花名册。我已准备好所有组件和页面。因此,如果我手动转到localhost/courses/1/assignmentslocalhost/courses/1323/roster等,则效果很好。

我想要做的是:当我单击作业链接时,我需要转到该特定课程的作业页面 - 类似localhost/courses/1/assignments. 目前,我已将 URL 硬编码为,/courses/1/[page]因此如果我单击指派,它将转到localhost/courses/1/assignment,或者如果我单击名册,它将转到localhost/courses/1/roster

如何使该路线动态化,以便当用户单击课程内的某个选项卡时,会将他们带到该特定课程的该页面?

我抬起头next/linknext/router但我仍然做不到。有什么帮助吗?

编辑:这是我的文件夹结构:

在此输入图像描述

就像我上面说的,现在我已经使用链接将某人发送给/courses/1/assignment例如。

如果您想查看该网站,它托管在我的应用程序中。

import Image from 'next/image';
import tools from "./sidebarData";
import SideBarItem from "./SidebarItem";

function Sidebar() {
    return (
        <div className="flex mt-8 ml-20">
            <div className="">
                <ul>
                    {Object.entries(tools).map(([key, {title, url, icon}]) => (
                        <SideBarItem key={key} title={title} Icon={icon} url={url}/>
                    ))}
                </ul>

            </div>
        </div>
    )
} …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js dynamic-routing next-router

5
推荐指数
1
解决办法
9039
查看次数

下一个js动态页面路由在本地主机中工作但在生产中给出文件未找到错误

这是我的下一个 js 项目的一部分。该网站在 localhost 上完美运行,但当我将其部署在 vercel 上时,/blogs/book/chapter 页面给出文件未找到,在此处输入图像描述 500 错误。

托管页面 -网站 源代码 - GitHub

动态路由文件夹结构

页面结构

章节.js

import fs from "fs";
import path from "path";
import Head from "next/head";
import DefaultErrorPage from "next/error";
import { useRouter } from "next/router";
import matter from "gray-matter";
import { marked } from "marked";
import styles from "../../../../styles/blog/Chapter.module.css";
import { capitalise } from "../../../../components/blog/Capitalise";
import BlogPostBottom from "../../../../components/blog/BlogPostBottom";

export default function Chapter({ book, chapter, frontmatter, content }) {
    // Destructuring
    const { description …
Run Code Online (Sandbox Code Playgroud)

next.js dynamic-routing vercel

5
推荐指数
0
解决办法
1987
查看次数