babel版本变化 - 简单理解

babel版本变化

现在大部分使用babel的项目都是用的babel7.x了,但是还是需要去了解一下babel每个版本的一个重大变化,本篇主要是简单来记录下我了解的babel几个版本的重大变化

babel5.x

我看官网babel5已经没有了,,,但是在我了解的过程中,有好多博客都说有babel5,,,差不多就是说babel5就是一个全家桶,类似于vue-cli那样的东西,包括各种包和插件,babel5大概就是让你通过一次安装,尽可能的可以达到所有你想要的东西。

babel6.x

babel5升级到babel6最主要的原因可能就是之前都让大家一次npm就把所有的东西都安装了,但是有的东西是不需要的,导致包的体积很大,所有babel6就把一些包和插件都拆了出来可以去独立安装,我的猜测是这样的。。。

babel6的改变:

  • 把之前的一次性安装拆成了一些核心安装包:babel-core、babel-cli、babel-polyfill等等。。。
  • 插件化,根据自己的需求去手动的添加plugin,这点我觉得可以,一切都讲究个按需加载嘛;
  • 可以使用.babelrc 文件来配置babel,方便自定义的配置,难道说babel5只能在package.json中配置?知道的大佬可以给我评论下0.0
  • 添加了预设preset,这个预设在我学到的时候再细说,听说很牛逼;
  • babel5可以直接把require的转成import,babel6就不行,如果用了require需要加上.default才可以,不过我觉得直接改成import就好了,这一条我是有的说的,因为我,,,梦到过(卡姆说的),有次我也遇到了这个问题,引入的一个第三方包里面有用require,我的解决方案是引入了一个叫@babel/plugin-transform-modules-commonjs插件就把require编译成import了;
  • 差不多了,babel6先了解这么多,还想了解的可以去babel官网看看。

babel7.x

来了来了,最牛逼的babel7

  • 安装包都使用npm的scope包@balbel/xxx,不会再出现和别的包名冲突;
  • 所有阶段预设state-x均已弃用,使用plugin代替,官网也有一个升级方案,可以安装babel-upgrade包,它会把你之前有用过的stage-x自动换成对应的plugin,我没用过,有需求的可以去看看
https://github.com/babel/babel/blob/master/packages/babel-preset-stage-0/README.md
  • 更强大的env
  • 之前有的插件是带着类似于es2015这样的(等等),比如@babel/plugin-transform-es2015-classes,现在直接写@babel/plugin-transform-classes就可以
  • 有些包被删了,比如babel-core/register.js,应直接用@babel/register
  • 差不多先这些

原文地址:https://www.cnblogs.com/bai1218/p/12153618.html

时间: 2024-08-27 23:35:56

babel版本变化 - 简单理解的相关文章

Javascript闭包简单理解

提到闭包,想必大家都早有耳闻,下面说下我的简单理解.说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和组件或多或少用到了闭包.所以,了解闭包是非常必要的.呵呵... 一.什么是闭包简而言之,就是能够读取其他函数内部变量的函数.由于JS变量作用域的特性,外部不能访问内部变量,内部可以外部变量. 二.使用场景1. 实现私有成员.2. 保护命名空间,避免污染全局变量.3. 缓存变量. 先看一个封装的例子: var person = function () { // 变量作用域为函

对象序列化原因的简单理解

序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,其最终目的都是将内存中的对象持久化或者是在网络上传输.反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 使用序列化的原因 a. 一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本.我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据.尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂.可

[干货分享]git的简单理解及基础操作命令

前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制>这本书(偏理论,内容完善,很不错),针对所学内容建了git仓库测试,且写了不少git操作命令的笔记,做个分享,有错误的地方各位大大也给提出,好做修改~ Git是一款免费.开源的.用Linux内核开发的分布式版本控制系统. git和svn有什么区别呢? git采用分布式版本库管理,而svn采用集中式版本库管理. 集中式版本库管理需要有一台存放版本库的服务器,

大话设计模式总结(28种设计模式定义+简单理解)

大话设计模式这本书写的非常有创意,非常适合我这种新手.用了大约两个星期的时间看完了这本书,代码全部都敲了一遍,虽然没有一点基础,但是还是领略到了面向对象的威力.看完之后再也不想使用面向过程的语言了,比如VB,想当初我也是VB狂热者,但是现在我几乎不想再使用了.现在只想着写点什么用上它几种设计模式. 可能是第一次接触这些东西,有些感觉看懂了,但是很难应用到实际编程中:有些感觉没看懂,但是还能说出那么点东西来.听七期学长说他们当初看了两遍,要求能背着写出代码,不知道这次我们八期要求怎么这么低,我只看

(转)Deep learning:四十二(Denoise Autoencoder简单理解)

前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Bengio在08年提出,见其文章Extracting and composing robust features with denoising autoencoders.使用dAE时,可以用被破坏的输入数据重构出原始的数据(指没被破坏的数据),所以它训练出来的特征会更鲁棒.本篇博文主要是根据Benig

简单理解I/O模型

服务端I/O:   I/O在计算机中指Input/Output, IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一.IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求.   一次完整的I/O是用户空间的进程数据与内核空间的内核数据的报文的完整交换,但是由于内核空间与用户空间是严格隔离的,所以其数据交换过程中不能由用户空间的进程直接调用内核空间的内存数据

Laravel集合的简单理解

本篇文章给大家带来的内容是关于Laravel集合的简单理解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 集合通过 Illuminate\Database\Eloquent\Collection 进行实例,Laravel的内核大部分的参数传递都用到了集合,但这并不代表集合就是好的.Laravel作为快捷并优雅的开发框架,是有他一定的道理所在的,并非因他的路由.DB.监听器等等.当你需要处理一组数组时,你可能就需要它帮助你快捷的解决实际问题. 创建集合 1 $collect

php类的封装、继承和多态的简单理解

.面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象: 我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象 一.封装性  封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有被授权的操作(方法)才能对数据进行操作.  php提供了三种访问控制修饰符  public 表示全局,本类内部,类外部,子类都可以访问  protected 表示受保护的,只有本类或子类可以访问  pr

简单理解计算机通信

简单理解计算机通信 写在前面: 在计算机刚出现的时候,只能在本机进行一些运算处理,想将一台计算机中的数据转移到另一台计算机中,需要通过外部存储介质来传输,例如磁带.软盘.而网络技术的出现,使得计算机间可以通过一些传输介质(网线.光纤等),实现快速的数据传输和信息交互.如今,网络已无处不在,那么,计算机之间究竟是如何通信的呢?下面会通过一些基础的网络知识来简单理解计算机之间的通信过程. 网络通信模型: 网络通信模型是一种概念模型和框架,旨在使各种计算机在世界范围内互连为网络.其中有OSI七层模型和