ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1066)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (179)
      • Unreal (69)
      • Unity (99)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 프로그래머스
  • string
  • 티스토리챌린지
  • SQL
  • C++
  • 유니티
  • 포인터
  • 백준
  • 문자열
  • 함수
  • C
  • 알고리즘
  • 파이썬
  • 그래픽스
  • Unity
  • 배열
  • 언리얼
  • c#
  • 클래스
  • 오블완

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

[React] 리액트 .js vs .jsx 차이점
프로그래밍 언어/React

[React] 리액트 .js vs .jsx 차이점

2023. 7. 9. 15:11

정의

  • jsx는 JavaScript 확장 문법
  • JavaScript안에서 HTML 사용 가능
  • jsx 사용이 필수는 아니지만 추천 (리액트 공식 홈페이지 - 문서 - JSX 소개 탭)
  • 기능적인 차이는 없으나 팀 내 협의의 문제

.jsx란?

JSX는 JavaScript XML의 약자로 자바스크립트에서 XML을 추가한 확장형 문법이다. 큰 특징은 자바스크립트에서 HTML 문법을 사용할 수 있다는 점이고 주로 리액트나 다른 프론트엔드 프레임워크에서도 사용이 가능하다.

// jsx
const element = <h1>Hello, world!</h1>;

.js vs .jsx

// JS
class Hello extends React.Component {
  render() {
    return React.createElement("div", null, "Hello ", this.props.name);
  }
}

ReactDOM.render(
  React.createElement(Hello, {name: "World"}),
  document.getElementById('container')
);
// JSX
class Hello extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

질문

답변

<질문>

.js를 사용하는 많은 예시가 있지만 .jsx 또한 많이 사용되는 것 같습니다. 저는 jsx관련 문서를 읽었고 JavaScript안에 HTML을 사용할 수 있다는 점을 알게 되었습니다. 그렇다면 실질적으로 .js와 .jsx의 차이점은 어떻게 되나요?

<답변>

.js와 .jsx의 확장자로서의 차이점은 없으나 jsx가 표준 자바스크립트 문법이 아닌 만큼, Plain하지 않은 자바스크립트가 js파일에 들어가는 것에 대한 논쟁이 있을 수도 있습니다. 

공식 홈페이지

리액트 공식 홈페이지 JSX 소개 페이지

리액트 공식 홈페이지에서 JSX 관련해서는 자바스크립트 내에서 직관적으로 UI 관련 작업이 가능하고, 개발에 도움을 주는 에러 및 경고 메시지를 표시할 수 있게 해 준다고 하고 있다. 

.jsx의 특징

  • JSX에 표현식 포함
const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;

ReactDOM.render(
  element,
  document.getElementById('root')
);
  • JSX 속성 정의
const element = <a href="https://www.reactjs.org"> link </a>;
const element = <img src={user.avatarUrl}></img>;
  • JSX 태그 자식 포함
const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);
  • XSS(cross-site-scripting) 공격 방지
const title = response.potentiallyMaliciousInput;
// 이것은 안전합니다.
const element = <h1>{title}</h1>;
  • JSX 객체 표현
const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

// 단순화된 구조
const element = {
  type: 'h1',
  props: {
    className: 'greeting',
    children: 'Hello, world!'
  }
};

출처 : [React] 리액트 .js vs .jsx 차이점 :: 코딩 공부 일지 (tistory.com)

저작자표시 (새창열림)

'프로그래밍 언어 > React' 카테고리의 다른 글

[React] className  (0) 2023.08.17
[React] 리스트 List  (0) 2023.07.09
[React] 다양한 방법으로 Hello World 띄우기  (0) 2023.07.09
[React] Hello React 띄우기  (1) 2023.07.09
[React] 설치 방법  (0) 2023.07.09
    '프로그래밍 언어/React' 카테고리의 다른 글
    • [React] className
    • [React] 리스트 List
    • [React] 다양한 방법으로 Hello World 띄우기
    • [React] Hello React 띄우기
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바