-
-
Notifications
You must be signed in to change notification settings - Fork 21
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
feat: 241124_react_cant_change_jsx_to_string_윤예진 #112
Conversation
There was a problem hiding this 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로 파일을 문자열로 변환할 수 없는 이유 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
title: React로 파일을 문자열로 변환할 수 없는 이유 | |
title: 클라이언트 환경에서 파일을 문자열로 변환할 수 없는 이유 |
요게 더 맞는 타이틀인거 같습니다. React는 클라이언트 환경에서 작동하는 UI 라이브러리이고, React를 활용해서 파일을 문자열로 바꾸는건 본래 React가 만들어진 이유와 상관이 없는 내용 같아요.
|
||
### (1) 개발 환경 | ||
|
||
- 개발 중에는 Node.js 기반 도구(Vite, Webpack 등)를 사용합니다. Node.js는 파일 시스템(`fs` 모듈)을 통해 로컬 파일에 접근할 수 있으므로, 파일 작업이 가능합니다. |
There was a problem hiding this comment.
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);
### 3. **JSX와 파일 시스템 작업의 한계** | ||
|
||
React 컴포넌트는 주로 **JSX 파일**로 작성됩니다. JSX는 HTML과 비슷해 보이지만, 실제로는 JavaScript의 확장 문법이며 브라우저가 바로 이해할 수 있는 형태가 아닙니다. | ||
|
||
### (1) 트랜스파일링 과정 | ||
|
||
- JSX는 Babel과 같은 트랜스파일러를 통해 순수 JavaScript로 변환됩니다. | ||
- 이 과정에서 React 컴포넌트 파일의 원본 내용은 변환되어 브라우저에서는 더 이상 원본 파일의 구조와 내용을 알 수 없습니다. | ||
|
||
### (2) React가 처리하는 데이터의 범위 | ||
|
||
- 브라우저에서 실행되는 React는 트랜스파일링된 JavaScript만 실행하며, 컴포넌트 파일 자체를 문자열로 변환하거나 원본 파일 내용에 접근할 방법을 제공하지 않습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JSX는 현재 주제와 무관한 내용 같아요. JSX 아니더라도 어차피 클라이언트 빌드�가 수행되면 트랜스파일된 결과만 남기 때문에 소스에 접근할 수 없거든요.
No description provided.