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 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
jQuery实现大图轮播
Feb 13 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
详解Angular2响应式表单
Jun 14 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
vuex的简单使用教程
Feb 02 Javascript
vue使用axios上传文件(FormData)的方法
Apr 14 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 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
isset和empty的区别
2007/01/15 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
理解JS事件循环
2016/01/07 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JsChart组件使用详解
2018/03/04 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python正则表达式使用范例分享
2016/12/04 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python如何转换字符串大小写
2020/06/04 Python
简单了解如何封装自己的Python包
2020/07/08 Python
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
理想点亮人生演讲稿
2014/05/21 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
实习介绍信范文
2015/05/05 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电