详解javascript中的babel到底是什么


Posted in Javascript onJune 21, 2018

javascript在不断的发展,各种新的标准和提案层出不穷,但是由于浏览器的多样性,导致可能几年之内都无法广泛普及,babel可以让你提前使用这些语言特性,他是一种用途很多的javascript编译器,他把最新版的javascript编译成当下可以执行的版本,简言之,利用babel就可以让我们在当前的项目中随意的使用这些新最新的es6,甚至es7的语法。说白了就是把各种javascript千奇百怪的语言统统专为浏览器可以认识的语言。

新建项目:npm init

安装babel-cli:npm i babel-cli --save-dev

新建一个文件index.js

let numbers = [1,2,3];
let dou = numbers.map((number)=>number*2);
console.log(dou);

这是es6最新的语法,map遍历数组并输出

然后用babel来编译这段代码,不编译,直接运行,可能会报错,编译成标准的js语言compiled.js

babel index.js -o compiled.js

项目中自动生成compiled.js

打开compiled.js 文件,发现并没有起作用,相当于复制过来了,其实我们在在用babel的时候是需要配置文件泪完成编译的,

新建配置.babelrc文件

{
  "plugins":[ ],
  "presets":[ ]
}

下面来一个预设,它可以把es6的代码编译为es5

npm i babel-preset-es2015 --save-dev

安装完后把这插件配置到.babelrc文件

{
  "plugins":[ ],
  "presets":["es2015"]
}

再次运行编译

打开compiled.js文件

变了

var numbers = [1, 2, 3];
var dou = numbers.map(function (number) {
 return number * 2;
});
console.log(dou);

接下来在编译一段es7的代码,es7编译为es5

我们需要一个插件来完成

npm i babel-plugin-transform-object-rest-spread --save-dev

然后把这个插件配置到.babelrc文件中去

{
  "plugins":["transform-object-rest-spread"],
  "presets":["es2015"]
}
let mike = {name:'mike',age:40};
mike={...mike,sex:'男'};
console.log(mike);

然后运行编译命令

打开compiled.js

'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };


var mike = { name: 'mike', age: 40 };
mike = _extends({}, mike, { sex: '男' });
console.log(mike);

这个插件启示就是添加了一个_extends方法来完成这个功能

总结:

babel的核心概念就是利用一系列的plugin来管理编译案列,通过不同的plugin,他不仅可以编译es6的代码,还可以编译react JSX语法或者别的语法,甚至可以使用还在提案阶段的es7的一些特性,这就足以看出她的可扩展性。在以后的博客,会介绍他和webpack,react如何共同创建一个完美的开发环境。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
tweenjs缓动算法的使用实例分析
Aug 26 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
Java Varargs 可变参数用法详解
Jan 28 Javascript
Paypal支付不完全指北
Jun 04 Javascript
webpack打包react项目的实现方法
Jun 21 #Javascript
Vue Router的懒加载路径的解决方法
Jun 21 #Javascript
详解如何使用webpack打包JS
Jun 21 #Javascript
vue自定义一个v-model的实现代码
Jun 21 #Javascript
JS实现模糊查询带下拉匹配效果
Jun 21 #Javascript
浅析Vue 生命周期
Jun 21 #Javascript
vue数组对象排序的实现代码
Jun 20 #Javascript
You might like
用Socket发送电子邮件
2006/10/09 PHP
php 中文处理函数集合
2008/08/27 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
php目录操作实例代码
2014/02/21 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python列表计数及插入实例
2014/12/17 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python中requests库session对象的妙用详解
2017/10/30 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python检测数据类型的方法总结
2019/05/20 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
实习护理工作自我评价
2013/09/25 职场文书
学院书画协会部门职责
2013/11/28 职场文书
关于安全的演讲稿
2014/05/09 职场文书
电视节目策划方案
2014/05/16 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS