で作業しているときに非常に混乱することがありReact
ます。
インターネットで利用できるサンプルはたくさんあり.js
ますが、reactでファイルを使用しますが、他の多くのファイルを使用してい.jsx
ます。
私は.jsx
ファイルについて読みましたが、私の理解では、ファイル内にhtmlタグを書き込むことができますjavascript
。しかし、同じことを.js
ファイルに書き込むこともできます。
したがって、これら2つの拡張の間の実際の違いは何です.js
と.jsx
?
で作業しているときに非常に混乱することがありReact
ます。
インターネットで利用できるサンプルはたくさんあり.js
ますが、reactでファイルを使用しますが、他の多くのファイルを使用してい.jsx
ます。
私は.jsx
ファイルについて読みましたが、私の理解では、ファイル内にhtmlタグを書き込むことができますjavascript
。しかし、同じことを.js
ファイルに書き込むこともできます。
したがって、これら2つの拡張の間の実際の違いは何です.js
と.jsx
?
回答:
ファイル拡張子に関しては何もありません。あなたのbundler / transpiler / whateverは、どのタイプのファイル内容が存在するかを解決します。
ただし.js
、.jsx
ファイルタイプまたはファイルタイプに何を入れるかを決定する際には、他にもいくつかの考慮事項があります。JSXは標準のJavaScriptではないので、JavaScriptが「プレーン」でないものは、それ自体の拡張機能、つまり.jsx
JSXや.ts
TypeScript などに含める必要があると主張できます。
.jsx
が必須ではない場合でも、それが何かを示すのに役立ちます
JSXタグ(<Component/>
)は明らかに標準のJavaScriptではなく<script>
、たとえば裸のタグ内に配置した場合、特別な意味はありません。したがって、それらを含むすべてのReactファイルはJSXであり、JSではありません。
慣例として、Reactコンポーネントが含まれていても、Reactアプリケーションのエントリポイントは通常、.jsxではなく.jsです。.jsxの場合もあります。その他のJSXファイルには通常、.jsx拡張子が付いています。
いずれにせよ、あいまいさがあるのは、トランスパイラーが実際にJSXである限り、あらゆる種類のファイルを喜んでムンチングするため、最終的には拡張子はそれほど問題にならないためです。
私のアドバイスは、それについて心配しないでください。
var elem = <div>Text</div>;
標準のHTML要素ではありません。それはサポートしていないappendChild
、classList
そしておそらく他のHTML機能。あなたは、HTMLをJavaScriptで直接タグたい場合には、テンプレートのリテラル(バッククォートを使用することをお勧めします`
と一緒に)、innerHtml
またはouterHtml
。
JSXタグが標準のJavaScriptではないという前述の事実に加えて、.jsx拡張子を使用する理由は、それでもEmmetがエディターで機能するためです。たとえば、ul> liなどのhtmlコードを拡張する便利なプラグイン
<ul>
<li></li>
</ul>
"emmet.includeLanguages": { "javascript": "javascriptreact" }
使用することができます。
他に言及されてJSX
いるように、標準のJavascript拡張ではありません。.js
残りのコンポーネントに基づいてアプリケーションのエントリポイントに名前を付けることをお勧めします.jsx
。残りのコンポーネントについては、を使用できます。
.JSX
すべてのコンポーネントのファイル名に使用する重要な理由があります。実際、大量のコードを含む大規模なプロジェクトでは、Reactのすべてのコンポーネントに.jsx
拡張子を設定すると、プロジェクト全体のさまざまなJavaScriptファイル(ヘルパー、ミドルウェアなど)に移動するのが簡単になります。 Reactコンポーネントであり、他のタイプのJavaScriptファイルではありません。