Next.js: рдЯреЗрд▓рд╡рд┐рдВрдб + рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рджреЗрд╡ рдореЗрдВ рдЯрд┐рдордЯрд┐рдорд╛рддреА рд╣реБрдИ рд╢реИрд▓рд┐рдпрд╛рдБ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдордИ 2020  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

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

рдкреНрд░рдЬрдирди рдХрд░рдирд╛

рдЙрджрд╛рд╣рд░рдг рдХреЛ https://github.com/zeit/next.js/tree/canary/examples/with-atelwindcss рд╕реЗ рдЪрд▓рд╛рдПрдБ

рдХрд┐рд╕реА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде index.module.css рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ

рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ index.js рдкреГрд╖реНрда рдореЗрдВ css рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

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

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

May-03-2020 14-06-19

рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА

  • OS: macOS
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ) [рдЬреИрд╕реЗ рдХреНрд░реЛрдо, рд╕рдлрд╛рд░реА]
  • Next.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: v9.3.6
  • Node.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: v13.12.0
  • Tailwindcss рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: v1.4.4

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ
рдПрдХ рдХрд╕реНрдЯрдо " _document.js " рдмрдирд╛рдПрдВ рдФрд░ Html рдШрдЯрдХ рдореЗрдВ " no-fouc " рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ
рдПрдХ рдХрд╕реНрдЯрдо рдмрдирд╛рдПрдБ " _app.js " рдФрд░ "рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ componentDidMount "

const removeFouc = (foucElement) => {
      foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
    }
 removeFouc(document.documentElement)

рдЗрд╕ рд╢реИрд▓реА рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

.no-fouc {
  visibility: hidden;
 opacity: 0;
}

.fouc {
 visibility: visible;
 opacity: 1;
}

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

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ something

рд╕рдВрднрд╡рддрдГ https://github.com/zeit/next.js/issues/10268 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ

рдореИрдВрдиреЗ рдХреБрдЫ рдПрдордПрд╕ рдХреЗ рдмрд╛рдж рдШрдЯрдХреЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рджреЗ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВрдиреЗ рдХреБрдЫ рдПрдордПрд╕ рдХреЗ рдмрд╛рдж рдШрдЯрдХреЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рджреЗ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред

Https://stackoverflow.com/a/42969608/943337 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдЗрдбрдмрд╛рд░ рдХреА рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд▓реЛрдб рдкрд░ рдкреЙрдк рдЕрдк рд╣реЛ рд░рд╣реА рдереА, рдЕрдм рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

https://github.com/vercel/next-plugins/issues/455#issuecomment -489452379

import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
    return { ...initialProps };
  }

  render() {
    return (
      <Html lang="de">
        <Head>
        </Head>
        <body>
          <Main />
          <NextScript />
          {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
          <script> </script>
        </body>
      </Html>
    );
  }
}

export default MyDocument;

рдореИрдВрдиреЗ рдХреБрдЫ рдПрдордПрд╕ рдХреЗ рдмрд╛рдж рдШрдЯрдХреЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рджреЗ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред

Https://stackoverflow.com/a/42969608/943337 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдЗрдбрдмрд╛рд░ рдХреА рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд▓реЛрдб рдкрд░ рдкреЙрдк рдЕрдк рд╣реЛ рд░рд╣реА рдереА, рдЕрдм рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
    return { ...initialProps };
  }

  render() {
    return (
      <Html lang="de">
        <Head>
        </Head>
        <body>
          <Main />
          <NextScript />
          {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
          <script> </script>
        </body>
      </Html>
    );
  }
}

export default MyDocument;

рдзрдиреНрдпрд╡рд╛рдж @ Adrianjs42 рдХреНрд░реЛрдо рдореЗрдВ рд░реЛрдХреЗ рдЧрдП рд╕рд╛рдЗрдб рдмрд╛рд░ рдкреЙрдкрд┐рдВрдЧред

рд╕рдВрдмрдВрдзрд┐рдд рднреА
https://github.com/vercel/next.js/issues/13058

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ
рдПрдХ рдХрд╕реНрдЯрдо " _document.js " рдмрдирд╛рдПрдВ рдФрд░ Html рдШрдЯрдХ рдореЗрдВ " no-fouc " рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ
рдПрдХ рдХрд╕реНрдЯрдо рдмрдирд╛рдПрдБ " _app.js " рдФрд░ "рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ componentDidMount "

const removeFouc = (foucElement) => {
      foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
    }
 removeFouc(document.documentElement)

рдЗрд╕ рд╢реИрд▓реА рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

.no-fouc {
  visibility: hidden;
 opacity: 0;
}

.fouc {
 visibility: visible;
 opacity: 1;
}

рдпрд╣ next@^9.4.5-canary.15 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП! рдХреГрдкрдпрд╛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред

@ рдЯрд┐рдорд░ , рдореИрдВрдиреЗ next@^9.4.5-canary.18 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рд╣реИрдВред рдЕрдм рд╕реАрдПрд╕рдПрд╕ рдлрд╝реНрд▓рд┐рдХрд░рд┐рдВрдЧ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрднреА рднреА рдмрдЧ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ + рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг Heres: https://cluster-11-lwj6nmcgy.vercel.app/ ред

@ Prottoy2938 рдпрд╣рд╛рдВ рднреАред рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА https://github.com/vercel/next.js/issues/13058#issuecomment -654165987

@ рдЯрд┐рдорд░ , рдореИрдВрдиреЗ next@^9.4.5-canary.18 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рд╣реИрдВред рдЕрдм рд╕реАрдПрд╕рдПрд╕ рдлрд╝реНрд▓рд┐рдХрд░рд┐рдВрдЧ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрднреА рднреА рдмрдЧ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ + рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг Heres: рдХреНрд▓рд╕реНрдЯрд░-11-lwj6nmcgy.vercel.app ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ css рдореЙрдбреНрдпреВрд▓ / рдЯреЗрд▓рд╡рд┐рдВрдб рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХреЗ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://github.com/vercel/next.js/issues/7322#issuitomment -653858948

@ рдХреИрд╕реНрдкрд░рд▓ , рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рд╕реЗ рдЗрд╕

V9.4.5-canary.28 рдХреЗ рд╕рд╛рде рджреЗрд╡ рдореЗрдВ рдЪрдВрдЪрд▓рддрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪрдВрдЪрд▓рддрд╛ рдирд╣реАрдВред

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

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

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

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

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

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

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