babel是干什么的

es6语法已经出来很多年,但各家游览器对es6的支持各不相同。为了解决这个问题,babel应运而生。

babel支持把es6语法编译成es5,完全兼容各家游览器,避免兼容性问题出现。

配置babel的时候分两种情况

  1. 业务贷款开发
  2. 类库代码开发

why?

babel支持把es6编译成es5,使各家游览器支持。比如es6语法Map、Set。低版本游览器不兼容,需要babel支持。这个时候就用到了@babel/polyfill(垫片,@babel/polyfill使用的时候需要放到业务js代码的最前面),就是重新定义Map方法。

比如 代码

new Map()

babel编译后还是 如上,但是 bable 会在全局定义一个 Map 方法(因为全局定义可能会造成命名污染),如果你是在开发项目业务代码的时候,其实不太用考虑这个问题。但是如果你是在开发类库代码的时候,你的代码可能会被其他的人拿去用,这样就比较危险。

故两种情况配置方法有些许区别!

如下:

业务代码开发

命令行安装babel包

npm install --save-dev babel-loader @babel/core
npm install @babel/preset-env --save-dev

webpack.config.js 配置

module: {
rules: [
{
test: /\.js$/,
    // exclude 排除掉不进行 babel-loader 编译
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
     // 配置项 很多
options: {
presets: ['@babel/preset-env']
}
}
}
]
}

如果配置的babel的配置项很多,全部集中在webpack.config.js不便于代码的查看和管理

故 可以配置 .babelrc (在webpack.config.js同级目录中新建 .babelrc )

// webpack.config.js中
module: {
rules: [
{
test: /\.js$/,
    // exclude 排除掉不进行 babel-loader 编译
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader'
    }
}
]
} //.babelrc中
{
"presets": ["@babel/preset-env", {
    targets: {
      chrome: "67"
    },
    // 这个配置项配置了 说明在入口文件中 会自动的给我们加上 import '@babel/polyfill' 的功能,故在业务代码中我们不需要手动的添加 import '@babel/polyfill'
    useBuiltIns: "usage"
  }]
}

  

组件/类库代码开发(比如开发npm包)

命令行安装依赖包

npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
npm install --save @babel/runtime-corejs2

webpack.config.js

module: {
rules: [
  {
  test: /\.js$/,
      // exclude 排除掉不进行 babel-loader 编译
  exclude: /node_modules/,
  use: {
  loader: 'babel-loader',
       options:{
        "plugins": [
        [
            // 不在全局中定义变量
         "@babel/plugin-transform-runtime",
        {
        "absoluteRuntime": false,
         "corejs": 2,
         "helpers": true,
         "regenerator": true,
         "useESModules": false
        }
        ]
       ]
      }
    }
  }
  ]
}

babel基础配置的更多相关文章

  1. webpack+babel+react+antd技术栈的基础配置

    webpack+babel+react+antd技术栈的基础配置 前段时间使用webpack+babel+react+antd做了一套后台管理系统,刚开始被一大堆的新知识压的喘不过气来,压力挺大的.还 ...

  2. webpack基础以及webpack中babel的配置

    webpack 安装 npm 初始化,控制台输入 npm init -y webpack 安装 npm i webpack webpack-cli -D 新建 webpack.config.js co ...

  3. webpack3.x版本实战案例【基础配置篇】(一)

    本文旨在通过一个一个实战例子来学习webpack如何配置,更加深入的学习webpack在实战项目中如何配置. 我们学习哪些配置呢? [基础配置] 打包JS 编译ES6 编译typeScript 打包公 ...

  4. 深入浅出 webpack 之基础配置篇

    前言 前端工程化经历过很多优秀的工具,例如 Grunt.Gulp.webpack.rollup 等等,每种工具都有自己适用的场景,而现今应用最为广泛的当属 webpack 打包了,因此学习好 webp ...

  5. StackExchange.Redis帮助类解决方案RedisRepository封装(基础配置)

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫,请注明原文地址.http://www.cnblogs.com/tdws/p/5815735.html 写在前面 这不是教程,分享而已,也欢迎园友们多 ...

  6. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  7. Emacs学习心得之 基础配置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础配置 1.前言2.基础配置 一.前言 本篇博文记录了Emacs的一 ...

  8. nginx 的基础配置[转]

    nginx 的基础配置 分类: 工具软件2013-11-13 23:26 11人阅读 评论(0) 收藏 举报   目录(?)[-] 管理配置文件 全局配置 虚拟机server配置 location配置 ...

  9. freeRadius 基础配置及测试

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

随机推荐

  1. C# DataTable转json 时间格式化

    1.NewTonSoft.json public static string DataTableToJson(DataTable dt) { ) { return ""; } el ...

  2. Java开发中的23种设计模式详解(2)结构型

    我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我 ...

  3. 阿里云Linux(Centos7)下搭建SVN服务器

    1,使用yum安装SVN yum -y install subversion 安装完成之后,验证安装结果 svn help 2,新建仓库目录 在/usr/soft目录下面创建一个svn目录,用来作为s ...

  4. SHOW - 显示运行时参数的数值

    SYNOPSIS SHOW name SHOW ALL DESCRIPTION 描述 SHOW 将显示当前运行时参数的数值. 这些变量可以通过 SET 语句来设置,或者通过编辑 postgresql. ...

  5. org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

    原因: 这个问题的解决方案很简单,主要是因为数据库中不存在相关的表或者列. org.springframework.dao.InvalidDataAccessApiUsageException: Pa ...

  6. 爬虫示例--requests-module

    reuqests_test .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { ...

  7. go语言从例子开始之Example9.切片

    Slice 是 Go 中一个关键的数据类型,是一个比数组更加强大的序列接口 package main import "fmt" func main() { 不像数组,slice 的 ...

  8. RecyclerView跳转到指定位置的三种方式

    自从android5.0推出RecyclerView以后,RecyclerView越来越受广大程序员的热爱了!大家都知道RecyclerView的出现目的是为了替代listview和ScrollVie ...

  9. (PASS)PLSQL激活

    注册码: Product Code(产品编号):4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number(序列号):601769 password(口令):xs ...

  10. Sublime Text 3 - there are no packages available for installation 解决方法

    解决方法: 1. 下载一个channel_v3.json ,  提取码: n2vc 2. 进入以下路径的设置界面 3. 添加代码 , 文件路径以各自下载保存路径为准 ( 重启sublime, 搞定 ! ...