reactjs - React 中的 .js、.tsx 和 .jsx 有什么区别?
问题描述
我遇到了这 3 种主要文件类型:
.js
.tsx
.jsx
3之间有什么区别?应该使用哪一个?哪个更常用?
解决方案
.js
是 JavaScript,简单明了
const Foo = () => {
return React.createElement("div", null, "Hello World!");
};
.ts
是TypeScript,微软向 JavaScript 添加“具体”类型的方式
const Foo: FunctionalComponent = () => {
return React.createElement("div", null, "Hello World!");
};
.jsx
是 JavaScript,但启用了JSX,这是 React 的语言扩展,允许您直接在代码中编写标记,然后将其编译为纯 JavaScript,并将 JSX 替换为直接 API 调用React.createElement
或任何目标 API
const Foo = () => {
return <div>Hello World!</div>;
};
.tsx
与jsx类似,只是它是带有 JSX 语言扩展的 TypeScript。
const Foo: FunctionalComponent = () => {
return <div>Hello World!</div>;
};
所有这些都将编译为 JavaScript 代码。另请参阅没有 JSX 的反应
请记住,仅仅因为它具有特定的扩展名,并不意味着这就是文件的实际内容(令人沮丧)。我遇到了几个项目,这些项目.js
用作包含 JSX 语法的文件的扩展,以及一些甚至包含 TypeScript 的文件。
推荐阅读
- .net - c#.net 将对象属性转换为列表
- c# - Xamarin Android 中的部分视图
- scala - Alpakka S3 从存储桶下载文件,保存到文件,并为流程的下一部分提供文件名
- r - 使用 `data.table` 的 DT[ i , j, by] 时,是否可以预先设置列类型?
- c# - MSBuild 项可以使用由目标设置的属性吗?
- r - XML->列表-> R中具有可变结构的数据框
- java - GSON java.lang.IllegalArgumentException:类 android.widget.TextView 声明了多个名为 mMinWidth 的 JSON 字段
- python-3.x - Pyspark 自定义转换链接
- javascript - 猫鼬文本搜索不返回任何结果
- cname - 一个子域可以有不同的 CNAME 记录,还是整个域必须有相同的 CNAME?