babel基本使用详解


Posted in Javascript onFebruary 17, 2017

什么是babel?

babel是一个强大的多用途js编译器 点击进入官网

安装babel

npm install -g babel-cli 
npm install --save-dev babel-cli

babel配置文件

通过.babelrc来表示

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

presets用来存放一些预设

plugins用来存放一些插件 

命令行的简单使用

我们可以通过 -o (--out-file) 参数来编译一个文件

babel es6.js -o es5.js / babel es6 --out-file es5.js

如果我们想编译整个目录 -d (--out-dir)参数

babel  src -d build / babel  src --out-dir build

预设

现在有一段es6的代码,我们想要使用babel来编译这段代码, 目前来说通过编译后的代码几乎是原封不动的复制了过来

es6.js

var add = (a,b) =>{
 console.log(a+b)
}
add(1,2)

我们可以安装babel-preset-es2015来解析es2015的语法

npm install --save-dev babel-preset-es2015

然后通过配置.babelrc文件

{
 "presets": ["es2015"]
}

这样我们就可以进行对es2015语法解析了。最后通过配置package.json的scripts

"scripts": {
 "build" : "babel src -d build -w"
 }

接下来直接在命令行

npm run build

插件

在babel中有很多很多的插件, 例如我们要将下面一段代码转换成umd的形式,该如何做呢?

var add = (a,b) =>{
 console.log(a+b)
}
add(1,2)

首先找到对应的插件babel-plugin-transform-es2015-modules-umd,安装该插件

npm install --save-dev babel-plugin-transform-es2015-modules-umd

在配置中引入

{
 "presets":["es2015"],
 "plugins":["transform-es2015-modules-umd"]
}

然后编译后就是我们想要的了

(function (global, factory) {
 if (typeof define === "function" && define.amd) {
 define(["module", "exports"], factory);
 } else if (typeof exports !== "undefined") {
 factory(module, exports);
 } else {
 var mod = {
  exports: {}
 };
 factory(mod, mod.exports);
 global.sum = mod.exports;
 }
})(this, function (module, exports) {
 "use strict";
 Object.defineProperty(exports, "__esModule", {
 value: true
 });
 var sum = function sum(a, b) {
 return a + b;
 };
 exports.default = sum;
 module.exports = exports["default"];
});

集成gulp

babel可以单独使用, 也可以配合构建工具(gulp webpack等)进行结合

首先要下载gulp 和gulp对应的babel插件

npm install gulp gulp-babel --save-dev

创建gulp配置gulpfile.js

const gulp = require('gulp')
const babel = require('gulp-babel')
gulp.task('babel', ()=>{
 return gulp.src('src/**/*.js')
  .pipe(babel())  
  .pipe(gulp.dest('dist'))
})
gulp.task('default' , ['babel'])

配置下package.json中的scripts

"scripts": {
 "dev" : "./node_modules/.bin/gulp"
 }

最后执行命令

npm run dev

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
js中判断控件是否存在
Aug 25 Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 Javascript
jquery mobile changepage的三种传参方法介绍
Sep 13 Javascript
探讨javascript是不是面向对象的语言
Nov 21 Javascript
js闭包实例汇总
Nov 09 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
详解angular中通过$location获取路径(参数)的写法
Mar 21 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
JavaScript生成一个不重复的ID的方法示例
Sep 16 Javascript
基于js实现逐步显示文字输出代码实例
Apr 02 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 #Javascript
canvas 实现中国象棋
Feb 17 #Javascript
使用vue.js实现checkbox的全选和多个的删除功能
Feb 17 #Javascript
js实现横向拖拽导航条功能
Feb 17 #Javascript
js转换对象为xml
Feb 17 #Javascript
EsLint入门学习教程
Feb 17 #Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 #Javascript
You might like
小文件php+SQLite存储方案
2010/09/04 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
javascript canvas实现简易时钟例子
2020/09/05 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
scrapy爬虫完整实例
2018/01/25 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python超时重新请求解决方案
2019/10/21 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
药学专业大学生自荐信
2013/09/28 职场文书
学习标兵获奖感言
2014/02/20 职场文书
协议书与合同的区别
2014/04/18 职场文书
2015员工年度考核评语
2015/03/25 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
如何写好竞聘报告
2019/04/03 职场文书