Babel是一个广泛使用的转码器,可以将ES6代码转为ES5,从而在现有的环境中执行。

这是一个开端,以后遇到问题,也会持续记录。

一、babel配置

官网有更详细的配置教程:https://www.babeljs.cn/docs/setup/#installation

我选择的是尝试CLI

1、新建一个文件夹做为项目文件夹,打开cmd,进入项目文件夹下,执行npm init(相关信息可以一路按回车,设置为默认信息),完成后会生成一个package.json文件

2、配置.babelrc文件

(1)使用命令行创建此文件,进入项目文件夹下,输入type nul>.babelrc;

(2)编写.babelrc文件内容

该文件用来配置转码规则和插件,基本格式如下:

{
"presets": [], //设置转码规则
"plugins": [] //设置插件
}

官方提供以下的规则集,可以根据需要安装:

# ES2015转码规则
npm install --save-dev babel-preset-es2015 # react转码规则
npm install --save-dev babel-preset-react # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
npm install --save-dev babel-preset-stage-0
npm install --save-dev babel-preset-stage-1
npm install --save-dev babel-preset-stage-2
npm install --save-dev babel-preset-stage-3

然后将这些规则加入.babelrc

{
"presets": [
"es2015",
"stage-2"
],
"plugins": []
}

3、安装babel-cli

官方推荐根据单个项目进行本地安装会更好一些。

这样做有两个主要的原因:

  1. 同一机器上的不同的项目可以依赖不同版本的 Babel, 这允许你一次更新一个项目。
  2. 这意味着在你的工作环境中没有隐含的依赖项。它将使你的项目更方便移植、更易于安装。

我们可以通过以下命令本地安装 Babel CLI:

在项目目录下输入 npm install --save-dev babel-cli

安装完成之后,改写package.json文件

"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel src -d lib"
  //编译整个 src 目录并将其输出到 lib 目录。这里的src指的是需要转换的目录,lib指的是输出的内容的存放目录
},

在根目录下必须有src文件夹,里面存放index.js文件,存放的是ES6代码,必须有lib文件夹,这是输出的文件夹。

转码的时候就执行npm run build,即src里面的index.js就输出到了lib中,这是转码后的文件。

二、babel-polyfill

Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。

举例来说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。

cmd进入当前文件夹执行  npm install --save babel-polyfill

然后在index.js脚本的头部加上

import 'babel-polyfill';
// 或者
require('babel-polyfill');

三、使用webpack+babel来"编译"你的JS代码

webpack官方文档 https://webpack.docschina.org/guides/

1、在当前项目安装webpack,webpack-cli,babel-core,babel-loader

npm install --save-dev webpack

npm install --save-dev webpack-cli

npm install --save-dev babel-core babel-loader

2、使用配置文件

在项目的根目录创建webpack.config.js文件

const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'lib'),
filename: 'index.bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
use:[
'babel-loader'
]
}
]
}
}

3、使用快捷方式运行webpack

修改package.json文件

"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},

之后在命令行运行 npm run build   运行成功之后,即可在lib文件夹中找到index.bundle.js文件,此文件即为转换之后的文件。

更多webpack插件,可以看官网,这个项目的初步的配置就完成了。

babel使用入门以及使用webpack+babel来"编译"你的JS代码的更多相关文章

  1. babel从入门到入门

    babel从入门到入门 来源 http://www.cnblogs.com/gg1234/p/7168750.html 博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3. ...

  2. webpack+babel+transform-runtime, IE下提示Promise未定义?

    知识要求 babel的基础知识(推荐阮一峰的babel入门教程) 充分理解babel-plugin-transform-runtime与babel-runtime的作用(推荐github项目首页) w ...

  3. webpack+babel项目在IE下报Promise未定义错误引出的思考

    低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...

  4. Babel插件开发入门指南

    文章概览 主要包括:Babel如何进行转码.插件编写的入门基础.实例讲解如何编写插件. 阅读本文前,需要读者对Babel插件如何使用.配置有一定了解,可以参考笔者之前的文章. 本文所有例子可以在 笔者 ...

  5. 前端工程化-webpack(babel编译ES6)

    最新版安装与普通安装 使用babel-loader编译ES6,需要遵循规范,安装babel-presets 规范列表 对应babel-loader,babel-preset安装最新版和普通版: pre ...

  6. react+webpack+babel环境搭建

    [react+webpack+babel环境搭建] 1.react官方文档推荐使用 babel-preset-react.babel-preset-es2015 两个perset. Babel官方文档 ...

  7. 详解 Webpack+Babel+React 开发环境的搭建

    1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等) ...

  8. WEBPACK & BABEL 打包项目

    本文首发于 BriFuture's Blog. 最近在用 Vue 重写之前的一个项目 Compass,这个项目以前是用 QML + JavaScript 在 Qt 平台上搭建的.这是我本科毕设时做的一 ...

  9. npm+webpack+babel+react安装

    npm+webpack+babel+react安装 1.首先要安装 Node.js, Node.js 自带了软件包管理器 npm 2.在项目文件目录下生成package.json # 进入项目目录$ ...

随机推荐

  1. windows服务器让WEB通过防火墙的问题

    服务器环境:windows server 2012 X64WEB服务器:IIS开放8080,PHPSduty开放80 如果关闭防火墙的情况下,不论是IIS还是安装的其他的WEB服务器,都可以正常访问. ...

  2. ASP.NET Core 2 学习笔记(二)生命周期

    要了解程序的运行原理,就要先知道程序的进入点及生命周期.以往ASP.NET MVC的启动方式,是继承 HttpApplication 作为网站开始的进入点,而ASP.NET Core 改变了网站的启动 ...

  3. mysql 数据库优化第一篇(基础)

    Mysql数据库优化 1. 优化概述 存储层:存储引擎.字段类型选择.范式设计 设计层:索引.缓存.分区(分表) 架构层:多个mysql服务器设置,读写分离(主从模式) sql语句层:多个sql语句都 ...

  4. hdu 4325 Flowers(区间离散化)

    http://acm.hdu.edu.cn/showproblem.php?pid=4325 Flowers Time Limit: 4000/2000 MS (Java/Others)    Mem ...

  5. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

  6. 配置阿里yum源,设置命令

    配置阿里yum源 #linux的软件包管理 安装 软件的方式有三种 .源代码编译安装() .下载python3的源代码 .解压缩源代码 .进入源代码目录,开始编译安装 .配置环境变量 .yum方式安装 ...

  7. jzoj5950

    我們發現如下結論: 1.只有編號小的點才會對編號大的點產生影響 2.當當前點的y坐標大小為1~i最大的,則不會被以前的點影響 於是,維護一個斜率單調遞增的隊列 當當前點的y坐標大小為1~i最大的,則這 ...

  8. spring JdbcTemplate批量插入以及单个插入时获取id

    1. 批量更新插入 jdbcTemplate.batchUpdate(String sql, List<Object[]> batchArgs) Object[]数组的长度为每条记录的参数 ...

  9. 【wireshark】抓包和文件格式支持

    1. 抓包 捕获从网络适配器提取包,并将其保存到硬盘上. 访问底层网络适配器需要提升的权限,因此和底层网卡抓包的功能被封装在dumpcap中,这是Wireshark中唯一需要特权执行的程序,代码的其他 ...

  10. JavaScript里的Date 对象属性及对象方法--实现简单的日历

    上网搜索"js 日历插件"就会出来各种效果的功能丰富的日历插件,很多都可以下载源码,然后根据各自的需求对源码进行修改就可以直接用了. 但今天讲的不是如何使用这些插件,而是讲如何实现 ...