前端框架这几年更新非常快,传统的Boostrap、Jquery已经慢慢退位,现在大行其道的是React和Vue。其中就出身来讲,React来自科技巨头Facebook,似乎更牛逼一点。

React 自创了JSX语法,是一个 JavaScript 的语法扩展,官方建议在 React 中配合使用 JSX 来替代原始的 JS。因为JSX 可以更好的描述 UI 应该呈现出它应有交互的本质形式。JSX 看起来有点类似模版语言,但它具有 JavaScript 的全部功能。

一、为什么使用JSX

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

React 并没有采用将标记与逻辑进行分离到不同文件这种人为地分离方式,而是通过将二者共同存放在称之为“组件”的松散耦合单元之中,来实现关注点分离。

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

综上,有以下几点:

  1. JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。
  2. 它是类型安全的,在编译过程中就能发现错误。
  3. 使用 JSX 编写模板更加简单快速。

二、JSX 的使用

JSX看起来像是 JavaScript 和 Html 语言的组合,并柔和在一起,她提倡的是组件化的概念。我们直接看例子,

上面也可以在以上代码中嵌套多个 HTML 标签,但注意最外层需要使用一个 div 元素包裹它。

1、在 JSX 中嵌入表达式

比如声明了一个名为 name 的变量,然后在 JSX 中使用它,并将它包裹在括号中,

2、JSX 本身也是一个表达式

在编译之后,JSX 表达式会被转为普通 JavaScript 函数调用,并且对其取值后得到 JavaScript 对象。

也就是说,可以在 if 语句和 for 循环的代码块中使用 JSX,将 JSX 赋值给变量,把 JSX 当作参数传入,以及从函数中返回 JSX。

3、JSX 特定属性

可以通过使用引号,来将属性值指定为字符串字面量;也可以使用大括号,来在属性值中插入一个 JavaScript 表达式。但引号或大括号只能选择一种,不能同时使用。

这里还要注意下。因为 JSX 语法上更接近 JavaScript 而不是 HTML,所以 React DOM 使用 camelCase(小驼峰命名)来定义属性的名称,而不使用 HTML 属性名称的命名约定。例如,JSX 里的 class 变成了 className,而 tabindex 则变为 tabIndex。

三、JSX 的对象编译和防注入

1、JSX 的对象编译

Babel 会把 JSX 转译成一个名为 React.createElement() 函数调用。并且React.createElement() 会预先执行一些编译检查,以帮助你编写无错代码。

编译后的简化代码为,

被编译的对象被称为“React 元素”。它们描述了你希望在屏幕上看到的内容。React 通过读取这些对象,然后使用它们来构建 DOM 以及保持随时更新。

2、JSX 的防注入攻击

React DOM 在渲染所有输入内容之前,默认会进行转义。它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。所有的内容在渲染之前都被转换成了字符串。这样可以有效地防止 XSS(cross-site-scripting, 跨站脚本)攻击,使你在 JSX 当中插入用户输入内容更安全。

好了,以上就是 JSX 的简略说明,虽然 React 在实际使用中既可以使用 JS,也可以使用 JSX,但是官方的推荐还是 JSX 哦。

js 字符串插入_前端利器React,为什么推荐JSX来替换JS相关推荐

  1. JS字符串截取方法 JS字符串查找指定字符方法 JS字符串替换指定字符方法 JS字符串插入指定位置方法 JS字符串删除指定字符方法

    js字符串截取的方法 方法一: str.slice(开始位置,结束位置) //start 参数字符串中第一个字符位置为 0, 第二个字符位置为 1, 以此类推,如果是负数表示从尾部截取多少个字符串,s ...

  2. js 字符串加减法_基于字符串的数值之加减乘除JS算法研究

    在我们的日常js项目中,我们不免会碰到需要进行前端计算的场景.而大家都知道,计算机进行计算时存在精度问题,且数值有值域,偶尔会碰到溢出问题.在最近的一个项目中,由于遇到了一个超过20位的数,因此,又不 ...

  3. vue.js 天气插件_天气检查我的项目以学习Vue.js

    vue.js 天气插件 天气 (vue-weather) Weather checking me project for learning Vue.js. 天气检查我的项目以学习Vue.js. Vie ...

  4. js增加属性_前端js基础2

    JavaScript ECMAScript(ES):规定了js的一些基础的核心知识(变量.数据类型.语法规范.操作语句等) 3/5==6/7 说出ES5和ES6的区别? DOM:document ob ...

  5. 字符串插入_计算机毕业设计中小程序插入html代码

    点击上方"蓝字",关注我们. 一.首先,html 分 2 种情况: 1.做详情页开发的时候发现获取到的数据是 转译后的 html字符串,如下图: 这种 转译后的 html字符串,左 ...

  6. js 字符串插入_Vue.js 条件与循环

    来源:阿里云大学--开发者课堂--Vue.js自学手册 条件判断使用 v-if 指令: v-if 指令 在元素 和 template 中使用 v-if 指令: Vue 测试实例 - 阿里云大学(/ed ...

  7. 在dom最前面插入_前端性能优化之dom编程

    写在前面 总所周知,在前端的日常里面,采用JS操作DOM节点的情况占据了大多数.虽然现在有MVVM主流框架代替我们做了这些事情,但充分理解在DOM操作各种损耗问题,将有助于让我们更加理解和优化问题. ...

  8. 如何命令行结束react程序_前端架构React和Vue CTO的选择正确框架的指南

    快速总结:为项目选择正确的javascript框架或库是CTO和项目经理的基本任务.然而,选择的范围很大程度上取决于几个因素,如项目时间.学习曲线.框架性能和团队规模.这篇文章旨在指导他们选择正确的j ...

  9. 字符串插入_动态规划----字符串编辑最小距离

    给定两个字符串A和B,对字符串A进行编辑操作得到字符串B,求最少的编辑操作次数:编辑操作包括:插入,删除和替换,其中每个插入/删除定义为1次编辑操作,每个替换定义为2次编辑操作,替换操作实质为1次插入 ...

最新文章

  1. 2022-2028年中国废旧塑料回收产业研究及前瞻分析报告
  2. [心情]说说作为新手的困惑
  3. List集合add使用过程中出现的错误
  4. 联想服务器DL388eu盘装系统,服务器价格指导 10月双路机架产品导购
  5. java 判断类型_如何快速入门Java编程学习(干货)
  6. 定时发布任务,在global.asax中获取文件的物理路径的方法
  7. input onclick点击button无反应_热图分析:精确洞察用户点击偏好
  8. Java集合(八) 迭代器Iterator、泛型、Map映射
  9. 使用Linq时出现Row not found or changed. Linq 找不到行或行已更改的解决办法
  10. 使用Python及Selenium自动发表文章
  11. 【树形dp】VK Cup 2012 Round 1 D. Distance in Tree
  12. 【我评】——关于《中國化風格的淺析》
  13. 如何低格台式计算机的硬盘,低级格式化,教您硬盘如何进行低级格式化
  14. connection closed
  15. 计算机专业买电脑买那种好,windows7好还是windows10好_电脑系统7和10哪个好用
  16. java2017期末考试,2017年java考试模拟试卷(2)
  17. OpenCv打开摄像头失败问题处理cap_msmf.cpp (677) MFVideoFormat_RGB24(codec not found)
  18. Linux之汇编语言
  19. 何金龙 mysql_办innodb
  20. 华硕a43s遇到的问题总结

热门文章

  1. 云计算监控—Prometheus监控系统(文末赠书)
  2. 微服务架构案例(04):中间件集成,公共服务封装
  3. Split-Bregman迭代方式
  4. 案例:java进制互转
  5. 如何优雅地使用 VSCode 来编辑 vue 文件?
  6. android app启动过程(转)
  7. 操作系统---进程篇
  8. 在界面中显示文本内容
  9. Suofanker:为什么搜索引擎重视链接
  10. 第二章附加例题:委托类型