inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지

등록구현, 공통 컴포넌트, dayjs 라이브러리

캔버스 프로젝트에서 파일명에 대해 질문있습니다.

96

부드러운 족제비

작성한 질문수 66

0

안녕하세요 현재 캔버스 프로젝트 부분을 공부중입니다. 공부를 하면서 파일에 대해 궁금한점이 생겼는데 컴포넌트에는 뒤에 .jsx를 작성했는데 api폴더에서 canvas와 http 파일에는 .js가 붙은 이유가 뭔지 궁금합니다.

react React-Context react-router tailwindcss react-query

답변 1

1

짐코딩

React 프로젝트에서 .jsx.js 확장자의 차이는 주로 파일의 목적과 내용에 따라 구분됩니다:

전통적인 웹 개발과의 비유

전통적인 웹 개발에서는:

  1. HTML: 웹페이지의 구조와 콘텐츠를 정의합니다. 버튼, 텍스트, 이미지 등 "무엇을" 보여줄지 결정합니다.

  2. CSS: 웹페이지의 스타일과 레이아웃을 담당합니다. 색상, 크기, 배치 등 HTML 요소가 "어떻게 보일지" 결정합니다.

  3. JavaScript (.js): 웹페이지의 동작과 기능을 담당합니다. 사용자 상호작용, 데이터 처리 등 "어떻게 작동할지" 결정합니다.

React 프로젝트에서는:

.jsx 확장자

  • 주로 JSX 문법을 포함하는 React 컴포넌트 파일에 사용합니다.

  • HTML과 JavaScript가 결합된 형태로, HTML의 구조적 역할과 JavaScript의 동적 기능이 하나의 파일에 있습니다.

  • 시각적 UI 요소를 렌더링하는 컴포넌트에 적합합니다.

  • 전통적인 웹 개발의 HTML과 JavaScript의 일부 역할이 합쳐진 것과 같습니다.

.js 확장자

  • 일반 JavaScript 로직만 포함하는 파일에 주로 사용합니다.

  • API 호출, 유틸리티 함수, 상수 정의, 서비스 로직 등에 적합합니다.

  • JSX를 사용하지 않는 순수 JavaScript 파일입니다.

  • 전통적인 웹 개발의 JavaScript와 유사한 역할을 합니다.

캔버스 프로젝트의 경우

캔버스 프로젝트에서 api 폴더의 canvas.js와 http.js 파일은 다음과 같은 이유로 .js 확장자를 사용했을 것입니다:

  • 이 파일들은 UI 컴포넌트가 아닌 API 통신 로직이나 HTTP 요청을 처리하는 코드를 포함합니다.

  • JSX를 사용하지 않고 순수 JavaScript 함수나 객체만 포함합니다.

  • 서비스 로직, 데이터 페칭, API 엔드포인트 정의 등의 목적을 가진 파일입니다.

     

이 프로젝트에서는 "JSX를 포함하는 컴포넌트는 .jsx로, 순수 로직 파일은 .js로" 구분하는 컨벤션을 따르고 있는 것으로 보입니다. 이는 코드의 목적을 파일명만으로도 쉽게 파악할 수 있게 해주는 좋은 실천 방법입니다.

오타?

0

30

1

뭐하나 여쭤봐도 될까요?

0

70

1

안녕하세요 질문이 있습니다.

0

56

2

질문 : 삭제 버튼 아규먼트 (id)

0

50

1

Tailwind 버전 확인

0

63

1

align-items 정렬

0

50

2

vite 명령어로 프로젝트를 만들었습니다. (vscode)

0

79

1

31. 객체 업데이트 하기 - 10:15 질문

1

56

2

강의교안, 내용 인용해서 블로그 글 작성

1

80

2

이미지가 출력되지 않아요

1

76

2

강의와 만들어진 코드가 달라요

0

76

3

AI와 CSS 라이브러리의 궁합

0

97

1

onClick 이벤트에 함수 넘길 때

0

68

1

린캔버스 기능 구현은 왜 못하나요.... 구현하고 싶습니다...

0

101

1

notes 없음 읽기 오류

0

72

1

Object.assign 문법

0

64

1

react-router 전혀 기능 안함

0

54

1

react-router-dom@6.25.1

0

47

1

React Router 최신 스펙

0

209

1

Immer 에서 filter, map 사용

0

55

1

vite 설치에 대해 질문있습니다.

0

76

2

라이브러리 버전 일치 이슈

0

77

1

"Enter 키 발생 시 항목 추가" 부분에서 공백이 포함되면 한 줄이 더 입력됩니다

0

51

2

TotalCounter을 작성할때

0

66

2