<React: Up and Running>阅读笔记 — JSX

Transpiling JSX


transpilation是获取source code, 然后使用老版本浏览器可以理解的JavaScript来重写的过程,这两个版本之间的语法不一样,但是功能是一样的。

这个JavaScript的polyfills是不一样的,polyfill是完全JavaScript-land的,比如解决JavaScript新老版本API兼容的问题,把高版本的API通过polyfill使低版本也能使用。但是当有新的语法引入时,比如新版本JavaScript中出现的class关键字,这个是无法通过polyfill进行兼容的。因此在把要想在browser上面使用这些新语法,必须先对source code进行compilation(transpilation),通过这种方式我们就可以直接使用很多ES6的新特性。


Client-side


在浏览器中进行transpilation是最简单的实现方式,但是这个会给用户带来性能方面的不利影响,因此对真实用户来说,不推荐使用这种方式,而是推荐在服务器进行编译。但是这种方式对我们日常开发来说却是非常有利的,不需要设置一大堆的编译步骤。

要在Client-side使用JSX,需要做两件事:1) 包含client JSX transpilation script 2) 使用JSX来标记scripts脚本

在老版本的React中,使用的JSX build脚本是JSXTransformer,新版本使用的是babel(v0.14)。两者使用的方式和语法是基本上来说差异不大,babel除了支持JSX之外,还支持最新的JavaScript版本的各种特性到低版本的JavaScript中。

如果没有JSX build脚本的情况下,在浏览器中包含JSX语法会直接报错的。添加build脚本之后,build脚本会查找并transiles代码中tag类型为”text/jsx”的中的script,将其中的语法从JSX变为正常的JavaScript语法,然后把转换后的JavaScript代码auto-insert到document的<head>中。例如下图这样,可以看出,生成的script同时还包含一个对debug非常有帮助的source map(a mapping of before/after the transformation)。


在上面的例子中是直接使用inline scripts,我们同时还可以使用external scripts,原理和用法跟上面的过程是一样的,例如下面:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值