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 相关文章推荐
jQuery实现购物车数字加减效果
Mar 14 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
Jan 10 Javascript
php基于redis处理session的方法
Mar 14 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
微信小程序开发中的疑问解答汇总
Jul 03 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
May 16 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
Vue组件跨层级获取组件操作
Jul 27 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 MYSQL中插入当前时间
2008/04/06 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
bootstrap table小案例
2016/10/21 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
基于JavaScript实现轮播图效果
2021/01/02 Javascript
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python实现车牌识别的示例代码
2019/08/05 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
青年创业培训欢迎词
2014/01/08 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫