рдЬреЛрд░рджрд╛рд░ рд╕реНрд╡рд╛рдЧрддред
рдореИрдВ Next.js. рдореЗрдВ Bootsrtap рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдПрдХ рддреНрд╡рд░рд┐рдд Google рдиреЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдХрдИ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рджрд┐рдпрд╛, рдПрдХ рдЧрд┐рдердм рдкрд░ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА (рдПрдХ рдореЗрдВ рд╕рднреА рдФрд░ рд╕рднреА рдкреИрдХреЗрдЬ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ) рдЯреЗрдореНрдкрд▓реЗрдЯ, рдФрд░ рдереЛрдбрд╝рд╛ рдСрдл-рдбреЙрдХред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЛ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред
рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рддреЛ Next.js рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ / рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк - рдХреНрд░рд┐рдПрдЯ-рдиреЗрдХреНрд╕реНрдЯ-рдРрдк рдХрд╛ рднреА рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
Habr├й рдкрд░
рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ
рд╕реЗ рд╣реА
рдХрдИ рд▓реЗрдЦ рдереЗ ред
рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ:
sudo npm install -g create-next-app
рдЕрдЧрд▓рд╛, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:
create-next-app bs_exapmle
рд╣рдордиреЗ рд░реАрдПрд╕реНрдкреНрд░реИрдк рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд▓рдЧрд╛рдП:
cd bs_exapmle npm install --save reactstrap bootstrap
рддреЛ, рд╣рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╣реЗрдб-рдСрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рджреЗрдЧреАред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рд░реВрдкрд░реЗрдЦрд╛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдХреБрдЫ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ css-loader
zeit / next-css рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
npm install --save @zeit/next-css
рдФрд░ рдЗрд╕реЗ next.config.js рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
const withCSS = require('@zeit/next-css') module.exports = withCSS()
рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрдЪрд╛ рд╣реИ! рдкреЗрдЬ / _documents.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рд╕рдВрдХрд▓рд┐рдд рд╢реИрд▓рд┐рдпрд╛рдБ рдпрд╣рд╛рдБ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреАред
import Document, { Head, Main, NextScript } from 'next/document' export default class MyDocument extends Document { render() { return ( <html> <Head> <link rel="stylesheet" href="/_next/static/style.css" /> </Head> <body> <Main /> <NextScript /> </body> </html> ) } }
рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рд╣рдо рд░рд┐рдПрдХреНрдЯрд╕реНрдЯреНрд░реИрдк рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ bootstrap.min.css рдЖрдпрд╛рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдкреГрд╖реНрдареЛрдВ / index.js рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ
import 'bootstrap/dist/css/bootstrap.min.css'; import { Card, CardText, CardHeader, CardBody, Button } from 'reactstrap'; export default () => ( <div> <Card> <CardBody> <CardHeader>Hello Next.js!</CardHeader> <br/> <CardText>Bootstrap 4 power!</CardText> <Button color="danger">OK</Button> </CardBody> </Card> </div> ) }
рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ