발효홍삼
코딩하는 홍삼
발효홍삼
전체 방문자
오늘
어제
  • 분류 전체보기 (142)
    • PS (63)
      • 프로그래머스 (9)
      • 코드업 (10)
      • 백준 (43)
      • 알고스팟 (1)
    • Programming Language (11)
      • html_css (2)
      • java (0)
      • c,c++ (2)
      • vanillajs (2)
      • react (0)
      • vue.js (0)
      • angular.js (0)
      • electron (3)
      • 엄랭(Umjunsik-lang) (1)
      • F# (1)
      • Node.js (0)
      • Go (0)
    • knowledge (41)
      • algorithm (3)
      • data structure (1)
      • os (1)
      • ML (1)
      • math (31)
      • paper review (0)
      • IT-license (4)
    • Programming Guide (27)
      • React (1)
      • Electron (2)
      • CSS , SASS ( SCSS ) , Tailw.. (3)
      • Node.js (1)
      • Go (1)
      • Ruby on Rails (2)
      • R (1)
      • PHP (1)
      • Docker (1)
      • JSP (1)
      • C# (1)
      • Django (1)
      • Flask (1)
      • Dart (1)
      • Next.js (1)
      • Vue.js (1)
      • Unity (1)
      • React Native (0)
      • Flutter (3)
      • GraphQL (1)
      • MongoDB (1)
      • .NET (1)
      • RUST (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • electron
  • 정보처리기능사
  • c++
  • 기초백제
  • Python
  • js
  • LV1
  • 수학
  • JavaScript
  • 백준
  • 미분
  • 기초100제
  • 알고리즘
  • cpp
  • CSS
  • 이산수학
  • 프로그래머스
  • java
  • 정보처리기능사 필기
  • 적분
  • 구현
  • 출력
  • codeup
  • 코드업
  • 파이썬
  • nodejs
  • 자바
  • 미적분학
  • HTML
  • C

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
발효홍삼

코딩하는 홍삼

Next.js 시작하기
Programming Guide/Next.js

Next.js 시작하기

2023. 1. 6. 21:13
728x90

What is Next.js?

React에서 서버 사이드 렌더링을 간편하게 해주는 프레임워크로 서버 측에서 React 코드를 실행한다. React.js를 서버 측에서 pre-rendering하여 html을 생성하고 브라우저에게 보내주면 브라우저에서 React를 사용해 웹페이지를 완성한다.

Javascript로 모든 페이지를 구성하는 React와는 다르게, 서버사이드 렌더링을 하게 되면 검색엔진들이 HTML을 직접 검색할 수 있으므로 검색어 노출에 효율적이다.

 

직관적인 페이지 기반 라우팅 시스템을 지니고 있으며 자동적으로 코드를 분할해 로딩이 빠르다. 또한 내장 CSS 및 Sass 지원 등 모든 CSS-in-JS 라이브러리를 지원하고 Fast Refresh를 지원한다.

Quick Start

Next.js는 Node.js만 있으면 모든 OS에서 동일하게 작동한다. 

npx create-react-app --typescript 에 대응되는 코드는 아래와 같다.

npx create-next-app --typescript

 

 

프로젝트 폴더에 들어가 

npm run dev

를 입력하면 서버가 실행된다.

NextJS 기초 문법 

1. Pages폴더

Page에 들어있는 파일명으로 라우터가 생성된다. 만약 Pages 폴더 안에 Index라는 이름의 파일이 존재한다면, 해당 웹앱은 '/index' 라우터를 갖게 되며, 또한, NextJS를 그 파일 안에 들어있는 컴포넌트를 작동시킨다.

 

2. Link

ReactJS의 경우 react-router-dom으로부터 Link를 가져와 <a>를 대신하여 사용하지만, NextJS의 경우 next/link로부터 Link를 가져와 Link 컴포넌트 안에 <a> 태그를 작성하여 사용한다.

이 차이는 해당 컴포넌트의 속성을 지정해줄 때 큰 차이를 낳는다. React의 경우 Link 태그 안에 className 등의 속성을 지정해주지만 Next의 경우 <a> 태그 안에 clssName 등의 속성을 지정해줘야 한다.

 

3. CSS 입히기

-Styled jsx를 통해 Scope CSS 설정하기

<style jsx>라는 태그 안에 CSS 코드를 작성해주면 된다. 이렇게 작성하면 '현재 파일 내'라는 Scope에서만 CSS가 적용된

JSX 문법 상 반드시 HTML 요소가 최상위에 존재해야 하므로 부모 요소 안에 <style jsx> 태그를 넣어주어야 한다.

 

-Styled jsx를 통해 Global CSS 설정하기

<style jsx global>이라는 태그 안에 CSS코드를 작성해주면 현재 파일 내의 코드뿐만 아니라 그 하위 요소로까지 Scope가 넓어진다.

 

4. _app.js(_app.tsx) 파일

_app 파일은 pages 폴더 내의 각 페이지가 렌더링 되기 이전, Next가 먼저 확인하는 설정값들이라고 이해하면 된다. 따라서 전역 설정에 관련된 사항들은 이 곳에 모아두면 설정과 관리가 편안하다.

 

하지만 위 설명은 엄밀히 말하면 틀린 설명이다. Next.js의 로직에 따르면 각 페이지는 _app 파일을 통해 렌더링되는 것이기 때문이다. 즉 pages 폴더 내의 각 파일을 불러와서 실행시키는 상위 컴포넌트가 바로 _app 파일 내의 함수인 셈이다.

npx CNA를 통해 Next.js 앱을 만들면 _app.tsx 파일이 자동생성되는데 Component 부분은 우리가 pages 폴더 하위에 작성하여 export default 시키고 있는 각 component가 자동으로 들어가게 된다.

 

만약 전역 CSS 설정을 하고 싶다면 _app 파일에서 <style jsx>를  통해 설정하면 된다.

 

728x90
저작자표시 비영리 (새창열림)
    발효홍삼
    발효홍삼
    코딩하는 홍삼

    티스토리툴바