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 24 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 Javascript
javascript搜索框效果实现方法
May 14 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
Express URL跳转(重定向)的实现方法
Apr 07 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php实现的生成排列算法示例
2019/07/25 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
python文件和目录操作函数小结
2014/07/11 Python
Python压缩和解压缩zip文件
2015/02/14 Python
python机器学习实战之树回归详解
2017/12/20 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
python 实现矩阵填充0的例子
2019/11/29 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
运动会的口号
2014/06/09 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
大学生实习介绍信
2015/05/05 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
springboot入门 之profile设置方式
2022/04/04 Java/Android
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers