在React.js中工作时,有一些事情让我感到非常困惑。
在互联网上有很多使用.js文件的React的例子,但也有很多人使用.jsx文件。
我读过JSX文件,我的理解是它们只是让您在JavaScript中编写HTML标记。 但同样的东西也可以写在JS文件中。
那么。js和。jsx之间的实际区别是什么呢?
在React.js中工作时,有一些事情让我感到非常困惑。
在互联网上有很多使用.js文件的React的例子,但也有很多人使用.jsx文件。
我读过JSX文件,我的理解是它们只是让您在JavaScript中编写HTML标记。 但同样的东西也可以写在JS文件中。
那么。js和。jsx之间的实际区别是什么呢?
当前回答
JSX不是标准的JavaScript,根据Airbnb风格指南“eslint”可以考虑这种模式
// filename: MyComponent.js
function MyComponent() {
return <div />;
}
作为警告,如果您将文件命名为MyComponent。JSX它将通过,除非你编辑eslint规则 你可以在这里查看风格指南
其他回答
如果你使用.jsx,它将被视为一个react页面,因此它的功能将被扩展自动应用。例如,如果你在.jsx文件中使用emmet, .container,这将创建一个className而不是class的div
<div className="container"></div>
如果你在js文件中应用相同的emmet,你会得到这个:
<div class="container"></div>
JSX不是标准的JavaScript,根据Airbnb风格指南“eslint”可以考虑这种模式
// filename: MyComponent.js
function MyComponent() {
return <div />;
}
作为警告,如果您将文件命名为MyComponent。JSX它将通过,除非你编辑eslint规则 你可以在这里查看风格指南
正如其他人提到的,JSX不是一个标准的Javascript扩展。最好基于.js命名应用程序的入口点,对于其他组件,您可以使用.jsx。
我有一个重要的原因,为什么我使用. jsx作为所有组件的文件名。 实际上,在一个有大量代码的大型项目中,如果我们将所有React的组件都设置为.jsx扩展名,那么在整个项目中导航到不同的javascript文件(如helper,中间件等)时会更容易,而且你知道这是一个React组件,而不是其他类型的javascript文件。
除了上面提到的JSX标签不是标准的javascript之外,我使用.jsx扩展名的原因是Emmet仍然可以在编辑器中工作——你知道,这个有用的插件可以扩展html代码,例如ul>li
<ul>
<li></li>
</ul>
在大多数情况下,它只需要转译器/捆绑器,它可能不会被配置为与JSX文件一起工作,而是与JS一起工作!所以你被迫使用JS文件而不是JSX。
因为react只是一个javascript库,所以你在JSX和JS之间选择没有区别。它们是完全可以互换的!
在某些情况下,用户/开发人员也可能会选择JSX而不是JS,因为代码高亮显示,但大多数较新的编辑器也可以正确地查看JS文件中的react语法。