JSX、TSX 整体理解

这篇具有很好参考价值的文章主要介绍了JSX、TSX 整体理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么?

JS

JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

https://www.runoob.com/js/js-intro.html

JSX

1. 什么是 JSX

下面我们看一段代码:

class HelloMessage extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

JSX 是一种 JavaScript 的语法扩展,运用于 React 架构中,可以让你在 JavaScript 文件中书写类似 HTML 的标签。再通过翻译器转换到纯 JavaScript 后由浏览器执行,在实际开发中,JSX 在产品打包阶段都已经编译成纯 Javascript,不会带来任何副作用,反而会让代码更加直观并易于维护。

JSX 允许你在 JavaScript 中编写类似 HTML 的标签,从而使渲染的逻辑和内容可以写在一起。有时候,你可能想要在标签中添加一些 JavaScript 逻辑或者引用动态的属性。这种情况下,你可以在 JSX 的大括号内来编写 JavaScript。

元素是构成 React 应用的最小单位,JSX 就是用来声明 React 当中的元素,React 使用 JSX 来描述用户界面。

可以通过以下两个方面了解 JSX:

  • 扩展混合:JSX 是一种 JS 扩展的表达式,混合使用 Javascript 和类 html 来编写代码。
  • 混合支持:支持样式、逻辑表达式和事件的统一混合实现。

2. JSX 编译之 Babel 编译器

JSX 编译过程由 Babel 编译器实现。所谓的 JSX 其实就是 Javascript 对象加 XML,所以使用 React 和 JSX 的时候一定要经过编译的过程:Bable 将 JSX 编译成 JavaScript 对象,然后通过 ReactDom.render() 构造 DOM 元素保持随时页面更新。

// JSX 代码
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<div>Babel 编译器</div>);

// JSX 编译后
const root = ReactDOM.createRoot(document.getElementById("root"))
root.render(React.createElement("div",{id: "babel", className: "babel"}, "Babel 编译器1"))

3. 为什么使用 JSX?

React 认为渲染逻辑本质上与其他 UI 逻辑内在耦合,比如,在 UI 中需要绑定处理事件、在某些时刻状态发生变化时需要通知到 UI,以及需要在 UI 中展示准备好的数据。

React 并没有采用将标记与逻辑分离到不同文件这种人为的分离方式,而是通过将二者共同存放在称之为“组件”的松散耦合单元之中,来实现关注点分离。我们将在后面章节中深入学习组件。如果你还没有适应在 JS 中使用标记语言,这个会议讨论应该可以说服你。

React 不强制要求使用 JSX,但是大多数人发现,在 JavaScript 代码中将 JSX 和 UI 放在一起时,会在视觉上有辅助作用。它还可以使 React 显示更多有用的错误和警告消息。

4. JSX 官方文档

官网:https://zh-hans.react.dev/learn/writing-markup-with-jsx

TypeScript

TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。

TypeScript 特点:

1)TypeScript 的定位是静态类型语言,在写代码(编译)阶段就能检查错误,而非运行阶段(动态语言边解析边执行)。

2)类型系统是最好的文档,增加了代码的可读性和可维护性。

3)强类型、类型推断。

4)有一定的学习成本,需要理解接口 (Interfaces)、泛型 (Generics)、类 (Classes)等。

5)接口:接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。即接口也是一种规范,用来描述、约束对象、函数、类的形状的,即规范类等里面必须实现哪些方法。

6)TS 最后也是编译为 JS,运行在任何浏览器上。

语法学习:

https://www.runoob.com/typescript/ts-tutorial.html

TSX

TSX 表明是 Typescript 文件并使用了 JSX 语法,JSX 语法参考上面提到的 JSX 详解。最后提供一个别人写的文章帮助理解。

https://zhuanlan.zhihu.com/p/435385184文章来源地址https://www.toymoban.com/news/detail-746360.html

到了这里,关于JSX、TSX 整体理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React、Umi、RN 整体理解

    可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么? React 是用于构建用户界面的 JavaScript 库 ,起源于 Facebook 的内部项目,该公司对市场上所有 JavaScript MVC 框架都不满意,决定自行开发一套,用于架设 Instagr

    2024年02月05日
    浏览(56)
  • Backtrader 文档学习- 整体架构功能分析理解

    1. 概述 backtrader是一个用于开发和执行交易策略的Python框架。它提供了一套完整的工具和功能,使得用户可以方便地进行策略回测、实盘交易以及数据分析。 backtrader的入口为Cerebro类,该类将所有输入(Data Feeds)、策略 (Strategy)、观察者(Observers)、策略评估(Analyzers) 、经纪人(

    2024年02月22日
    浏览(37)
  • Hadoop-MapReduce-跟着日志理解整体流程

    vi input_01.txt vi input_02.txt vi input_03.txt 文本内容如下: -----------------input_01.txt---------------- java    scala   python c++     java    js go      go      vba c       c       c++ java    scala   python php     css     html js      java    java    scala   vba c#      .net R       R       R    

    2024年01月25日
    浏览(29)
  • 数学建模、统计建模、计量建模整体框架的理解以及建模的步骤

    这篇博客主要写给统计或者数学专业的小白,以供快速上手建模比赛;本人将在这里整合参加建模比赛的经验以供大家。 本人有幸拿到过高教杯全国大学生数学建模竞赛山东赛区一等奖、美国大学生数学建模竞赛H奖、华数杯数学建模竞赛二等奖、统计建模比赛成功参与奖(😡

    2024年02月08日
    浏览(45)
  • (02)Cartographer源码无死角解析-(75) 2D后端优化→整体复盘,理解后端优化核心

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885   文末正下方中心提供了本人 联系方式, 点击本人照片

    2024年02月13日
    浏览(59)
  • 深入理解JVM虚拟机第二篇:虚拟机概念和JVM整体架构以及字节码的执行路线

      😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(53)
  • 借助chatGPT强大的源码理解能力,来快速学习elasticsearch 7.11.1整体源码结构(用chatGPT学源码太香了)

    ES阅读学习源码的难处 es的源码非常之多。 能够查阅的资料非常少。如果是我们一行一行的去扒着源码看,在我看来至少需要2年的时间,并且至少要耗费四分之一的头发。 源码读起来很枯燥,特别是在我们一头雾水的时候。很容易产生放弃的念头。 很少有人阅读过全部的源

    2023年04月11日
    浏览(45)
  • 变电所运维可以实现一些什么功能

    安科瑞武陈燕acrelcy 安科瑞AcrelCloud-1000变电所运维云平台 1.概述 基于互联网+、大数据、移动通讯等技术开发的云端管理平台,满足用户或运维公司监测众多变电所回路运行状态和参数、室内环境温湿度、电缆及母线运行温度、现场设备或环境场景等需求,实现数据一个中心

    2024年01月23日
    浏览(56)
  • python实现的一些方法,可以直接拿来用的那种

    很多时候我们需要批量生成日期,方法有很多,这里分享两段代码 获取过去 N 天的日期: 输出: 生成一段时间区间内的日期: 输出: 保存数据到 CSV 是太常见的操作了 Pyecharts 作为 Echarts 的优秀 Python 实现,受到众多开发者的青睐,用 Pyecharts 作图时,使用一个舒服的背景也

    2024年02月10日
    浏览(36)
  • 关于微服务治理的一些理解

    根本意义 其主要目的还是为了解耦,提高灵活性和可扩展性! 参考:https://zhuanlan.zhihu.com/p/462078779 相比单体 单体架构的性能高于微服务架构,微服务的负载能力低于单体架构. 微服务通信之间存在网络IO消耗 ; 单体模块紧耦合,扩展性差; 微服务的敏捷性高,每一个人负责

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包