详解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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
js本地图片预览实现代码
Oct 09 Javascript
web打印小结
Jan 11 Javascript
简单的网页广告特效实例
Aug 19 Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 Javascript
详解Vue组件之间通信的七种方式
Apr 14 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
vue 实现上传组件
May 31 Vue.js
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
function.inc.php超越php
2006/12/09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
JavaScript 特殊字符
2007/04/05 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
vue props 一次传多个值实例
2020/07/22 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
关于Python 3中print函数的换行详解
2017/08/08 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
Pycharm中如何关掉python console
2020/10/27 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
公司门卫管理制度
2014/02/01 职场文书
学生安全承诺书
2014/05/22 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript