рдореИрдВ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЯреЗрд▓рд╡рд┐рдВрдбрд╕реНрдХреЙрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдкреЗрдЬ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░, рдореЗрд░реА рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЯреЗрд▓рд╡рд┐рдВрдбрд╕реНрдХреЗрдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдпрд╛ рдФрд░ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рд╢реИрд▓реА рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдпрд╣ рддрдм рднреА рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЛ https://github.com/zeit/next.js/tree/canary/examples/with-atelwindcss рд╕реЗ рдЪрд▓рд╛рдПрдБ
рдХрд┐рд╕реА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде index.module.css
рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ
рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ index.js
рдкреГрд╖реНрда рдореЗрдВ css рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ
рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛, рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдареАрдХ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХреЗред рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ 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 рдХреЗ рд╕рд╛рде рджреЗрд╡ рдореЗрдВ рдЪрдВрдЪрд▓рддрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪрдВрдЪрд▓рддрд╛ рдирд╣реАрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ
рдПрдХ рдХрд╕реНрдЯрдо "
_document.js
" рдмрдирд╛рдПрдВ рдФрд░ Html рдШрдЯрдХ рдореЗрдВ "no-fouc
" рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВрдПрдХ рдХрд╕реНрдЯрдо рдмрдирд╛рдПрдБ "
_app.js
" рдФрд░ "рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝рдиреЗcomponentDidMount
"рдЗрд╕ рд╢реИрд▓реА рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: