Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 241124_react_cant_change_jsx_to_string_윤예진 #112

Merged
merged 3 commits into from
Dec 2, 2024

Conversation

Yejin0O0
Copy link
Contributor

No description provided.

@Yejin0O0 Yejin0O0 changed the title feat: 241124-react_cant_change_jsx_to_string_윤예진 feat: 241124_react_cant_change_jsx_to_string_윤예진 Nov 24, 2024
Copy link
Contributor

@tonyfromundefined tonyfromundefined left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전반적으로 내용 자체를 다시 작성하는편이 좋을거같아요. React에서 왜 소스 파일에 접근이 안되는지 접근하시기보다는 왜 클라이언트 환경에서 접근할 수 없는건지 집중해보시고, 제가 제안드린대로 빌드 파이프라인을 구성하는 식으로 소스를 또 다른 소스로 만들어서 import 하는걸로 솔루션을 잡아서 작성해보시죠

@@ -0,0 +1,97 @@
---
layout: post
title: React로 파일을 문자열로 변환할 수 없는 이유
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
title: React로 파일을 문자열로 변환할 수 없는 이유
title: 클라이언트 환경에서 파일을 문자열로 변환할 수 없는 이유

요게 더 맞는 타이틀인거 같습니다. React는 클라이언트 환경에서 작동하는 UI 라이브러리이고, React를 활용해서 파일을 문자열로 바꾸는건 본래 React가 만들어진 이유와 상관이 없는 내용 같아요.


### (1) 개발 환경

- 개발 중에는 Node.js 기반 도구(Vite, Webpack 등)를 사용합니다. Node.js는 파일 시스템(`fs` 모듈)을 통해 로컬 파일에 접근할 수 있으므로, 파일 작업이 가능합니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇기 때문에 빌드 환경에서 파일을 읽고 변수에 저장할 수 있어요. 전에 특강해드렸던 메타프로그래밍을 해보면 어떨까 싶네요 ㅎㅎ 저라면 빌드 파이프라인에 스크립트를 하나 만들어놓고, 실행한뒤 그걸 import 하는 식으로 구성했을거같아요.

const input = fs.readFileSync("./src/someWhere.ts", "utf-8");

const output = `
export const source = \`${myFile}\`;
`;

fs.writeFileSync("./src/__generated__/someWhere.inline.ts", output);

Comment on lines 61 to 72
### 3. **JSX와 파일 시스템 작업의 한계**

React 컴포넌트는 주로 **JSX 파일**로 작성됩니다. JSX는 HTML과 비슷해 보이지만, 실제로는 JavaScript의 확장 문법이며 브라우저가 바로 이해할 수 있는 형태가 아닙니다.

### (1) 트랜스파일링 과정

- JSX는 Babel과 같은 트랜스파일러를 통해 순수 JavaScript로 변환됩니다.
- 이 과정에서 React 컴포넌트 파일의 원본 내용은 변환되어 브라우저에서는 더 이상 원본 파일의 구조와 내용을 알 수 없습니다.

### (2) React가 처리하는 데이터의 범위

- 브라우저에서 실행되는 React는 트랜스파일링된 JavaScript만 실행하며, 컴포넌트 파일 자체를 문자열로 변환하거나 원본 파일 내용에 접근할 방법을 제공하지 않습니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JSX는 현재 주제와 무관한 내용 같아요. JSX 아니더라도 어차피 클라이언트 빌드�가 수행되면 트랜스파일된 결과만 남기 때문에 소스에 접근할 수 없거든요.

@day1companyhaewooklee day1companyhaewooklee merged commit d57826a into main Dec 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants