最详细的jsx和babel的区别

React的核心机制之一就是可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来减少对实际DOM的操作从而提升性能。

JSX是什么

JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。

如下:

var child1 = React.createElement(‘li‘, null, ‘First Text Content‘);
var child2 = React.createElement(‘li‘, null, ‘Second Text Content‘);
var root = React.createElement(‘ul‘, { className: ‘my-list‘ }, child1, child2);

babel是什么

Babel是React团队选择的在使用React过程中转换ES*和JSX为ES5语句的工具

Babel并非React的一部分,实际上,Babel的主要用途并非一个JSX语句转换器。Babel主要是一个JavaScript转换器,它可以转换各种ES*代码为浏览器可识别的ES代码。就目前来说,Babel主要会转换ES6和ES7语句为ES5语句,转换JSX看起来倒像是其的一个附加功能。

<script type="text/babel">

        class HelloMessage extends React.Component {    //这里使用的是React.component
            render(){

                return <div>Hello {this.props.name}</div>;

            }

        };

        ReactDOM.render(<HelloMessage name="John" />, document.getElementById(‘app‘));

        /*** ES5写法 ***/

        /*var HelloMessage = React.createClass({ 

            render: function() {

                return <div>Hello {this.props.name}</div>;

            }

        });

        ReactDOM.render(<HelloMessage name="John" />, document.getElementById(‘app‘));*/

    </script>

jsX和babel区别:

区别就在于 babel 支持将按照ES6写的代码转成ES5格式的代码,以便让其能在现代浏览器上正常运行,用jsx, 只能用ES5的语法。

时间: 2024-08-30 17:01:01

最详细的jsx和babel的区别的相关文章

详细解析@Resource和@Autowired的区别 , 以及@Qualifier的作用

(41)  (0) 首先 . @Resource是javax.annotation 包中的注解类 , 是jdk中封装的 . @AutoWired是spring的中注解,依赖于spring上下文. 相同点: @Resource 和 @Autowired 都可以用在类中的field 或者function 上 , 在类初始化的时候 , 自动为field 赋值 , 自动为function注入参数并且执行该方法(不仅仅局限于set方法) . 不同点: 1. @Autowired 写在构造函数上,为构造器注

Java虚拟机6:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

http://www.cnblogs.com/xrq730/p/4839245.html 前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露.并行与并发.Client模式和Server模式.Minor GC和Full GC,本文详细讲解下这些概念的区别. 内存溢出和内存泄露的区别 1.内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了. 2.内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可

react-hot-loader 3.0于1.3的区别

现在react-hot-loader 3.0版本应该还是beta版本,不过没关系,还是可以正常使用,我在项目中用的是react-hot-loader 3.0.0-beta.7 版本,并没用发现任何问题. 当然这也是一个非常大的改进 首先看看 webpack.config.js的变化 // v1.3 loaders: [ { test: /\.jsx?$/, loaders: ['react-hot', 'jsx?harmony'], include: path.join(__dirname, '

C#中接口与抽象类的区别

接口与抽象类是面试中经常会考到的点,容易混淆.首先了解下两者的概念: 一.抽象类:      抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包含未实现的方法声明: 3

webpack打包遇到locals[0] does not appear to be a `module` object with Hot Module replacement API enabled. You should disable react-transform-hmr in production by using `env` section in Babel configuration

解决办法: 1.删除.bablerc文件的env下的"development": {"presets": ["react-hmre"]} 2.在webpack.config的loader添加以下代码 module: { loaders: [ { test: /\.(js|jsx)$/, loader: 'babel', include: path.join(__dirname, 'src'), query: { plugins: [ ["

Webpack使用教程五(Babel)

Babel是一个JavaScript编译和工具平台,使用Babel我们可以:使用新版本的JavaScript(ES6/ES2015,ES7/ES2016),尽管有些浏览器不能全部支持新特性:使用JavaScript语言扩展,例如React JSX.Babel是一个独立的工具,可以与Webpack一起使用.Babel已经模块化并分布在不同的npm模块中,其中核心的功能可以在babel-core模块中获得.其他的部分根据用户的需求来下载:如果想与webpack一起使用,需要安装babel-loade

reflow和repaint区别?

作者:zccst 重绘和重排之前也知道,但也没有可以详细了解他们的机制,区别,以及对性能的影响. A repaint occurs when changes are made to an elements skin that changes visibility, but do not affect its layout. Examples of this include outline, visibility, or background color. According to Opera,

select,poll,epoll区别

select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024.当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小.这个时候就可以标识32*max值范围的fd. 对于单进程多线程,每个线程处理多个fd的情况,select是不适合的. 1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费 2.1024上限问题,一个处理多个用户的进程,fd值远远大于1024 所以这个时候应该采用poll, poll传递的是数组头

scanf与gets读取字符串的区别

对于编程初学者很多人对gets和scanf都没做过深入的了解,本文为大家详细说明gets和scanf的区别 gets 1.函数:gets(字符指针) 2.头文件:stdio.h(c中),c++不需包含此头文件 3.原型:char*gets(char*buffer); 4.功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中.注意:(换行符不作为读取串的内容,读取(接受)的换行符被转换为null值,并由此来结束字符串.) 5.返回