ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ReactJS | 개요 및 JSX 문법
    JavaScript/React JS 2020. 2. 28. 10:39

    REACT JS

    UI를 효과적으로 구축하기 위해 사용하는 JavaScript기반 오픈 소스 라이브러리


    React 특징

    • 선언적(Declaretive): 대화형 UI 작성에 유리, 데이터가 변경되었을 때 효율적으로 렌더링 수행
    • 컨포넌트 기반(Component-Based): 캡슐화된 컴포넌트가 상태를 관리하고 UI를 효과적으로 구성
    • 한 번 배워서 어디에서나 사용하기(Learn Once, Write Anywhere): 기존의 소스코드를 불필요하게 작성하지 않고 새로운 기능 개발 가능, 재사용성이 높음
    • 프론트엔드를 객체 지향적으로 개발할 수 있도록 하는 라이브러리
    • 클라이언트 렌더링뿐만 아니라 서버 사이드 렌더링도 지원
      클라이언트 렌더링 : 필요한 데이터를 그때 그때 받아오는 것
      서버 사이드 렌더링: 데이터를 서버에 한 꺼번에 만들어놓고 렌더링하는 것

    ※ 리액트 공식 문서 : https://reactjs.org/docs/getting-started.html
    자바스크립트에 능숙한 개발자 대상이기 때문에 초보자는 읽기 어려울 수 있음


    Codepen으로 React 개발 환경 구축하기

    https://codepen.io 프론트 엔드 개발에 유용한 사이트, 회원가입 필요

    1. Settings => JS
    2. JavaScript Preprocessor : Babel
      JSX 사용을 가능하게 하기 위함
    3. Add External Scripts/Pens
    4. React, ReactDOM 추가
    5. save & close

    JSX

    자바스크립트의 확장판이라고 할 수 있음

    React에서 Element(요소, 태그)를 제공

    Babel이 JSX loader를 가지고 있기 때문에 동작 가능


    문법


    하나의 태그

    JSX에서는 여러 개의 태그가 있을 경우
    하나의 최상위 태그로 나머지 태그들을 묶어주어야 함


    React.Fragment

    DOM에 별도의 노드를 추가하지 않고 엘리먼트들을 하나로 감싸주는 태그

    • < React.Fragment >< /React.Fragment > 로 작성
    • <>빈 태그로도 작성 가능
    • Fragment에 key가 있는 경우 Fragment 를 명시적으로 선언해야 함
      key는 Fragment에 전달할 수 있는 유일한 속성
    • DOM에 추가되지 않기 때문에 실제로 HTML 코드에도 반영되지 않음
    <>
     <Show subject="MySQL"/>
     <Show subject="NodeJS"/>
     <Show subject="JAVA"/>
     <Show/>
    </>

    { }

    • JSX 문법으로, JSX는 HTML과 JS를 같이 쓰기 때문에 {}안에 JS코드를 작성
    • Element 내부와 속성에 모두 사용 가능함
    • camelCase 사용
    • ReactDOM이 {}부분을 이스케이프 처리하기 때문에
      XSS(Cross-site Scripting)와 같은 공격으로부터 안전함

    주석

    다음과 같이 중괄호 안에 JS주석과 같은 양식으로 작성

    /* 여러 줄 주석입니다 */
    // 한 줄 주석도 가능합니다
    
    {/* return() 안에서는 중괄호 주석만 사용 가능합니다 */}

    닫는 태그

    JSX에는 무조건 닫는 태그가 있어야 함

    하나의 태그만 사용하는 경우에도 다음과 같이 작성

    <태그이름/>

    ReactDOM.render(<HelloReact/>, document.getElementById('root'));
    // 에서 <HelloReact>로만 작성하면 에러 발생

     


    React JS 기본 구성


    HTML

    <div id="root"></div>

    CSS

    .blue{
      color: blue;
      font-size:50px;
    }
    
    .red{
      color: red;
    }

    ※ inline 방식으로 작성할 때는 '-'(하이픈) 대신 camelCase 사용
    ex) font-size → fontSize

    ※ 클래스 지정을 위한 예약어는 class 대신 className 사용


    JSX

    // 매개변수 student를 받아서 그 정보를 출력하는 함수
    function formatInfo(student){
      return student.name + "[" + student.id + "]";
    }
    
    // 매개변수에 들어갈 student 객체 선언
    const student = {
      id: "20153157",
      name: "My name",
      color: 'blue'
    }
    
    // html의 요소에 해당하는 element생성
    const element = (
      <h3 class={student.color}>
        {formatInfo(student)}
      </h3>
    )
    /* {}: JSX 문법
       JSX는 HTML과 JS를 같이 쓰기 때문에 {}안에 JS코드를 작성 */
    
    ReactDOM.render(element, document.getElementById('root'));
    // element 변수를 렌더링함

     


    React JS의 개요와 JSX문법, 그리고 기본 구성에 대해 간단히 알아보았습니다.

    JSX문법은 HTML과 자바스크립트를 같이 사용할 수 있도록 고안된 문법이라고 할 수 있습니다.

    그렇게 복잡한 규칙은 없기 때문에 문법에 대해서는 쉽게 익힐 수 있겠습니다.

    또한 간단한 예제나 코드를 테스트할 때는 에디터를 사용하는 것보다
    codepen과 같은 사이트를 이용하는 것이 더 편리합니다.

    'JavaScript > React JS' 카테고리의 다른 글

    ReactJS | Json-Server & Concurrently  (0) 2020.04.21
    ReactJS | Firebase로 React 프로젝트 DB 연동 및 배포  (0) 2020.04.10
    ReactJS | Proxy  (0) 2020.03.30
    ReactJS | Component Styling  (0) 2020.02.28
    ReactJS | Component 개요  (0) 2020.02.28

    댓글

Designed by Tistory.