Coursera 笔记

Module 01 · Introduction to React and Class ComponentsReact 与类组件简介

Introduction to JSXJSX 介绍课程:核心概念与优势

Coursera ↗

欢迎学习 JSX 简介!通过本视频,你将能够:

  • 解释 JSX 的目的
  • 描述 JSX 的语法
  • 说明 为什么需要编译 JSX
  • 总结 使用 JSX 的优势

什么是 JSX?

JSX 是 JavaScript Syntax Extension(JavaScript 语法扩展)的简称,也被称为 JavaScript XML。

  • JSX 的核心特点:
    • 结合了 JavaScript 和 HTML。
    • 语法结构 类似于 HTML,同时支持 JavaScript 表达式。
    • 使用尖括号(<>)包裹元素以指示这些元素如何显示在用户界面上。

JSX 语法

以下是一个 JSX 示例代码片段,它显示了一个标题:

const heading = <h1>This is a sample JSX code snippet</h1>;

关键点:

  • HTML-like 语法:代码看起来像 HTML。
  • JavaScript 表达式:const heading 是一个 JavaScript 变量,属于 JSX,既不是纯 HTML,也不是纯 JavaScript。
  • React 元素:使用 JSX 语法创建的元素由 React 渲染到 DOM 中。


JSX 为什么需要编译?

  • 浏览器无法直接理解 JSX。
  • Babel 编译器用于将 JSX 转换为标准 JavaScript 对象。
  • 工作流程:
    1. JSX 代码 → 编译为标准 JavaScript → JavaScript 引擎解析对象。
    2. 使用 create-react-app 命令时,编译流程会自动处理。


JSX 的优势

JSX 提供了多个显著的好处:

优势 描述
可读性强 非程序员(如 HTML 开发者)能更容易地理解和修改 JSX 代码。
错误发现更早 编译器可以在转换过程中发现难以察觉的错误,帮助开发者提早修复。
简洁优雅的代码 内联样式和模块化结构让代码更简洁,易于维护。
性能优化 在编译过程中优化代码,提升执行效率。
安全性提升 自动处理输出中的潜在安全问题(如防止嵌入恶意脚本)。

JSX 与普通 JavaScript 的对比

以下代码片段展示了使用 JSX 的 React 组件:

function App() {
    return (
        <div>
            <ul>
                <li>Item 1</li>
                <li>Item 2</li>
            </ul>
        </div>
    );
}

对比普通 JavaScript

JSX:

  • 代码清晰,接近 HTML。
  • 易于理解和维护。

普通 JavaScript:

function App() {
    return React.createElement(
        'div',
        null,
        React.createElement(
            'ul',
            null,
            React.createElement('li', null, 'Item 1'),
            React.createElement('li', null, 'Item 2')
        )
    );
}
  • 复杂冗长:普通 JavaScript 函数调用显得难以阅读和维护。
  • 逻辑不直观:嵌套结构让代码更混乱。

课程总结

在本视频中,你学习了以下内容:

  1. JSX 的定义:
  • JSX 将 HTML 元素与 JavaScript 表达式结合。
  • JSX 使用 HTML-like 语法,创建可渲染的 React 元素。
  1. JSX 编译:
  • 使用 Babel 将 JSX 转换为标准 JavaScript。
  1. JSX 的优势:
  • 提升代码可读性和可维护性。
  • 提供更早的错误检测。
  • 在性能和安全性方面表现优异。
  1. JSX 与普通 JavaScript 对比:
  • JSX 的代码更加直观、优雅。

通过本视频,你对 JSX 的作用及其在 React 开发中的价值有了深入了解,接下来你可以动手实践,感受 JSX 的强大魅力!✨