React & Node.js (4)

반응형

 

크롬 확장자 다운로드

 

 

1. 하단의 페이지로 이동

https://chrome.google.com/webstore/category/extensions?hl=ko

 

Chrome Web Store

브라우저에 새로운 기능을 추가하고 탐색 환경을 맞춤설정합니다.

chromewebstore.google.com

 

 

2

 

2. react 검색 > 클릭

 

 

3

 

3. Chrome에 추가 > 창 껐다가 키기

 

 

 

  • 사용 방법

 

F12 > >> 클릭 > Components 클릭

 

 

 

컴포넌트 생성

 

파일 추가 생성

 

 

CompoTest.js

import React from 'react'
import Components from './Components'

//구조분해 Destructuring let { name } = {name:"이름", nickname:"닉네임"}
const CompoTest = ({name,age}) => {
    // console.log("props:", props); //props로 이름이 정해져 있음
  return (
    <div>
        <h1>{name} 첫번째 컴포넌트</h1>
        <h2>{age} 컴포넌트 내용</h2>
        <Components name="크롬 이용" age="3" context="내용" />
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

Components.js

import React from 'react'

const Components = ({name, context}) => {
  return (
    <div style={{border:"2px solid black", backgroundColor:"skyblue"}}>
        이름 : <input type="text" value={name} />
        나이 : <input type="number" value="" />
        내용 : <textarea value={context}></textarea>

    </div>
  )
}

export default Components

 

결과 화면1

 

 

 

  • 응용

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <div>
      <CompoTest name="component1" age="1" name2="또 다른 이름1" age2="5" context="내용2"/> 
      <CompoTest name="component2" age="2" name2="또 다른 이름2" age2="6" context="내용3"/> 
      <CompoTest name="component3" age="3" name2="또 다른 이름3" age2="7" context="내용4"/> 
    </div>
);

 

 

CompoTest.js

import React from 'react'
import Components from './Components'

const CompoTest = ({name,age,name2,age2,context}) => {
  return (
    <div>
        <h1>{name} 첫번째 컴포넌트</h1>
        <h2>{age} 컴포넌트 내용</h2>
        <Components name={name2} age={age2} context={context} />
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

Components.js

import React from 'react'

const Components = ({name, context, age}) => {
  return (
    <div style={{border:"2px solid black", backgroundColor:"skyblue"}}>
        이름 : <input type="text" value={name} />
        나이 : <input type="number" value={age} />
        내용 : <textarea defaultValue={context}></textarea>

    </div>
  )
}

export default Components

 

결과 화면2

 

 

 

즉각 실행 함수를 이용한 for문

 

 

파일 생성 위치

 

 

CompoTest2.js

import React from 'react'

const CompoTest2 = () => {
  return (
    <div>
        <h1>테스트2</h1>
        {
            /* 직접 반복문은 못 씀
            for(let i=1; i<=10; i++) {
            }
            */

            //즉각실행 함수
            (function() {
                const name = [];
                for(let i=1; i<=10; i++) {
                    name.push(<h1>즉각 실행 함수{i}</h1>)
                }
                return name /* 배열 리턴 jsx를 포함하고 있음 */
            })()
        }
    </div>
  )
}

export default CompoTest2

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest2 from './CompoTest2';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <div>
      <CompoTest2 />
    </div>
);

 

결과 화면3

 

 

=> 위의 방식으로 할 경우 에러 발생

key 를 추가함

 

CompoTest2.js

import React from 'react'

const CompoTest2 = () => {
  return (
    <div>
        <h1>테스트2</h1>
        {
            //즉각실행 함수
            (function() {
                const name = [];
                for(let i=1; i<=10; i++) {
                    name.push(<h1 key={i}>즉각 실행 함수{i}</h1>)
                }
                return name /* 배열 리턴 jsx를 포함하고 있음 */
            })()
        }
    </div>
  )
}

export default CompoTest2

 

 

 

다른 서버를 동시에 이용한 CrossOrigin 처리

 

 

CompoTest2.js

import React from 'react'

const CompoTest2 = () => {
  return (
    <div>
        <h1>테스트2</h1>
        {
            (function() {
                /* 2개의 서버가 서로 다름에 주의, 8004, 3000 */
                fetch("http://localhost:8004/api/bds").then((response)=>{
                    response.json().then((rslt)=>{
                        console.log("체크 : ",rslt);
                    })
                })
            })()
        }
    </div>
  )
}

export default CompoTest2

 

 

과거의 코드를 이용

 

CrossOrigin 추가

 

 

 

  • 데이터 이용 : 컴포넌트 생성

Bd.js

import React from 'react'

const Bd = () => {
  return (
    <div style={{"border":"5px groove black"}}> { /* 스타일도 객체기에 중괄호를 한 번 더 해줘야함 */}
        <div>BD넘</div>
        <div>BD제목</div>
        <div>BD내용</div>
        <div>
            <img src="" alt="사진"/>
        </div>
    </div>
  )
}

export default Bd

 

 

CompoTest2.js

import React from 'react'
import Bd from './Bd'

const CompoTest2 = () => {
  return (
    <div>
        <h1>테스트2</h1>
        <Bd />
        {
            (function() {
                fetch("http://localhost:8004/api/bds").then((response)=>{
                    response.json().then((rslt)=>{
                        console.log("체크 : ",rslt);
                    })
                })
            })()
        }
    </div>
  )
}

export default CompoTest2

 

결과 화면4 : 화면이 보이는지 확인

 

 

 

=> 응용

 

Bd.js

import React from 'react'

const Bd = ({bdNum, bdTitle, bdCont, bdFurl}) => {
  return (
    <div style={{"border":"5px groove black"}}> { /* 스타일도 객체기에 중괄호를 한 번 더 해줘야함 */}
        <div>{bdNum}</div>
        <div>{bdTitle}</div>
        <div>{bdCont}</div>
        <div>
            <img src={bdFurl} alt="사진"/>
        </div>
    </div>
  )
}

export default Bd

 

 

CompoTest2.js

import React from 'react'
import Bd from './Bd'

const CompoTest2 = () => {
  return (
    <div>
        <h1>테스트2</h1>
        <Bd />
        {
            (function() {
                fetch("http://localhost:8004/api/bds").then((response)=>{
                    response.json().then((rslt)=>{
                        console.log("체크1 : ",rslt);

                        //비동기니까 여기에 처리해야 함
                        //map : 새로운 배열을 리턴
                        let rsltMap = rslt.map((bd)=>{ 
                            return <Bd bdNum={bd.bdNum} bdTitle={bd.bdTitle} 
                                        bdCont={bd.bdCont} bdFurl={bd.bdFurl}/>
                        })

                        console.log("체크2 : ", rsltMap);
                        return rsltMap
                    })
                })
            })()
        }
    </div>
  )
}

export default CompoTest2

 

결과 화면5

 

 

반응형

'React & Node.js' 카테고리의 다른 글

[React] 컴포넌트 생성  (0) 2024.07.17
[Node.js] 실행 방법 및 테스트  (0) 2024.07.12
[Node.js] Node.js 다운로드 및 설치  (0) 2024.07.12
반응형

 

React (=front-framework)

 

 

: facebook에서 만든 화면(GUI) 라이브러리

 

node 없이도 쓸 수 있지만 그러면 불편함
facebook에서 만들어준 create-react-app 명령 이용(CRA라 불림) -> 개발 환경 간단히 구축(node개발서버 포함됨)

컴포넌트 개념이 핵심 (반복되는 부분 재활용 및 필요 부분에만 집중)
자바스크립트 배열 메소드가 많이 쓰임(map, filter, reduce...)

16.n 버전부터 class 키워드 대신 function 키워드를 많이 사용 -> Hook 을 사용 가능
=> class 키워드가 아닌 function 키워드 종류로 공부하는 것을 추천

 

 

 

기억할 것

 


nvm(node version manager)
npm(node package manager)
npx(npm executor  => npn을 보다 편리하게 쓰임)

 

 

 

사용 방법

 

 

1

 

1. 폴더 생성

npx create-react-app 폴더이름

 

 

2

 

2. 코드 수정 및 변경 후 실행( npm start )

폴더로 이동 후 실행해야 함

 

 

실행 화면

 

 

=> 바로바로 실행되기에 서버를 내리지 않아도 됨

 

 

 

 

  • cmd 창에서 입력할 코드
코드
npx create-react-app 이름 폴더이름을 생성
npm start 실행

 

 

 

 

파일들 설명

 

package-lock.json

 

 

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>시작 화면</title>
  </head>
  <body>
    <div id="root"></div> <!-- 이거 하나만 있는게 관례 -->
  </body>
</html>

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <App />
);

 

 

App.js

/* JSX  XML, Syntax eXtention */
function App() {
  return (
    <div>
      <h1>테스트 내용</h1>
    </div>
  );
}

export default App;

 

 

 

설정

 

진행의 편리를 위해 설치할 것

 

 

  • install

설치 방법

 

왼쪽에 있는 아이콘 클릭 > react 검색 > install 클릭

 

 

단축키 사용할 수 있음

 

 

  • 자동완성

1

 

1. 하단에 있는 JavaScript 클릭

 

 

2

 

2. 두번째 클릭

 

 

3

 

3. java 검색 > JavaScript JSX 클릭

 

 

 

컴포넌트 생성

 

 

생성 위치

 

 

CompoTest.js

import React from 'react'

const CompoTest = () => {
  return (
    <div>
        <h1>첫번째 컴포넌트</h1>
        <h2>컴포넌트 내용</h2>
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <CompoTest />
);

 

결과 화면1

 

 

 

  • 같은 걸 두 번 출력

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    //한곳에는 태그 하나만! 두 개를 쓸 경우 하나로 묶어야 함
    <div>
      <CompoTest /> 
      <CompoTest /> 
    </div>
);

 

결과 화면2

 

 

 

파라미터 값 응용

 

 

  • 파라미터 값 넘기기

CompoTest.js

props 를 파라미터로 여기면 됨

import React from 'react'

const CompoTest = (props) => {
    console.log("props:", props); //props로 이름이 정해져 있음
  return (
    <div>
        <h1>첫번째 컴포넌트</h1>
        <h2>컴포넌트 내용</h2>
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    //한곳에는 태그 하나만! 두 개를 쓸 경우 하나로 묶어야 함
    <div>
      <CompoTest name="component" age="1"/> 
    </div>
);

 

결과 화면3

 

 

 

  • 파라미터 값 받기

CompoTest.js

import React from 'react'

const CompoTest = (props) => {
    console.log("props:", props); //props로 이름이 정해져 있음
  return (
    <div>
        <h1>{props.name} 첫번째 컴포넌트</h1>
        <h2>{props.age} 컴포넌트 내용</h2>
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <div>
      <CompoTest name="component" age="1"/> 
    </div>
);

 

결과 화면4

 

 

=> 아래와 같이 더 편하게 쓸 수 있음

import React from 'react'

//구조분해 Destructuring let { name } = {name:"이름", nickname:"닉네임"}
const CompoTest = ({name,age}) => {
  return (
    <div>
        <h1>{name} 첫번째 컴포넌트</h1>
        <h2>{age} 컴포넌트 내용</h2>
        <h3>테스트 내용</h3>
        <h4>index.js 파일로 가봄</h4>
        <h5>테스트 확인 가능</h5>
    </div>
  )
}

export default CompoTest

 

 

 

  • 다중의 컴포넌트

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
// import App from './App';

import CompoTest from './CompoTest';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    //한곳에는 태그 하나만! 두 개를 쓸 경우 하나로 묶어야 함
    <div>
      <CompoTest name="component1" age="1"/> 
      <CompoTest name="component2" age="2"/> 
      <CompoTest name="component3" age="3"/> 
    </div>
);

 

결과 화면5

 

 

반응형
반응형

 

실행 방법

 

 

1. Visual Studio Code 열기

 

 

2

 

2. File > Open Folder > 원하는 폴더에 workspace 설정

 

 

3

 

3. 파일 생성 > 코드 입력 > Ctrl + Alt + T 로 실행

console.log("내용!!");

 

 

 

+알아둘 것

더보기
1

 

1. + 버튼 클릭 > Command Prompt 클릭

 

 

2

 

2. cmd버전이 추가된 것을 확인할 수 있음 

 

 

3

 

3. cmd를 입력하여 powershell를 cmd로 변경 가능 

 

4. cls 로 TERMINAL 창 지우기

 

 

 

 

 

테스트

 

 

실행 방법 : node 파일 이름

 

 

 

test.js

console.log("내용!!");

const temp = [];
for(let i=1; i<=10; i++) {
    temp.push("숫자 " + i);
}
console.log("체크 : ", temp);

 

결과 화면1

 

 

 

create-react-app 설치

 

 

1

 

1. npx create-react-app 폴더 이름 엔터 > y 엔터

폴더 이름 적을 시 대문자가 들어가면 안 됨

 

 

2. cd 폴더 로 위치 변경

 

 

3. node server.js 로 실행

 

결과 화면2

 

 

 

폴더 생성된 것 설명

 

 

  • package-lock.json, package.json 파일 설명

package-lock.json, package.json 파일 설명

 

 

 

  • 실행 방법

실행 방법 : npm start => 실행 시 package.json의 scripts start가 실행됨

 

 

 

  • index.jsp와 index.html

 

 

 

=> 주석이 많기에 지운 최종 코드

 

 

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

 

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <App />
);

 

 

 

  • App.js

.App로 연결되어있기에 src의 App.js 확인

 

 

App.js

function App() {
  return (
    <div>
      <h1>h1 테스트 글</h1>
      <h2>1개의 컴포넌트라고 부름</h2>
    </div>
  );
}

export default App;

 

실행 전 화면

 

결과 화면3

 

 

반응형
1 2