폴더의 쓰임새

  • pages폴더 : page들을 넣는 폴더
  • public폴더 : img , font를 넣는 폴더
  • styles폴더 : css파일 넣는 폴더
  • package.json : 어떤게 설치되어있는지 설명되어있는 파일
  • README.md : 프로젝트 소개하는 곳
  • 버전잠금파일 : 어떤 버전인지 알 수 있는곳

next.js

react의 업그레이드 버전이 next.js
next.js를 사용하려면 react가 먼저 깔려있어야함.
리액트의 상위버전이라 react가 기본적으로 깔려있음.

JSX , CSS-IN-JS

  • JSX : React전용 HTML
  • CSS-IN-JS : CSS를 변수에 담아 놓고 쓰는거

기존 CSS

.title {
  width: 886px;
  height: 52px;
}

CSS-IN-JS

const Title = styled.div`
	width: 886px;
	height : 52px;
`

Title이라는 태그가 width , height라는 css속성을 가지게 된다.
CSS-IN-JS를 쓰면 코드 가독성이 좋아지고, 코드가 간단해진다.

yarn설치 ~ 파일 프로젝트 추가하기

https://newbizstart.notion.site/1-React-080c62d608cf4ecd9c0579c6c22ee9ed
여기에 설명이 다 되어 있음.

터미널 명령어

  • mv : 폴더이름 바꾸기
$ mv programmers programmers2
// programmers파일을 programmers2로 이름 변경
  • rm -rf : 폴더 삭제하기
$ rm -rf ./programmers2
// r : recursive 모든파일을 돌면서
// f : 삭제한다
  • mkdir : 폴더 만들기
$ mkdir programmers
// make directory
  • cd : 폴더이동
$ cd programmers
// programmers폴더로 이동
$ cd ..
// 상위 폴더로 이동
// change directory

깃허브에 프로젝트 파일을 올릴때 node_modules폴더가 없는상태로 업로드 되는 이유

node_modules폴더의 크기가 너무 크기 때문에 일일이 git에 다 저장하면
비효율적이기 때문에 .gitignore라는 파일에 git에 업로드할때 node_modules폴더는 올리지 말라고

#dependency
/node_modules

이렇게 세팅되어 있다.
그래서 새로운 소스코드를 클론했을때

$ yarn install

이 명령어로 yarn을 깔아줘서 node_modules파일을 새로 생성해줘야함

Container같은 여러개 감싸고 있는 태그는 높이 고정을 안하는게 낫다고 하심

만약 내가 높이 고정을 하고 , 나중에 콘텐츠를 추가할때 내가 설정한 높이보다 커지면
콘텐츠가 밖으로 삐져나오기 때문에 높이 고정을 안하는게 나음
높이 고정을 안하고 세팅하는건 나중에 배움

리액트를 배워야하는 이유

왜 Vue , Angular , React 3대장중에 React를 배워야 하는가?
그 이유는 React-Native 때문임

  • 이유 첫번째 : React-Native는 모바일 어플리케이션을 만드는 프레임워크인데
    리액트와 굉장히 흡사하다. 그래서 리액트를 잘 배워놓으면 React-Native를 배우기
    수월하기 때문에 리액트를 배워야 한다.

  • 이유 두번째 : React-Native는 android , ios 둘다 배포 가능한 크로스 플랫폼이다. 이걸로 ios, android 개발환경을 만들 수 있기 때문에 나중에 개발경쟁에서 뒤쳐지지 않는다.

리액트의 핵심 Component

Component를 설명하자면 예를 들어, 네이버 메인 화면을 생각해보면
여러가지 탭 , 검색창 등등 수없이 많은 기능들이 있는데 그 기능들 하나하나가
컴포넌트이다. 그 기능들을 한곳에 모아 놓은게 네이버 메인 화면인거고,
그래서 컴포너트는 기능을 모아놓은것이라고 생각하면 된다.

컴포넌트는 원본을 만들어놓으면 재사용이 가능하다.
원본을 활용한다고 그 안에 있는 데이터까지 다 쓰는게 아니라, ui적인 요소만 활용한다. 그래서 재사용하기 용이하다.

함수형 컴포넌트 vs 클래스형 컴포넌트

클래스형 컴포넌트

import {Component} from "react"
class New extends Component {
  render() {
    return <div>이것은 클래스형 컴포넌트 입니다</div>
  }
}
export default New

함수형 컴포넌트

import {useState} from "react"
function New() {
  return <div>이것은 함수형 컴포넌트 입니다</div>
}
export default New

함수형 컴포넌트가 훨씬 코드가 간단하다.
요즘 나오고있는 서비스들은 대부분 함수형 컴포넌트로 만들어지고 있는 추세지만,
예전에 만들어진 서비스들은 대부분 클래스형 컴포넌트이기 때문에
클래스형 컴포넌트가 불편하더라도 쓸 줄은 알고 있어야 한다.

State 쓰는 방법

state를 쓰려면

import {useState} from "react

import를 통해서 useState기능을 가져와야 한다.

const [state , setState] = useState()
  • state : 실제 변수명
  • setState : 변수를 바꿔주는 변경 함수

State를 쓴것과 안쓴것 비교

export default function HelloLetPage() {

    function zzz () {
        document.getElementById("aaa").innerText = "반갑습니다."
      	document.getElementById("bbb").innerText = "반갑습니다."
      	document.getElementById("ccc").innerText = "반갑습니다."
      	document.getElementById("ddd").innerText = "반갑습니다."
    }

    return (
        <button id="aaa" onClick={zzz}>안녕하세요</button>
      	<button id="bbb" onClick={zzz}>안녕하세요</button>
      	<button id="ccc" onClick={zzz}>안녕하세요</button>
      	<button id="ddd" onClick={zzz}>안녕하세요</button>
    )
}

state를 쓰지 않는건 저렇게 일일이 id를 줘서 변경해줘야 하는데

import { useState } from "react"
export default function HelloStatePage() {
    const [ state, setState ] = useState("안녕하세요")
    function zzz () {
        setState("반갑습니다")
    }

    return (
        <button onClick={zzz}>{state}</button>
      	<button onClick={zzz}>{state}</button>
      	<button onClick={zzz}>{state}</button>
      	<button onClick={zzz}>{state}</button>
    )
}

state를 써주면 정말 편하게 쓸 수 있다.

"바인딩한다"라는 의미

function onChangeEmail() {}

<input onChnage={onChnageEmail} />

onChangeEmail 이라는 함수를 onChnage에 연결한걸
onChange에 바인딩한다고 함

API란?

Application Programming Interface의 약자로써
응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

HTTP이란?

Hyper Text Transfer Protocol의 약자로써
인터넷상에서 정보를 주고받을 수 있는 프로토콜이다.

Front 와 Backend 간에 통신 순서도

REST-API , GRAPHQL-API

◦ REST-API (주소 형식)

import axios from "axios"
result = axios.post(https://naver.com/board1) // Create
result = axios.get(https://naver.com/board1) // Read             
result = axios.put(https://naver.com/board1) // Update
result = axios.delete(https://naver.com/board1) // Delete

REST-API 통신을 하기위해 설치해야할 통신 프로그램은 axios임.
통신하는데 4가지 방식이 있는데, 이를 CRUD(Create, Read, Update, Delete)라고 부름.

◦ GRAPHQL-API (함수 형식)

import {useMutation , useQuery , gql} from "@apollo/client"

mutation createBoard($writer:String, $title:String, $contents:String) {
        createBoard(writer: $writer,title: $title,contents: $contents) {
            message
            number
        }
    }

GRAPHQL-API 통신을 하기위해 설치해야할 통신 프로그램은 apollo

REST-API는 데이터를 전부 받아오는데,
GRAPHQL-API는 원하는 데이터만 받아 올 수 있다.

GRAPHQL-API가 요즘 나온 API이고, 원하는 데이터만 받아 올 수 있는
장점이 있다 보니 요즘 나오는 서비스들을 대부분 GRAPHQL-API로 나오는데,

예전에 만들어진 서비스들은 대부분 REST-API로 만들어져 있기 때문에,
GRAPHQL-API만 알고 있으면 안됨. REST-API도 할 줄 알아야 어느 회사를 들어가도
일하는데 지장이 없음.

Open API

오픈되어 있는 공공 API

API 설명서 & 연습도구

  • REST-API
    • 연습: PostMan(크롬 확장프로그램에 설치해야함)
    • API 설명서: Swagger
  • GRAPHQL-API
    • 연습: Playground
    • API 설명서: Playground

End Point

fetch('https://koreanjson.com/posts/1')
  .then(response => response.json())
  .then(json => console.log(json))
  .catch(error => console.log(error));

주소중에 posts가 End Point임

profile
Hello~~👋

0개의 댓글