KDOC 524: JSXがどのようにJavaScriptに変換されるかを見る
この文書のステータス
- 作成
- 2026-01-11 貴島
- レビュー
- <署名>
概要
Reactに対して、いまいち使いこなせていない感覚を感じつづけてきた。その理由の1つは、JSXを理解してないことに見える。明らかにJavaScriptとは違うのだが、混在して存在している。よくわかっていないので、確認することにした。
まず、JavaScriptとJSXの関係すら怪しかった。JSXは拡張構文である。
JSX (JavaScript XML, formally JavaScript Syntax eXtension) は、 JavaScript に XML のような文法が拡張された言語である。
じっさいに変換してみて確認する。
cat << 'EOF' | npx -y esbuild --loader=jsx --format=cjs 2>&1 /* HTMLタグ */ <div> <h1>hello</h1> </div>; /* コンポーネント */ <Provider store={store}> <App /> </Provider>; /* JSXとJavaScriptの混在 */ const jsx1 = <Component />; /* 三項演算子 */ 1 ? <p>a</p> : <p>b</p> /* 比較演算子とJSXが区別される */ 1<0>2; EOF
/* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h1", null, "hello"));
/* @__PURE__ */ React.createElement(Provider, { store }, /* @__PURE__ */ React.createElement(App, null));
const jsx1 = /* @__PURE__ */ React.createElement(Component, null);
1 ? /* @__PURE__ */ React.createElement("p", null, "a") : /* @__PURE__ */ React.createElement("p", null, "b");
1 < 0 > 2;
cat << 'EOF' | npx -y esbuild --format=cjs 2>&1 <h1>hello</h1> EOF
✘ [ERROR] The JSX syntax extension is not currently enabled
<stdin>:1:0:
1 │ <h1>hello</h1>
╵ ^
The esbuild loader for this file is currently set to "js" but it must be set to "jsx" to be able to parse JSX syntax. You can use "--loader:.js=jsx" to do that.
1 error
関連
なし。