<img src="/images/profile.jpg" alt="Your Name" />
<img src="/images/profile.jpg" alt="Your Name" />
그러나, 일반 HTML 의 img
를 사용하면 아래의 상황들을 수동으로 처리해야 합니다.
하지만, Next.js 는 Image
를 처리하기 위해 즉시 사용 할 수 있는 구성 요소를 제공 합니다.
Next.js 는 기본적으로 이미지 최적화도 지원 합니다.
Next.js는 빌드 시 이미지를 최적화하는 대신 사용자가 요청할 때 on-demand 로 이미지를 최적화합니다. 정적 사이트 생성기 및 정적 전용 솔루션과 달리 10개의 이미지를 배송하든 1천만 개의 이미지를 배송하든 빌드 시간이 증가하지 않습니다.
import Image from 'next/image';
const YourComponent = () => (
<Image
src="/images/profile.jpg" // Route of the image file
height={144} // Desired size with correct aspect ratio
width={144} // Desired size with correct aspect ratio
alt="Your Name"
/>
);
<img src = "/images/profile.jpg" alt="1" />
vs
<Image src ="/images/profile.jpg" width={144} height={144} alt="1"/>
차이점은 ??
궁극적인 목표는 CLS ( Cumulative Layout Shift ) : 누적 레이아웃 이동
컴포넌트가 없다가 생기거나, 사이즈가 바뀌거나, 컴포넌트의 변경으로 인해 Dom Tree 에있는 요소들을 다시 렌더링 되는 것을 최대한 줄이는 것
<title>
HTML 태그 와 같은 페이지의 메타데이터를 수정 하는 방법
import Head from 'next/head'
function IndexPage() {
return (
<div>
<Head>
<title>My page title</title>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
</Head>
<p>Hello world!</p>
</div>
)
}
export default IndexPage
key
를 사용하면 다음 예시와 같이 태그가 한 번만 렌더링 됩니다.import Head from 'next/head'
function IndexPage() {
return (
<div>
<Head>
<title>My page title</title>
<meta property="og:title" content="My page title" key="title" />
</Head>
<Head>
<meta property="og:title" content="My new title" key="title" />
</Head>
<p>Hello world!</p>
</div>
)
}
export default IndexPage
Next.js 는 CSS 및 Sass 가 내장 되어 있습니다.
Next.js 에 내장 되어 있습니다.
<>
<style jsx>{`
…
`}</style>
</>
<>
<div className="msg">Hello, World!</div>
// `(템플릿 문자열)으로 감싸진 사실에 유의하세요!
<style jsx>`
.msg {
font-size: 20px;
}
`</style>
</>
기본적으로 styled-jsx는 사용된 컴포넌트에만 영향을 미치며,
스타일을 전역으로 활용하기 위해서는 global 이라는 속성을 사용합니다.
<div>
<div className="msg">Hello, World!</div>
// 스타일 태그에 global 속성을 추가하면
// 다른 컴포넌트의 .msg 요소에도 스타일을 입힐 수 있습니다.
<style jsx global>`
.msg {
font-size: 20px;
}
`</style>
</div>
import css from "styled-jsx/css";
const style = css`
.top-wrap {
background-color: white;
height: 60px;
}
`;
export default function Top() {
return (
<>
<div className="top-wrap">
</div>
<style jsx>{style}</style>
</>
);
export default function Top() {
const [colorBind, setColorBind] = useState(true);
return (
<>
<div className="top-wrap">
</div>
<style jsx>{`
.top-wrap {
background-color: ${colorBind? "red": "blue"};
}
`}</style>
</>
);
Next.js 는 CSS 와 Sass 가 내장되어 있어서, .css
나 .scss
를 import 할 수 있습니다.
모듈
-> 프로그램의 기능을 독립적인 부품으로 분리한 것을 모듈이라고 한다. 일반적으로 서브루틴과 데이터 구조의 집합체로서, 그 자체로서 컴파일 가능한 단위이며, 재사용 가능하고 동시에 여러 다른 모듈의 개발에 사용될 수 있다.
출처 : 네이버
즉, 특정 기능별로 나누어지는 프로그램 덩어리 라고 생각 할 수 있습니다.
components/layout.module.css
.container {
max-width: 36rem;
padding: 0 1rem;
margin: 3rem auto 6rem;
}
components/layoust.js
import styles from './layout.module.css'
export default function Layout({ children }) {
return <div className={styles.container}>{children}</div>
}