Next.js: [RFC] рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЬреВрди 2019  ┬╖  90рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧ

рдкреГрд╖реНрдарднреВрдорд┐

рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ (рднреА рдпреВрдЖрд░рдПрд▓ Slugs рдпрд╛ рд╕реБрдВрджрд░ / рд╕рд╛рдл рдпреВрдЖрд░рдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╣реИ рдПрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз Next.js. рдХреА

рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ L7 рдкреНрд░реЙрдХреНрд╕реА , рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ , рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рдордиреЗ

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдкреНрд░рддрд┐ рдкреГрд╖реНрда рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реЗ рдЙрдиреНрдирдд рдлреНрд░реЗрдорд╡рд░реНрдХ-рд╕реНрддрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдСрдкреНрдЯ-рдЖрдЙрдЯ рдХрд░рддреЗ рд╣реИрдВред

рд▓рдХреНрд╖реНрдп

  1. URL рд╕реНрд▓рдЧ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддреЛрд▓рди рд╕рдореНрдореЗрд▓рди, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ
  2. рдЬрдВрдЧрд▓реА рдореЗрдВ рджреЗрдЦреЗ рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВ
  3. /blog/:post рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
  4. рдЬрдм рд╕рдВрднрд╡ рд╣реЛ рддреЛ <Link /> рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
  5. рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрдЪреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдорд╛рд░реНрдЧ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
  6. рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдкреНрд░рд╕реНрддрд╛рд╡

Next.js рдирд╛рдо URL рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкреВрд░реЗ URL рдЦрдВрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЗрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  1. рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдо рдЬрд┐рд╕реЗ [] рд╕рд╛рде рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛
  2. рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧ рд╕реЗрдЧрдореЗрдВрдЯ, рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд┐рдП рдЧрдП рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реЗрдЧрдореЗрдВрдЯ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрдЧрд╛
  3. рд░реВрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА , рдХрднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╣реАрдВ
  4. рдорд╛рд░реНрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ query рдСрдмреНрдЬреЗрдХреНрдЯ ( getInitialProps рдпрд╛ router withRouter рдорд╛рдзреНрдпрдо рд╕реЗ) рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХрд┐рд╕реА рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдЯреНрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

pages/
тФЬтФАтФА [root].js
тФЬтФАтФА blog/
тФВ тФФтФАтФА [id].js
тФЬтФАтФА customers/
тФВ тФЬтФАтФА [customer]/
тФВ тФВ тФЬтФАтФА [post].js
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА profile.js
тФВ тФЬтФАтФА index.js
тФВ тФФтФАтФА new.js
тФЬтФАтФА index.js
тФФтФАтФА terms.js

Next.js рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:

;[
  { path: '/', page: '/index.js' },
  { path: '/blog/:id', page: '/blog/[id].js' },
  { path: '/customers', page: '/customers/index.js' },
  { path: '/customers/new', page: '/customers/new.js' },
  { path: '/customers/:customer', page: '/customers/[customer]/index.js' },
  {
    path: '/customers/:customer/profile',
    page: '/customers/[customer]/profile.js',
  },
  { path: '/customers/:customer/:post', page: '/customers/[customer]/[post].js' },
  { path: '/terms', page: '/terms.js' },
  { path: '/:root', page: '/[root].js' },
]

рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдпреЗ рдЙрджрд╛рд╣рд░рдг рд╕рднреА рдлрд╝рд╛рдЗрд▓ рдирд╛рдо pages/blog/[id].js рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рдорд╛рдирддреЗ рд╣реИрдВ:

<Link /> рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛

<Link href="/blog/[id]" as="/blog/how-to-use-dynamic-routes">
  <a>
    Next.js: Dynamic Routing{' '}
    <span role="img" aria-label="Party Popper">
      ЁЯОЙ
    </span>
  </a>
</Link>

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг /blog/[id].js рдкреГрд╖реНрда рдкрд░ рд╕рдВрдХреНрд░рдордг рдХрд░реЗрдЧрд╛ рдФрд░ _Router_ рдХреЛ рдирд┐рдореНрди query рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:

{
  id: 'how-to-use-dynamic-routes'
}

_Router_ рд╕реЗ рдирд╛рдорд╛рдВрдХрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдкрдврд╝рдирд╛

import { useRouter } from 'next/router'

function BlogPost() {
  const router = useRouter()
  // `blogId` will be `'how-to-use-dynamic-routes'` when rendering
  // `/blog/how-to-use-dynamic-routes`
  const blogId = router.query.id
  return <main>This is blog post {blogId}.</main>
}

export default BlogPost

рдиреЛрдЯ: рдЖрдк withRouter рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

getInitialProps рдореЗрдВ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдкрдврд╝рдирд╛

function BlogPost({ blogText }) {
  return <main>{blogText}</main>
}

BlogPost.getInitialProps = async function({ query }) {
  // `blogId` will be `'how-to-use-dynamic-routes'` when rendering
  // `/blog/how-to-use-dynamic-routes`
  const blogId = query.id

  const { text } = await fetch(
    '/api/blog/content?id=' + encodeURIComponent(blogId)
  ).then(res => res.json())

  return { blogText: text }
}

export default BlogPost

рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ

рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВред

рдЖрдк рдПрдХ рд╕реНрдЯрдм рдкреГрд╖реНрда рдмрдирд╛рдХрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрд╕реНрдХрд░рдг (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

// pages/blog/comments.js
// (the optional version of `pages/blog/[id]/comments.js`)
export { default } from './[id]/comments.js'

рдорд╛рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рдмреАрдЪ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ blog-[id].js рдирд╛рдо рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ _literally_ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ /blog-1 рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреАред рдЖрдк рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдкреЗрдЬ рдХреЛ /blog/[id].js рд░реАрд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкреВрд░реЗ URL рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдПрдХ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ blog- рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ

[] рдмрдЬрд╛рдп _insert рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде URL рд╕реНрд▓рдЧ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдкреНрд░рддреАрдХ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ ( :name ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╡реИрдз рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд╣реАрдВ рд╣реИ ред

рдкреВрд░реНрд╡ рдХрд▓рд╛ рдХрд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддреАрдХ _ , $ рдФрд░ [] ред

рд╣рдордиреЗ _ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ _ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдорд╛рд░реНрдЧ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ _app , _document , /_src , /_logs )ред
рд╣рдордиреЗ $ рднреА рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдмреИрд╢ рдореЗрдВ рдПрдХ рд╕рддрд░реНрдХ рд╣реИред

рд╡реНрдпрд╛рдкрдХ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП path-to-regexp рд▓рд╛рдн рдЙрдард╛рдПрдВ

рд░реЗрдЧреЗрдХреНрд╕ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рддреАрдХ рд╡реИрдз рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рд░реАрдЧреЗрдХреНрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИрдВред рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдЖрджреЗрд╢ рдХреЛ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рд░реЗрдЧреЗрдХреНрд╕ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо path-to-regexp рдорд╛рд░реНрдЧреЛрдВ рдХреЛ next.config.js рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреА рдЦреЛрдЬ

рдХреИрдЪ-рдСрд▓ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдХреИрдЪ-рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЕрднреА рддрдХ рдЬреЛ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ URL рдХреЗ pages/website-builder/[customerName]/%.tsx ) рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП % рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкреЛрд▓ : рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде "+1" рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

рдиреЛрдЯ : рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рджреЗрдЦреЗрдВ рдХреИрд╡рд┐рдЯреНрд╕ рдЕрдиреБрднрд╛рдЧ)ред

рд╕рднреА 90 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреЛрд▓ : рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде "+1" рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

рдиреЛрдЯ : рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рджреЗрдЦреЗрдВ рдХреИрд╡рд┐рдЯреНрд╕ рдЕрдиреБрднрд╛рдЧ)ред

рдкреЛрд▓ : рдХреИрдЪ-рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде "+1" рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред

рдиреЛрдЯ : рдХреГрдкрдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреИрдЪ-рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ! рд╣рдо рд╕рдорд╕реНрдпрд╛-рд╕реНрдерд╛рди рдХреЛ рдЕрдзрд┐рдХ рд╕рдордЭрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдЖрд░рдХреНрд╖рд┐рдд рей

Ricardo.ch рдкрд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

рдорд╛рдиреНрдп рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

  • / - рдСрдЯреЛ-рдбрд┐рдЯреЗрдХреНрдЯреЗрдб рд▓реЛрдХреЗрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрдордкреЗрдЬ
  • /:locale - рдордЬрдмреВрд░ рд▓реЛрдХреЗрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрдордкреЗрдЬ
  • /:locale/search - рдЦреЛрдЬ рдкреГрд╖реНрда
  • /:locale/article/:id - рд▓реЗрдЦ рдкреГрд╖реНрда

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЙрдкрд╕рд░реНрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдо https://www.npmjs.com/package/next-routes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рдФрд░ рдмрд╛рдд: рд▓реЗрдЦ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП, рд╣рдо рднреА рдЖрдИрдбреА рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрд▓рдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ /de/article/example-article-123 рдЬрд╣рд╛рдВ рдЖрдИрдбреА 123 рд╣реЛрдЧреАред рдпрд╣ next-routes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд░реАрдЬреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓-рд╕рд┐рд╕реНрдЯрдо API рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ValentinH рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдЧ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рд╕рдВрднрд╡ рд╣реИрдВ - рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдорд╛рд░реНрдЧ:

  • / => pages/index.js
  • /:locale => pages/$locale/index.js
  • /:locale/search => pages/$locale/search.js
  • /:locale/article/:id => pages/$locale/article/$id.js

рд╣рдо рдЖрдИрдбреА / рдбреА / рд▓реЗрдЦ / рдЙрджрд╛рд╣рд░рдг-рд▓реЗрдЦ -123 рдХреА рддрд░рд╣ рдЖрдИрдбреА рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрд▓рдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдИрдбреА 123 рд╣реЛрдЧреА

рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдКрдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдорд╛рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рдмреАрдЪ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ blog-$id.js рдирд╛рдо рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдФрд░ /blog-1 рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред рдЖрдк рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдкреБрдирд░реНрдЧрдарди /blog/$id.js рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкреВрд░реЗ URL рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдПрдХ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ blog- рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рд╣рдо рдЖрдкрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ $locale/index.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл рд╣реИ!

"рдмреАрдЪ рдореЗрдВ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╕реНрд▓рдЧ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдЕрд▓рдЧ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рд╕реНрд▓рдЧ рдХреЛ рд╕реНрдЯреНрд░реАрдк рдХрд░рдирд╛ ЁЯЩВ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдЧрд╛

рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ (ред Paridden рд╕реЗред Pariles .files / .folders) рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

pages/
тФЬтФАтФА .root.js
тФЬтФАтФА blog/
тФВ тФЬтФАтФА .id/
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА comments.js <-- optional?
тФЬтФАтФА customers/
тФВ тФЬтФАтФА .customer/
тФВ тФВ тФЬтФАтФА .post/
тФВ тФВ тФВ тФФтФАтФА index.js
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА profile.js
тФВ тФЬтФАтФА index.js
тФВ тФФтФАтФА new.js
тФЬтФАтФА index.js
тФФтФАтФА terms.js

рдпрд╛ $ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╛ рд╕рдХреЗ: D рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдПрдХ рдкрд░рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

pages/
тФЬтФАтФА $root.js
тФЬтФАтФА blog/
тФВ тФЬтФАтФА $id/
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА comments.js <-- optional?
тФЬтФАтФА customers/
тФВ тФЬтФАтФА $customer/
тФВ тФВ тФЬтФАтФА $post/
тФВ тФВ тФВ тФФтФАтФА index.js
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА profile.js
тФВ тФЬтФАтФА index.js
тФВ тФФтФАтФА new.js
тФЬтФАтФА index.js
тФФтФАтФА terms.js

рдореИрдВ рдПрдХ npm рд╕рдВрдХреБрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдРрдк рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рдЗрдирдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реЗ рдорд╛рд░реНрдЧ рд╣реИрдВ:

  • /packages/express
  • /packages/express/dependencies
  • /packages/@babel/core
  • /packages/@babel/core/dependencies

рдЗрд╕рд▓рд┐рдП рдореВрд▓ рд░реВрдк рд╕реЗ, рд╕реНрдХреЛрдк рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреЛрдк рд╣реИ рдЬрдм рдпрд╣ @ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рддреЛ /packages/express/dependencies рдФрд░ /packages/@babel/core рдЦрдВрдбреЛрдВ рдХреА рд╕рдорд╛рди рд░рд╛рд╢рд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ /dependencies express рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдпрд╣ /index @babel/core ред

рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ react-router рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛:

<Switch>
  <Route path={`/packages/`} exact component={PackagesOverview} />
  <Route path={`/packages/:name(@[^/]+/[^/]+)`} component={PackageView} />
  <Route path={`/packages/:name`} component={PackageView} />
</Switch>

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ RFC рдореЗрдВ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред

рдХреИрдЪ-рдСрд▓ рдпреВрдЬрд╝ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯреЗрдбрд▓реА рдиреЗрд╕реНрдЯреЗрдб рдбреЗрдЯрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЧрд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдЬреИрд╕реЗ рдХрд┐ рдлреЛрд▓реНрдбрд░ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕, рдЯреНрд░реАрд╡реНрдпреВрдЬ, рдЯреЗрдВрдкрд░реИрдкреНрд╕ред

рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ: рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдбреЙрд▓рд░ рдХреЗ рд╕рдВрдХреЗрдд рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреЛрд▓реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк rm $root.js рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдПрдХ рд╕рднреНрдп рд╡рд┐рдХрд▓реНрдк рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рдореЛрдЯреЗ рддреМрд░ рдкрд░: рдХрдИ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрднреА рднреА рдЙрд╕ рд╕рдВрдкреВрд░реНрдг рдЕрднрд┐рд╡реНрдпрдВрдЬрдирд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдШреЛрд╖рдгрд╛рддреНрдордХ рд░рд╛рдЙрдЯрд░ рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрдпрд╛рдкрди рдкреИрдЯрд░реНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдХреАрдорд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдХреЛрдб рдореЗрдВред рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рддрдХрдиреАрдХреА рд╕реАрдорд╛ рд╣реИред

@ValentinH рдХреА рддрд░рд╣ рд╣рдо $ рд▓реЛрдХреЗрд▓

рдХреНрдпрд╛ рд╣рдореЗрдВ /page.ts рдФрд░ /page/$locale/page.ts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпреЛрдВрдХрд┐ рд╣рдо "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рд▓реЛрдХреЗрд▓ рдпрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓реЛрдХреЗрд▓ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо $ рд▓реЛрдХреЗрд▓ рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ: / рдХрд╛рд░ / рдЦреЛрдЬ / $ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдлрд╝рд┐рд▓реНрдЯрд░ -1 / $ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдлрд╝рд┐рд▓реНрдЯрд░ -2 / $ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдлрд╝рд┐рд▓реНрдЯрд░ -3

рдЬрд╣рд╛рдВ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдлрд╝рд┐рд▓реНрдЯрд░ -1: рд░рдВрдЧ-рд▓рд╛рд▓, рд╡реИрдХрд▓реНрдкрд┐рдХ-рдлрд╝рд┐рд▓реНрдЯрд░ -2: рдмреНрд░рд╛рдВрдб-рдлрд╝реЛрд░рдб, рдЖрджрд┐ ...

рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ params рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХреБрдЫ / $ рдЖрд╡рд╢реНрдпрдХ-рдкрд░рдо / рдФрд░ / $ $ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдкрд░рдо /?

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдХрд┐ рдпрд╣ рд░реЛрдбрдореИрдк рдкрд░ рдЖ рд░рд╣рд╛ рд╣реИ!

рдореБрдЭреЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ @timdp рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░рдиреА рд╣реЛрдЧреАред рдЬрдм рдЖрдк touch $file рднреА рдирд╣реАрдВ touch \$file; vim $file рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ $ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдирд╣реАрдВ рд╣реИ)ред
рдЗрд╕реА рддрд░рд╣ рдПрдХ рд╢реЗрд▓ рдореЗрдВ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЯреИрдм рд╕рднреА рдЪрд░ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдЧрд╛, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рд▓рд╛рдПрдЧрд╛ред

рдореИрдВ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рдВрдШ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЧреЛрд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • = рдЗрд╕реЗ page is a customer =customer рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреБрдо рднреА рдЗрд╕реЗ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлреИрд▓рд╛ рд╕рдХрддреЗ рд╣реЛ, рдмрд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
  • @ рд░реВрдк рдореЗрдВ рдпрд╣ рднреА рдХреБрдЫ рд╣рдж рддрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред a customer @customer

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЖрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИрдВ)ред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ "рдкреВрд░реНрд╡ рдХрд▓рд╛" рднреА рд╣реИ рдФрд░ рдХрдИ рдЕрдиреНрдп рд░рд╛рдЙрдЯрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

pages/
тФЬтФАтФА {root}.js
тФЬтФАтФА blog/
тФВ тФФтФАтФА {id}.js
тФЬтФАтФА customers/
тФВ тФЬтФАтФА {customer}/
тФВ тФВ тФЬтФАтФА {post}.js
тФВ тФВ тФЬтФАтФА index.js
тФВ тФВ тФФтФАтФА profile.js
тФВ тФЬтФАтФА index.js
тФВ тФФтФАтФА new.js
тФЬтФАтФА index.js
тФФтФАтФА terms.js

рдпрд╣ рдорд╛рд░реНрдЧ рдЦрдВрдб рдФрд░ рдкреНрд░рддрд┐ рдЦрдВрдб рдореЗрдВ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ /product-{productId}-{productColor} ред

рдЗрддрдирд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧ Next.js рдкрд░ рдЖ рд░рд╣реЗ рд╣реИрдВ!

рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ: https://spectrum.chat/next-js/general/rfc-move-parameterized-rout-to-the-file-system~ce289c5e-ff66 -4a5b-8e49-08548adfa9c7ред рдпрд╣ рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдЬреА рддреМрд░ рдкрд░, рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдХреИрд╕реЗ Sapper [brackets] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ Nuxt рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдЧрддрд┐рд╢реАрд▓ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо-рдЖрдзрд╛рд░рд┐рдд рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд▓рдЧрддреА рд╣реИред

<Link /> рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛрдиреЛрдВ href рдФрд░ as рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рдПрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ href рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ "рдорд░реНрдЬ" рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЯреВрдЯрдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рдкреЗрд╢ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕рдореВрд╣ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╢ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ <Link /> рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ @ stephan281094 рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдЧрд▓рддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛ред

рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдПрдХ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди, рд╡рд┐рд╢рд╛рд▓ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдХрд░ рдЖрдП!

рдЬрдмрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░, рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рднреА рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреЛрдЧреНрдп рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдиреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрдЪ-рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк /category/* рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрди рд╕реНрддрд░ рдХрд╛ рд╕реНрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ category рдкреГрд╖реНрда рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреНрдпрд╛ : рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд░рд╛ рд╡реЛрдЯ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЙрд╕ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рд╢реЗрд▓ рдЪрд░ рдХреЗ рд╕рд╛рде $ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ : рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд░рд╛ рд╡реЛрдЯ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЙрд╕ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ : рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдПрдХ рдирд┐рд╖рд┐рджреНрдз рдЪрд░рд┐рддреНрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред _ рдЬрд╛рдирд╛ рдпрд╛ рддреЛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ URL рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ [brackets] рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдкреНрд░рдорд╛рдг рд╣реИред рдЕрдЧрд░ Next.js рднрд╡рд┐рд╖реНрдп рдореЗрдВ post-12345 рдЬреИрд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╢реБрд░реБрдЖрдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА:

  • рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╡рд┐рд░реЛрдз: : , * , " , < , > , |
  • рд╢реЗрд▓ рдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖: $
  • рдмреИрд╢ рдмреНрд░реЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ { , } рд╕рд╛рде рд╕рдВрдШрд░реНрд╖

рдФрд░ рдХреБрдЫ?

рдпрд╣ рдХрд╛рд░рдгреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдорд╛рд░реНрдЧ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рдХреА рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

  • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╛рдЗрдЯрдореИрдк рд╣реИ, рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреЗрд▓реЗ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
  • рд╣рдордиреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЧрдВрддрд╡реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ "рдкреГрд╖реНрда" рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдмрдЬрд╛рдп рдХреБрдЫ рдХреЗ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдореЗрдВ рдкрддрд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдирд╛рдо рдФрд░ рдкрд░рдорд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИред

рд╣рдо рдЗрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдкрдиреЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдлрд╝реЛрд▓реНрдбрд░ рднреА рдмрдирд╛рддреЗ рд╣реИрдВ:

  • рд╣рдо рд░рд┐рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлрдХреЙрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рд╣рдо рдЕрдХреНрд╕рд░ рд░реВрдЯ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдирд╛рдо рдореЙрдбреНрдпреВрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред index.js рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдРрд╕реЗ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ edit рдЬреИрд╕реЗ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рдЦрдВрдб рд╣реЛрдВрдЧреЗред
  • рд╣рдо рдкреГрд╖реНрда-рдореЙрдбреНрдпреВрд▓ рдХреЗ рднрд╛рдИ-рдмрд╣рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ-рдкреГрд╖реНрда-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рд╣-рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ Next.js рдкреГрд╖реНрдареЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░рд╛ рдкреИрдЯрд░реНрди рд╣рдорд╛рд░реЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╕реЗ рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВред

рдЙрд╕ рдЕрдВрдд рддрдХ, рдореЗрд░рд╛ рдзреНрдпрд╛рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣рдорд╛рд░реА рдореМрдЬреВрджрд╛ рдкреГрд╖реНрда рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдиреНрдирдд рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛрдиреЗ рдХрд╛ рд▓рд╛рдн рдорд┐рд▓ рд╕рдХреЗред

рдореИрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЧрдпрд╛ рд╣реВрдВ: https://gist.github.com/AndrewIngram/8d4c4ccd9bd10415a375caacade9f5ca

рдореБрдЦреНрдп рдмрд╛рдд рдЬреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓-рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ URL рд╣реИ:

/some-vanity-url/

рдЬрд╣рд╛рдБ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Next.js рдХреА рд╢рд░реНрддреЗрдВ рд╣реИрдВ, рд╣рдо рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдП, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВ, рдЬреИрд╕реЗ Product.js?id=foo&language=en ред

рдЗрд╕реА рддрд░рд╣, рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рджреЗрд╢реЛрдВ рдХреА "рд╕рд╛рдЗрдЯреЗрдВ" рдПрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЦрдВрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреЛрдк рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреИрд╕реЗ es рдпрд╛ ie , рд▓реЗрдХрд┐рди gb рд╕рд╛рдЗрдЯ рдЙрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдЙрдВрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА gb рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдПрдХ рдирд┐рд╣рд┐рдд country рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕рднреА рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЕрдиреНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╣реА 'рдкреЗрдЬ' URL рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдХрдИ рдЖрд░реЛрд╣ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдВрдбрд▓реЛрдВ (рдпрд╛рдиреА рдХрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ) рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред

рдкреВрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ _all_ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рд░реНрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдЬ рдореИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдкрд╕рдВрджреАрджрд╛ рд╣реИрдкреНрдкреА-рдкрд╛рде рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рдореИрдВ {id} рд╕реБрдЭрд╛рд╡ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдХрдИ рдкрд╛рд░рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рднреА рдмреЗрд╣рддрд░ рдмреИрдарддрд╛ рд╣реИред

рдореИрдВ file/&param.js рдЪрд░рд┐рддреНрд░ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рд╕реАрдзреЗ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдмреИрд╢ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рдореИрдВ _ рдФрд░ рд╢рд╛рдпрдж next.config.js рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реВрдБ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЕрд▓рдЧ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкрд░ рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЪрд╛рд╣рдиреЗ рд▓рдЧрд╛! тЭдя╕П

рдЧрдЬрдм рдХрд╛! ЁЯОЙЁЯОЙЁЯОЙ

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ Link рджреЛрдиреЛрдВ рдХреЛ href рдФрд░ as рдкрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл <Link to="blog/123" /> рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдХреНрд╕реНрдЯрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрдиреНрдиреЛрдВ рдХреЗ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рднреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, "/blog/$id" рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ

рддреЛ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА:

& рдмреИрд╢ рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬреЛ рдПрдХ async рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рддрд░реНрдХ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЪрд▓рддрд╛ рд╣реИред рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ: open pages/&customer рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╢реЗрд▓ рдореЗрдВ open pages/ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдХрдорд╛рдВрдб customer рдЪрд▓реЗрдВрдЧреЗред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ (рдЬреИрд╕реЗ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ /blog/$id ) рдмрдирд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рджреЛ рдЕрдиреБрдЧрд╛рдореА рдорд╛рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ (рдпрд╛рдиреА /git/compare/$hash1/$hash2 ) рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдирд╛рдо $id.js ред рдЗрд╕рдХрд╛ рдирд╛рдо blog.js рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рд╣реЛрдЧрд╛ред

рд╢рд╛рдпрдж рдПрдХ @customRoute рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди?

// pages/blog.js
import {useRouter, @customRoute} from 'next/router'

@customRoute('/blog/:id')
function BlogPost() {
  const router = useRouter()
  // `blogId` will be `'how-to-use-dynamic-routes'` when rendering
  // `/blog/how-to-use-dynamic-routes`
  const blogId = router.query.id
  return <main>This is blog post {blogId}.</main>
}

export default BlogPost

рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреИрдЪ-рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓реАрдирд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдпрд╣ рддрдм рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдкрдврд╝рд╛ рдерд╛?) рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рд╢рд╛рдпрдж рд╡реИрд╕реЗ рднреА рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЙрд╕ рд╕рдбрд╝рдХ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ рдПрдПрдордкреА рдЕрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

// /pages/blog.js
export const config = {
  amp: true,
  dynamicRoute: true // adds a [blog] property to the query object
  // dynamicRoute: /\d+/ // could even support regex if you want
};

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рди рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрд░рдПрдлрд╕реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рд╕рдорд░реНрдерди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИрдВред

рдХреГрдкрдпрд╛, рдПрдХ рдРрд╕реЗ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛ! (рдСрдиреНрд╕ рдореЗрдВ, рдХреБрдЫ рдРрд╕реЗ рдХрд┐рд░рджрд╛рд░ рд╣реИрдВ рдЬреЛ рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдПрдХ рдШрдЯрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд╕реНрддреБ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдХреБрдЫ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдирдлрд░рдд рдирд╣реАрдВ рд╣реИред

рддреБрдо рднреА рд╕рд┐рд░реНрдл рдПрдХ HOC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

function BlogPost(props) {
    return <div />
}

export default withCustomRoute(BlogPost, "/blog/:id")

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкреЗрдЬ рдкрд░ рдХреБрдЫ рд╕реНрдерд┐рд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ getInitialProps)?

// pages/blog.js
import {useRouter} from 'next/router'

function BlogPost() {
  const router = useRouter()
  // `blogId` will be `'how-to-use-dynamic-routes'` when rendering
  // `/blog/how-to-use-dynamic-routes`
  const blogId = router.query.id
  return <main>This is blog post {blogId}.</main>
}

// By default it would be as it is now
BlogPost.route = '/blog/:id';

export default BlogPost

@ dmytro-lymarenko рдЬрдм рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ /blog рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдПрдХ 404?

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рд┐рдП рд╣реЛрдЧрд╛ рдЬреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп рд╣реЛред рдПрдХ HOC рдпрд╛ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рд┐рдП рд╣реЛрдЧрд╛ рдЬреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпреЛрдЧреНрдп рд╣реЛред рдПрдХ HOC рдпрд╛ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА

рдЕрдм рддрдХ рджрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рдо рд╕рд┐рд░реНрдл рдпрд╣ рдЖрдЧреНрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рдорд╛рд░реНрдЧ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рд░рдирдЯрд╛рдЗрдо рд░реВрдЯ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реЗ рдирд╣реАрдВ рдЧрдП рдереЗ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ / рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ / рдмреНрд▓реЙрдЧ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдПрдХ 404?

@kingdaro - IMO, рд╣рд╛рдБред рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ /blog , рдФрд░ /blog/:blogId рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЙрд╕ рдкрде рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдЙрдЪрд┐рдд рд╣реИред

pages/
тФЬтФАтФА blog/
тФВ тФЬтФАтФА $id.js
тФВ тФФтФАтФА index.js

рдЕрдм рддрдХ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рдЪрд░рд┐рддреНрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреНрд╡рд░рд┐рдд рд╕рдореАрдХреНрд╖рд╛:

рдкреНрд░рдХрдЯрди рдХреЗ рдХреНрд░рдо рдореЗрдВ

рдЪрд╛рд░ | рдХрдорд┐рдпрд╛рдВ
--- ---
$ | рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдореЗрдВ рдбреЙрд▓рд░ рдХреЗ рд╕рдВрдХреЗрдд рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреЛрд▓реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
_ | рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдорд╛рд░реНрдЧ рдХрд╛ рд╕рдВрдХреЗрдд
= |
@ | рдкрд╛рд╡рд░рд╢реЗрд▓ рдореЗрдВ рд╕реНрдкреИрдЯ рдСрдкрд░реЗрдЯрд░
{...} | Bash рджреНрд╡рд╛рд░рд╛ рдЧреНрд░реБрдк рдХрдорд╛рдВрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
[...] | zsh рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреАрдврд╝реА
: | рд╡реИрдз рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд╣реАрдВ
& | bash рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬреЛ рдПрдХ async рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рддрд░реНрдХ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЪрд▓рддрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЙрд╕ рд╕рдбрд╝рдХ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ рдПрдПрдордкреА рдЕрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

// /pages/blog.js
export const config = {
  amp: true,
  dynamicRoute: true // adds a [blog] property to the query object
  // dynamicRoute: /\d+/ // could even support regex if you want
};

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рди рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрд░рдПрдлрд╕реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рд╕рдорд░реНрдерди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реА рдирдЬрд╝рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдирдХ рдорд╛рд░реНрдЧ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд┐рдВрдкрд▓ рдлрд╛рдЗрд▓-рдмреЗрд╕реНрдб рд░реВрдЯрд┐рдВрдЧ рдЙрди рдиреНрдпреВ / рдиреЗрдХреНрд╕реНрдЯ / рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╕реЗрд▓рд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╣реИ, рдпрд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдРрдк рдЕрдк рдФрд░ рд░рдирд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреИрдЯрд░реНрди рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдЙрд╕ рд╕рд╛рджрдЧреА рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдлрд╝рд╛рдЗрд▓-рдЖрдзрд╛рд░рд┐рдд рд░рдЦрдиреЗ рдХреЗ рдирд╛рдо рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИред

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ Next.js рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ (рдкреВрд░рдХ) рд░реВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдХреБрдЫ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рд╕реЛрдЪ рдкрд╕рдВрдж рд╣реИ (рдЬреИрд╕реЗ рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡) рд▓реЗрдХрд┐рди рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рдорд╣рд╛рди up рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХ рдШрдЯрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд╕реНрддреБ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдХреБрдЫ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдирдлрд░рдд рдирд╣реАрдВ рд╣реИред

рддреБрдо рднреА рд╕рд┐рд░реНрдл рдПрдХ HOC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

function BlogPost(props) {
    return <div />
}

export default withCustomRoute(BlogPost, "/blog/:id")

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рд░реВрдЯ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ
рдпрд╣ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рд╕реНрдерд╛рдиреАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдлрд╝рд╛рдЗрд▓ рдореЗрдВ) рдмрдирд╛рдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ ( route.js ) рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдореВрд▓ рд╕реЛрдЪ, рдореЗрд░реА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдерд╛ (рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рдлрд╛рдЗрд▓реЗрдВ рдЬреЛ рдЙрдирдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВ, рдЧреИрд░-рд╢рдмреНрджрд╛рд░реНрде рдлрд╝рд╛рдЗрд▓ рдирд╛рдо, рдФрд░ рдХреИрдЪ-рдСрд▓-рдкрд░рдореЗрд╕)ред

рдпрджрд┐ рдЙрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХрдбрд╝рд╛рдИ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдХрдо рднреНрд░рд╛рдордХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ URL рд╕реАрдзреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдкреИрд░рд╛рдореЗрдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдХрд▓рд┐рдд рд░реВрдЯрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реБрдВрджрд░ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕реЗ рдХреБрдЫ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@merelinguist рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ = рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдЖрдк рд╡рд╛рдкрд╕ рд▓рд┐рдВрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ : рдирд┐рд╖рд┐рджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди Microsoft Windows рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рд▓рд╛рдЗрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпрд╛ рдирдпрд╛ рдЕрдЧрд▓рд╛ @ рдХреИрдирд░реА рдПрдкреАрдЖрдИ рдлреАрдЪрд░ _also_ рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛?

{ path: '/api/:customer', page: '/api/$customer/index.js' }

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рдЕрдЧрд▓реЗ@8.1.1-canary.54 рдХреЗ рд╕рд╛рде

@remy рдпрд╣ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╕реВрдЪреА рдореЗрдВ рд╣реИ

рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
https://en.wikipedia.org/wiki/Filename#Comparison_of_filename_limitations

рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкреЗрдЬ рдкрд░ рдХреБрдЫ рд╕реНрдерд┐рд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ getInitialProps)?

// pages/blog.js
import {useRouter} from 'next/router'

function BlogPost() {
  const router = useRouter()
  // `blogId` will be `'how-to-use-dynamic-routes'` when rendering
  // `/blog/how-to-use-dynamic-routes`
  const blogId = router.query.id
  return <main>This is blog post {blogId}.</main>
}

// By default it would be as it is now
BlogPost.route = '/blog/:id';

export default BlogPost
  1. рдбреЗрд╡рд▓рдкрд░ рдЙрд╕ рдорд╛рд░реНрдЧ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
const route = `/blog/${somethingElse}`;
BlogPost.route = route; // is not allowed
  1. рдЬрдм рд╣рдо рдЗрд╕ рд╡рд░реНрддрдорд╛рди RFC рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдЬрд╣рд╛рдБ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд░реНрдг рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд╣реИ) рддреЛ рдореБрдЭреЗ рдпрд╣ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреГрд╖реНрда рдкрд░ рд╕реНрдереИрддрд┐рдХ рдорд╛рд░реНрдЧ рдЧреБрдг рдкрд╛рддреЗ рд╣реИрдВред рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдВрдЧреБрдИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╡реЗ рдЯреНрд░рд╛рдВрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ
<Trans id="msg.docs" /* id can only be static string */>
   Read the <a href="https://lingui.js.org">documentation</a>
   for more info.
 </Trans>

рдкрд╣рд▓реЗ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ - рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ @ рдкреНрд░рддреАрдХ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдордЬрдмреВрдд рдХрд╛рд░рдг _not_ рд╣реИ?

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореВрд▓реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдиреБрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рдорд┐рд▓рддреА рд╣реИ - рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдкрд░ рддреБрд░рдВрдд рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ? рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рддреЛ рдореИрдВ рдЙрдкрд╕рд░реНрдЧ query__{...} рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ред

@Remy рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдмрд╛рдж, рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрдЧрд▓реЗ рдкрд╛рд░реНрд╕ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЛ рдЦреЛрд▓реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХ (рдпрд╛ рдХрдо) рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддреГрддреАрдп-рдкрдХреНрд╖ рд░реВрдЯрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

@ scf4 рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛ рдЬреЛ рдПрдХ PoC рд╣реИ, рдЬреЛ рдХрд┐ now.json рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд░реВрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Zeit рдЯреАрдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рднреА рдорд╛рд░реНрдЧ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рд╕реНрд░реЛрдд рдЦреЛрд▓реЗрдЧреАред

Nuxt рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ _id.js рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рдБ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _app рдФрд░ _document.js рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдорд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧ рдХреЛ рднреА рджреЗрдЦрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ

рдпрд╣ рд╕реНрдереИрддрд┐рдХ рд╕рд╛рдЗрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛?

(рдпрд╣ рдХрднреА рдмреБрд░рд╛ рдордд рдорд╛рдирдирд╛)

рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ Next.js рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд░реВрдЯ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ (рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ)ред рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИред

рдпрд╛рдиреА, рдпрджрд┐ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд░реВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо-рдЖрдзрд╛рд░рд┐рдд API рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдорд╛рд░реНрдЧреЛрдВ (рдЬреИрд╕реЗ, рдЬрдЯрд┐рд▓ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП) рдХреЛ рдЬреЛрдбрд╝рдирд╛ / рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдпрд╣ рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦреА рдЬрд╛рдП рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

@ scf4 Next.js рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдЯрд┐рд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЖрдк рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрд╣ рд╣рд╛рдБ, рдХрд╛рдлреА рд╕рд╛рдл рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд░реВрдЯ рд░реВрдЯ рдлрд╛рдЗрд▓ рдЬреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╡реИрд╕реЗ рднреА рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ!

рдореИрдВрдиреЗ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд░реВрдЯрд┐рдВрдЧ рдкрд░ рдХреБрдЫ

  • [param] рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реИрдкрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
  • : рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ _sworn_ рд╕рдХрддрд╛ рд╣реИ рдореЗрд░реЗ рдкрд╛рд╕ Windows FS рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдБ рдереАрдВред
  • $ рдФрд░ {param} рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЛрд▓реЗ рдореЗрдВ рдЪрд░ рдФрд░ рдмреНрд░реЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ CLI рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • _ _could_ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ "рдирд┐рдЬреА" рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рдЖрдо рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдлрд╝рд╛рдЗрд▓реЛрдВ ( /^index\. ) рдмрдирд╛рдо рдПрдХ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ ( /^_/ ) рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдЕрдиреБрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ /pages рд╕рд╛рде рдПрдХ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

рд╕рдорд░реНрдерди рдПрдкреАрдЖрдИ рдорд╛рд░реНрдЧреЛрдВ (# 7297) рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдорд░реНрд╢ рдХреЗ рд╕рд╛рде, рдЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ /api рдФрд░ /pages рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ рдирдпрд╛ рдШрд░ рдХреЗ рддрд╣рдд /routes ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, _рдФрд░ рдпрд╣ рдПрдХ рдордЬрдмреВрдд "рд╣рд╛рд▓рд╛рдВрдХрд┐" _ рд╣реИ, Next.js рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╡рд╛рд░рдВрдЯ _incremental_ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдмрдирд╛рдо рдПрдХ "рд╣реЗ, рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рддреЛ рд╣рдо рдЗрд╕реЗ _thre_ way" рдбрд┐рдЬрд╛рдЗрди рдХрд░реЗрдВрдЧреЗред

рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ ( [example] ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП zsh рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

Filename рдЬрдирд░реЗрд╢рди рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ

рдмреНрд░реИрдХреЗрдЯ [] рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП zsh рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рд╕рд┐рд░реНрдл https://github.com/zeit/next.js/pull/7623 рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ

рд╕рд░ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рднреА рдкреЛрд╕реНрдЯ рдХреАред

рдореИрдВрдиреЗ [id] рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╕рд┐рд░реНрдл рд░рд╛рд╕реНрддреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рджрд░реНрдж рд╣реИ (рдЬреИрд╕реЗ cd \[id\]/view.js )ред рдореБрдЭреЗ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ __id (рдЬреИрд╕реЗ cd __id/view.js ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЖрдВрддрд░рд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ / рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рд╕реЗ (рдЕрд▓реНрдмрд╛рдЗрдЯ рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдЕрднреА рднреА) рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ _app.js )ред

@AaronDDM рдХреНрдпрд╛ рдЖрдк zsh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдмреИрд╢ рдореЗрдВ [ рдпрд╛ ] рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╣реЛрддрд╛ рд╣реИ zsh - рдЗрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдХрд╖реНрдЯрдкреНрд░рджред

$ mkdir [asdf]
zsh: no matches found: [asdf]
$ mkdir \[asdf\]
$ cd [asdf]
zsh: no matches found: [asdf]
$ cd \[asdf\]

рдФрд░ рдЪреВрдВрдХрд┐ zsh macOS рдХреИрдЯрд╛рд▓рд┐рдирд╛ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдмрди рдЬрд╛рдПрдЧрд╛ , рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ...

__id.js рд╕рд╣рдордд рд╣реИрдВ

рд╣рдореНрдо, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ __ рдкреНрдпрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ, рдмрд╕ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред

@merelinguist em, __tests__ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдорд╛рдорд▓реЗ рдореЗрдВ __ рдЕрд░реНрде рд╣реИред

@YUFENGWANG рд╢рд╛рдпрдж, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдореИрдВ рдПрдХ рдПрдХрд▓ рдЪрд░рд┐рддреНрд░ рдкрд╕рдВрдж рдХрд░реВрдБрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛:

  1. рд╕рдордЭрджрд╛рд░, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЬреИрд╕реЗ =
  2. next.config.js рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдЧ рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  3. рдХрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ рдЙрди рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг

рдПрдХ рд╣реА рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рдордд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рд╢реВрдиреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдФрд░ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧ рд╕рднреА рдореБрджреНрджреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░реЗрдВ

рдиреЛрдЯ рднреА = zsh рджреНрд╡рд╛рд░рд╛ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИред рдбреЙрдХреНрд╕ рд╕реЗ :

рдпрджрд┐ рдХреЛрдИ рд╢рдмреНрдж рдХрд┐рд╕реА рдЕрдирдЫреБрдП '=' рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╡рд╛рд▓реНрд╕ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╢реЗрд╖ рд╢рдмреНрдж рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрдорд╛рдВрдб рдЙрд╕ рдирд╛рдо рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╢рдмреНрдж рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░реНрдг рдкрдердирд╛рдо рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ; рдкреНрд░рддреНрдпрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП [email protected] , рдпрд╛ рдЬреИрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рдЪрд░рд┐рддреНрд░ рд╡реИрдз рд╣реИ, рддрдм рддрдХ рдЧреЛрд▓реЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рднрд╛рдЧрдиреЗ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЕрдм рддрдХ рднрд╛рдЧрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ zsh рдФрд░ bash рдореЗрдВ рдпреЗ рдХрд╛рдо:

[email protected]
example~.js
example=.js

рдКрд╣ред рдПрдХ рдкреНрд░рддреНрдпрдп рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ URL params рдЕрдиреБрдЧрд╛рдореА рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рддреЛ [email protected] blog/:id рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

compare@[email protected] compare/:a/:b рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдЧрд╣рд░реА рдиреЗрд╕реНрдЯреЗрдб рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдКрдкрд░ рдЖрдкрддреНрддрд┐ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╕рдВрдкреВрд░реНрдг рд░реВрдЯрд┐рдВрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЖрдзрд╛рд░рд┐рдд рд░рдЦреЗрдВред

рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╕реЗ рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

/blogs/_var_blog-id/index.js
/blogs/_var_blog-id.js

рдПрдХ рдЙрдкрд╕рд░реНрдЧ _var_ рдЬреЗрдПрд╕ рдЪрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХрд┐рд╕ рддрд░рд╣ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдкрд░ рд╢реЙрд░реНрдЯ, рдПрдХ рдЪрд░рд┐рддреНрд░ рд╡рд╛рд▓реА рдЪреАрдЬ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рд╣реИ?

~ рдЪрд░рд┐рддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЬреИрд╕реЗ /blogs/~id ред

рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ ~ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ POSIX-compliant рдЧреЛрд▓реЗ рдореЗрдВ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреЛрдИ рднреА рд╡рд░реНрдг рдЬреЛ [0-9a-zA-Z-._] (regex) рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЙрд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо, рд╢реЗрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдЫ рд╡рд░реНрдг рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рддреЛред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ zsh рдХреЗ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдлреИрдВрд╕реА рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рд╣рдЬ, рдкрдардиреАрдп рдФрд░ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

  • [params].js рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рд╕реИрдкрд░, рдиреБрдХреНрд╕реНрдЯ v3?)ред
  • рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЙрдкрд╕рд░реНрдЧ pages/_helper.js рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╣рдореЗрдВ рдкреЗрдЬ рдлреЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рд╕рд╣рд╛рдпрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

imho: рдпрд╣ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рд░реНрдЧ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реИрдХрдбрд╝реЛрдВ рдорд╛рд░реНрдЧ, рдкрд░рдо рдЖрджрд┐ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдорд╛рд░реНрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЧред рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╣реЛ) рдПрдХ рдмреЗрд╣рддрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ (SSR, рдЧрддрд┐, рдЖрджрд┐) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреАред

@ рдордорд╣рд▓рд╡реА рдЖрдкрдиреЗ рд╕рд┐рд░ рдкрд░ рдХреАрд▓ рдареЛрдХ рджреАред

Next.js рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реВрдЯ рдХреЙрдиреНрдлрд┐рдЧ (рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ / рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рдмреЗрджрдЦрд▓" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдЪрд╛рд╣реЗрдВ рддреЛ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рд╕рд╣рдЬ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

@mmahalwy @ scf4 FWIW,

рд░реВрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╢рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕реИрдХрдбрд╝реЛрдВ рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░реВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рдлреА рднрд╛рд░реА рдХреЛрдб рдмрдВрдбрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ (рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рдмрддрд╛ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ, рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдХрдИ рдмрд╛рд░ @timneutkens рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдФрд░ рднреА рд╣реИрдВред

рд╕рдмрд╕реЗ рд╕рд░рд▓ рдПрдХ рд╕реАрдПрдордПрд╕-рд╕рдВрдЪрд╛рд▓рд┐рдд рдмреНрд▓реЙрдЧ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЗрдЦрдХ рд╕рд╛рдЗрдЯ рдкрд░ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ URL рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреГрд╖реНрда рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХреЛрдИ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдПрдХ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдирд╛ рдФрд░ рдкреЗрдЬ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ (рдореЗрд░рд╛ рдЕрдкрдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЕрдЧрд▓рд╛ рдорд╛рд░реНрдЧ-рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдЕрдиреНрдп рдЬреЛ рдореИрдВ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВ) ред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдмрд┐рдирд╛ рд░реВрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗ рдореИрдВ рдЬрд┐рд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕реЗ рдореИрдВ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдзреНрдпрд╛рди рд╕рд┐рд░реНрдл рдлрд╛рдЗрд▓ рдХреЛ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рднреАрддрд░ рд░реВрдЯ рдХреЛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬрдиреЗ рдкрд░ рд░рд╣рд╛ рд╣реИред рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд░реВрдЯрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд░реВрдЯрд┐рдВрдЧ рдПрдХ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рд╡реНрдпрд╛рдкрд╛рд░-рд╕рдВрддреБрд▓рди рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдпрд╣ рддрдм рддрдХ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рддрдХ рдпрд╣ рд░реВрдЯрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рднреНрд░рд╛рдордХ рд╣реЛрдЧрд╛ :)

@AndrewIngram рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдорд╛ рдЕрдЧрд▓реА рд╢рдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╣реИред Nextjs рдмреЙрдХреНрд╕ рд╕реЗ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛ рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд┐рдорд╛рдЧ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЪреБрдиреМрддреА рд╣рд╛рд▓рд╛рдВрдХрд┐ рд░реВрдЯрд┐рдВрдЧ рдкрд░ рдХрдбрд╝реА рд░рд╛рдп рд╣реИ рдЬреЛ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдЬреЗрдп рдмрдирд╛рддреА рд╣реИ (рдФрд░ рдПрдХ рдмрдбрд╝реА рдХрдВрдкрдиреА рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмреНрдпрд╛рдЬ рдпрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдЦреЛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

@ рдордорд╣рд▓рд╡реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░реА рдмрд╛рдд рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рдордЭреМрддрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓-рд╕рд┐рд╕реНрдЯрдо рд░реВрдЯрд┐рдВрдЧ рд░реВрдЯрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдирд┐рд░рд╛рд╢ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░-рдирд╛рдкрд╕рдВрдж рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд░реНрдЧ рдкреНрд░рдХрдЯ рдкреНрд░рд╛рд░реВрдк рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рдФрд░ рдореИрдВ) ред

рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдпрд╛ рдЙрдиреНрдирдд рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдпрд╣ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдФрд░ / рдпрд╛ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдк рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдпрд╣ рд╕рдм рдЗрд╕ RFC рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдУрдкреА рд╕рд╣рд┐рдд рдХрд┐рд╕реА рдиреЗ рднреА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЖрдзрд╛рд░рд┐рдд рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдПрдХ рдорд┐рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ( $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрдирд░реА рд░реЗрдкреЛ рдореЗрдВ 3 рджрд┐рди рдкрд╣рд▓реЗ [param] рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА)ред

I _just_ рдиреЗ getRequestHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдирд╣реАрдВ рдЙрдард╛ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ, рдпрд╛ рдЬрд╛рдирдмреВрдЭрдХрд░ (рдпрд╛рдиреА рдХреБрдЫ getRequestHandler рд▓рд┐рдП рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ), рдХреБрдЫ рдФрд░, рдпрд╛ getRequestHandler рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (рдЬреЛ рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ ...) ?

рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдпрд╛ рдЙрдиреНрдирдд рдорд╛рд░реНрдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдпрд╣ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдФрд░ / рдпрд╛ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдк рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдпрд╣рд╛рдВ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЕрдЧрд░ рдХреЗрд╡рд▓ рдЕрдм рдЬреИрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдпрд╣ рд╕рдм рдЗрд╕ RFC рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдУрдкреА рд╕рд╣рд┐рдд рдХрд┐рд╕реА рдиреЗ рднреА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЖрдзрд╛рд░рд┐рдд рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рд╣реИред рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЖрдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдЬрд┐рдирдореЗрдВ рдореИрдВ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЪреБрдХрд╛ рд╣реВрдВ), рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдЗрди рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдореНрдореЛрд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рдЕрдЧрд▓реЗ-рдорд╛рд░реНрдЧ рдФрд░ рдореЗрд░реЗ рдЕрдкрдиреЗред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ RFC рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдСрдл-рдЯреЙрдкрд┐рдХ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рд╕рдВрднрд╡рдд: рдкреВрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЕрдиреНрдп рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ?

FWIW рд╣рдо Pinterest рдкрд░ [param] рд╢реИрд▓реА FS-рдЖрдзрд╛рд░рд┐рдд рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд▓рд╛ рдирд╣реАрдВ)ред рдпрд╣ рдЕрдм рддрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЖрд▓реЛрдЪрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рд░реЗрдкреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ [] рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ,

@chrislloyd рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдкрде / рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдХреНрдпрд╛ рдЕрдиреБрднрд╡ рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рднреА рдЬрд╝реАрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛ рдЗрди рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

[] рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ zsh рдореЗрдВ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╣рддреЗ рд╣реИрдВ) рдЖрдкрдХреЛ рдЗрди рд░рд╛рд╕реНрддреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк _know_ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ ! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЬреИрд╕реЗ /pages/id!.js рдФрд░ ? рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ /pages/posts/id?.js ред

рдЙрдкрд░реНрдпреБрдХреНрдд рдЪрд░реНрдЪрд╛рдУрдВ рдЬреИрд╕реЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдХрд┐ ! рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рдореЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ ? рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

Windows рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдФрд░ рджреЛрдиреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ? рддрдерд╛ ! рдмрд╛рд╢ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИред

API рдорд╛рд░реНрдЧ рдЕрдм рдЧрддрд┐рд╢реАрд▓ рдкреИрд░рд╛рдорд┐рдХреНрд╕ # 7629 dynamic рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ

@remy getRequestHandler рдЧрддрд┐рд╢реАрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ - рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ рдЕрд▓рдЧ рдмрдЧ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ / рдкреНрд░рдЬрдирди рдХрджрдо рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рддрд╛рдХрд┐ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВ? :рдкреНрд░рд╛рд░реНрдердирд╛ рдХрд░рдирд╛:

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ! рдЗрд╕ RFC рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ RFC рдХреЛ Next.js 9 рдореЗрдВ рд╕реНрдерд┐рд░ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдФрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдирдпрд╛ RFC рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╕рднреА рдЙрдиреНрдирдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рд╣рдо рдпрд╣рд╛рдВ рдПрдХ рдЕрдкрдбреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wagerfield picture wagerfield  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

olifante picture olifante  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

havefive picture havefive  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

flybayer picture flybayer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

YarivGilad picture YarivGilad  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ