美文网首页babelBabel
【Babel】Babel5和Babel6区别

【Babel】Babel5和Babel6区别

作者: izhongxia | 来源:发表于2016-08-12 20:29 被阅读749次

时间:2016-08-12 17:04:10
作者:zhongxia
地址:

babel 5.x -> 6.x 的变化非常大,许多模块分离出去,只是一些文档还语焉不详,

1. Babel5中的require 和 Babel6中 require的区别?

Babel5中,require 是 module.export 返回的值 或者 是 export default 返回的值。

Babel6中, 如果采用 import 导入组件, 可以直接获取到 export default 的值, 但是如果是 require 导入的组件, 都必须要加上一个 default。 不管你是 module.export 、export 、 export default 出来的值。

//Home.jsx
class Home extends React.Component{
   render(){
     return (<div>Home</div>)
   }
}
export default Home;
//index.js
//这两个效果一样
import Home from './Home'   
const Home = require('./Home').default;

2. babel-polyfill和babel-runtime的区别?

babel-polyfill会把api给内置到 window去。 让不支持 ES2015的浏览器,可以正常使用相关的API
babel-runtime 是把

官网是这么说的,那些需要修改内置api才能达成的功能,譬如:扩展String.prototype,给上面增加includes方法,就属于修改内置API的范畴。这类操作就由polyfill提供。

2.1 babel-polyfill

Paste_Image.png

babel 虽然可以转换各种 ES2015 语法及 jsx,但浏览器未提供原生支持的许多功能还是需要 polyfill,比如 Promise。
我们只要在代码中引入 babel-polyfill 就可以模拟出一个 ES2015 的环境,用法如下:

//安装babel-polyfill
npm install babel-polyfill --save

//在入口文件中引用:
import babel-polyfill

2.2 babel-runtime

与 babel-polyfill 一样,babel-runtime 的作用也是模拟 ES2015 环境。只不过,babel-polyfill 是针对全局环境的,引入它,我们的浏览器就好像具备了规范里定义的完整的特性 – 虽然原生并未实现。

babel-runtime 更像是分散的 polyfill 模块,我们可以在自己的模块里单独引入,比如require(‘babel-runtime/core-js/promise’)
,它们不会在全局环境添加未实现的方法,只是,这样手动引用每个 polyfill 会非常低效。我们借助Runtime transform插件来自动化处理这一切。

至于要用 babel-polyfill 还是 babel-runtime,则需要根据具体需求。举个例子,如果一个库里引用了 babel-polyfill,别人的库也引用了 babel-polyfill,我们很可能会跑两个 babel-polyfill 实例,这里,使用 babel-runtime 会更合适。

参考文章

  1. Babel 入门教程
  2. babel 6 教程
  3. babel的polyfill和runtime的区别

您可能还感兴趣?

  1. 前端技术文章汇总

相关文章

  • 【Babel】Babel5和Babel6区别

    时间:2016-08-12 17:04:10作者:zhongxia地址: babel 5.x -> 6.x 的变化...

  • babel6 升级总结

    随着越来越多的库升级至 babel6,将项目升级至 babel6 迫在眉睫。在这里总结将 项目升级至 babel6...

  • babel【3】:关于 babel 版本

    1、目前,前端开发领域使用的 Babel 版本主要的Babel6 和 Babel7 这两个版本。 你可能想问,怎么...

  • babel6配置过程

    babel6配置过程? 只需要下面几个babel插件,就能解析大部分ES方法 1、babel-core //必备的...

  • babel6

    记录babel6的使用教程(举个栗子): 说明:-----2016/8/20发布第一版;-----1.这里假设你懂...

  • babel6

    babel安装 然后使用命令babel --help命令行提示You have mistakenly instal...

  • Using ES6 and ES7 in the Browser

    原文出处 这篇教程是使用Babel6用ES6全攻略系列的一部分,如果你对升级到Babel 6有问题的话,可以先看看...

  • Webpack配置

    babelrc .babelrc和babel.config.js区别 Babel是什么 Babel 是一个 Jav...

  • ES6 转码为 ES5 (Babel)

    Babel 6 与之前版本的区别 之前版本只需安装一个 babel,但在 babel 6 中,将 babel 拆分...

  • babel6升babel7 出现Object.isSpreadP

    出现原因:babel-plugin-transform-object-rest-spread 依赖版本仍然是6.2...

网友评论

    本文标题:【Babel】Babel5和Babel6区别

    本文链接:https://www.haomeiwen.com/subject/utlesttx.html