JavaScript 和 JSX 有什么区别?

IT技术 reactjs
2021-04-07 02:20:00

我对 React 很陌生,我发现大多数教程都谈到了 JSX,我没有学习过任何 JSX 语法,但我想知道 React 中 JavaScript 和 JSX 之间的主要用法区别是否仅在于类似 HTML 的语法?或者还有什么需要注意的?

6个回答

JS 是标准的 javascript,JSX 是一种类似于 HTML 的语法,你可以将它与 React 一起使用(理论上)使创建 React 组件变得更容易和更直观。正如文档所说,唯一的目的是让创建 React 组件变得更容易……除此之外别无他物。如果没有 JSX,使用 JS 语法创建大型、嵌套的 HTML 文档将是一个很大的麻烦;JSX 只是让这个过程更容易。

谢谢,所以即使我放了 <script type="text/jsx"> 只有 html-ish 部分属于 JSX,除此之外,浏览器仍然将其视为 JS?
2021-06-13 02:20:00
你永远不会那样做JSX 是一种转译语言,由 React 预处理器解释。它将type="text/javascript"像您对任何其他 javascript 代码一样进行标识
2021-06-15 02:20:00

默认情况下,每个 JSX 语法都会变成 JS 函数调用,即更改为 Javascript。

JSX 有助于编写更简单、更清晰的代码。

例子:

JSX代码:

const App = () => {
    return <div>Hello world!</div>
}

等效的 JS 代码:

const App = () => {
  return React.createElement("div", null, "Hello world!");
};

你可以看看Babel 是一个 JavaScript 编译器。, 在预设选项中选择 react 以查看每行的实际结果。

使用 JSX 编译器,您可以将 JSX 表达式转换为对React.createElement. 这是一种更方便的方式来实现以前使用内联 HTML 文件作为SCRIPT标签实现的功能,事实上,还有其他未绑定到 React 的 JSX 编译器。

为了给您一个清晰的示例,请尝试查看以下 JSX 代码,因为它是通过Babel编译为 JS 的

import React from 'react';

var Foo = React.createClass({
  render() {
    return (
      <div>
        <p>
          Ad postea vocent equidem.
        </p>
      </div>
    );
  }
});
谢谢,所以基本上最终目标是将所有不在 JS 语法中的东西都变成 JS 语法,没有 JSX 解释器。对?
2021-05-30 02:20:00

JavaScript就像任何普通的编程语言一样,没有任何额外的库或框架。它也可以称为纯/普通 JavaScript。

在另一方面,JSX语法糖在JavaScript中,一个语法糖是旨在使事情变得更容易阅读或表达一种编程语言中的语法。JSX 主要用于 JavaScript 以及库/框架支持,如ReactJSReactNative

JSX 示例

使用JSX编写的组件

const MyComponent = () => { 
  return <div> 
    <p>This is not HTML...!</p> 
    <p>Wait...Is this JavaScript?</p> 
    <p>No, What the hell is this?</p> 
    <p>This is JSX.</p> 
  </div> 
} 

如果我们不想使用JXS,那么上面代码片段的相应代码将如下所示。

const MyComponent = () => { 
  return React.createElement("div", null, React.createElement("p", null, "This is not HTML...!"), React.createElement("p", null, "Wait...Is this JavaScript?"), React.createElement("p", null, "No, What the hell is this?"), React.createElement("p", null, "This is JSX.")); 
}; 

阅读:

语法糖 - 维基百科

介绍 JSX – React

JSX是 ECMAScript 的类似于 XML 的语法扩展,完全不必与 React 绑定。React 只是转译器,是将 JSX 树转换为有效 JavaScript 的引擎。还有其他转译器,如 React,也有 JSX 语法,JSXDomMercuryJSXJSX 不符合任何 XML 或 HTML 规范,或者无论如何都是 ECMAScript 的一部分,并且是在 Facebook 发明的。

JSX 背后的原因是 Facebook 希望拥有一种语法扩展,开发人员可以通过清晰简洁的规范来支持它,并希望最大限度地减少另一种“语言”。

转译器是一种类似于 babel 的工具;反应是一个图书馆
2021-06-12 02:20:00