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下字符串连接的性能
Mar 05 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
关于javascript event flow 的一个bug详解
Sep 17 Javascript
巧用replace将文字表情替换为图片
Apr 17 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
Vue底层实现原理总结
Feb 17 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 Javascript
解决vue单页面修改样式无法覆盖问题
Aug 05 Javascript
JavaScript流程控制(循环)
Dec 06 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下使用无限生命期Session的方法
2007/03/16 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
php实现网页端验证码功能
2017/07/11 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
阳光体育活动总结
2014/04/30 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
2014年资料员工作总结
2014/11/18 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python