Answers:
JSX标签(<Component/>
)显然不是标准的javascript,<script>
例如,如果将它们放在裸标签中,则没有特殊含义。因此,包含它们的所有React文件都是JSX而不是JS。
按照惯例,React应用程序的入口点通常是.js而不是.jsx,即使它包含React组件。也可以是.jsx。其他任何JSX文件通常都具有.jsx扩展名。
无论如何,存在歧义的原因是因为最终扩展名并不重要,因为编译器只要实际上是JSX,便会愉快地压缩任何类型的文件。
我的建议是:不要担心。
var elem = <div>Text</div>;
不是标准的html元素;它不支持appendChild
,classList
并且可能不支持其他html功能。如果您想直接在javascript中使用html标签,最好将模板文字(反引号`
)与innerHtml
或一起使用outerHtml
。
除了上述提到的JSX标签不是标准javascript的事实之外,我使用.jsx扩展名的原因是因为Emmet仍然可以在编辑器中工作-您知道,有用的插件可以将html代码扩展,例如ul> li到
<ul>
<li></li>
</ul>
"emmet.includeLanguages": { "javascript": "javascriptreact" }
,可以在Visual Studio Code中将Emmet用于.js文件:但是,是的,我同意JSX代码应尽可能使用.jsx扩展名。
JSX不是标准的JavaScript,根据Airbnb样式指南“ eslint”可以考虑采用这种模式
// filename: MyComponent.js
function MyComponent() {
return <div />;
}
作为警告,如果您将文件命名为MyComponent.jsx,它将通过,除非您编辑eslint规则,您可以在此处查看样式指南