当前位置: 首页 > article >正文

一文大白话讲清楚webpack基本使用——5——babel的配置和使用

文章目录

  • 一文大白话讲清楚webpack基本使用——5——babel的配置和使用
  • 1. 建议按文章顺序从头看,一看到底,豁然开朗
  • 2. babel-loader的配置和使用
    • 2.1 针对ES6的babel-loader
    • 2.2 针对typescript的babel-loader
    • 2.3 babel配置文件

一文大白话讲清楚webpack基本使用——5——babel的配置和使用

1. 建议按文章顺序从头看,一看到底,豁然开朗

  • 第一篇:
  • 一文大白话讲清楚啥是个webpack
  • 第二篇:
  • 一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建
  • 第三篇
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • 第四篇
  • 一文大白话讲清楚webpack基本使用——3——图像相关loader的配置和使用
  • 第五篇
  • 一文大白话讲清楚webpack基本使用——4——vue-loader的配置和使用
  • 然后看本篇,vue-Loader的配置和使用

2. babel-loader的配置和使用

2.1 针对ES6的babel-loader

  • webpack虽然内置了对js模块的处理,但是不会对ES6+代码进行转换,导致低版本浏览器不支持,所以我们需要babel-loader来转换es6+代码

  • 我们打开modulejs里面的index.js,看到我们之前使用了箭头函数,这是ES6的新特性,所以webpack无法处理
    在这里插入图片描述

  • 所以我们打开打包后的js文件,会发现还是以箭头函数的方式被打包了
    在这里插入图片描述

  • 这是我们所不希望的,我们希望能转化成ES5 的代码

  • 所以我们引入babel-loader来处理

  • 先安装babel-loader和babel

npm install @babel/core @babel/preset-env babel-loader
  • 然后配置webpack,所有的js文件交给babel-loader去处理
 {
    test:/\.js$/,
        use:{
        loader:'babel-loader',
            options:{
            presets:['@babel/preset-env']//Babel提前预设好的一系列Babel转换ES6+语法的插件组合,默认会根据目标浏览器来决定使用哪些插件
        }
    }
}

在这里插入图片描述

  • 然后我们重新构建
npm run build
  • 构建完打开最后打包的js文件,看看箭头函数是否被转换
    在这里插入图片描述

  • 发现已经被转成了ES5代码了

  • 完美

  • 当然,我们配置presets时也可以直接指定浏览器,比如我们可以这样配置

 {
    test:/\.js$/,
        use:{
        loader:'babel-loader',
            options:{
            presets:[
                '@babel/preset-env'//Babel提前预设好的一系列Babel转换ES6+语法的插件组合,默认会根据目标浏览器来决定使用哪些插件
                {
                    target:['chrome 88']
                }
            ]
            
        }
    }
}

2.2 针对typescript的babel-loader

  • 首先处理Typescript时,babel-loader和ts-loader都可以实现,但是有很大的差异
差异项babel-loaderts-loader
是否依赖Typescript Complier不依赖,不需要安装Typescript依赖,需要安装Typescript
是否进行类型校验不校验,及时类型错误也能打包会进行类型检验,如果类型错误将打包失败
是否支持Promise等新特性支持,通过@babel/preset-env添加对应的Polyfill不支持
  • 所有到底用哪个loader,取决于我们的需求是什么,根据项目来进行判断
  • 我们在modulejs下面新建一个index.ts,里面定第一个字符串
const str:string='I`m typescript'
export {str}

在这里插入图片描述

  • 然后在main.js里面引入str,并挂载到index.html页面上
    在这里插入图片描述

  • 然后我们需要配饰webpack.config.js关于ts文件的规则,这里需要用到@babel/preset-typescript我们安装一下

npm install @babel/preset-typescript
  • 然后配置ts规则
{
    test:/\.ts$/,
    use:{
        loader:'babel-loader',
        options:{
            presets:['@babel/preset-typescript']//通过typescript预设来处理typescript
        }
    }
}

在这里插入图片描述

  • 然后重新构建
npm run build
  • 打包完成后在浏览器运行index.html
    在这里插入图片描述

  • 到这里typescript打包完成

2.3 babel配置文件

  • 我们可以将babel的配置文件单独放到独立的文件中,babel-loader会自动加载这些配置文件进行组合
  • 单独的文件——babel.config.js
  • 我们在根目录下新建一个babel.config.js
module.exports={
    presets:['@babel/preset-typescript']
}

在这里插入图片描述

  • 这样我们在webpack.config.js里面设置ts规则的时候就可以只写test和use就可以了
    在这里插入图片描述

  • 我们再次构建验证,发现没有任何一点问题


http://www.kler.cn/a/516621.html

相关文章:

  • linux系统中的 scp的使用方法
  • 制作动态菜单
  • 电路研究9.1.1——合宙 Air780EP 模组外围线路
  • “推理”(Inference)在深度学习和机器学习的语境
  • 大华前端开发面试题及参考答案 (下)
  • 第7章:Python TDD测试Franc对象乘法功能
  • 高效简洁的个人网站解决方案:Hugo建站与远程访问详细教程
  • 消息队列篇--原理篇--RocketMQ和Kafka对比分析
  • K8S中Pod控制器之CronJob(CJ)控制器
  • 汇编语法及相关指令
  • 学生管理系统C++版(简单版)详解
  • 东南亚静态住宅IP的优势与应用
  • 关于java实现word(docx、doc)转html的解决方案
  • ubuntu 布暑python项目
  • 数据统计–图形报表(day11)
  • c语言中的数组(上)
  • FTP 与 LFTP 命令的介绍及常用功能
  • Java数字转换工具类-NumberUtil
  • 华为支付接入规范
  • flutter入门系列教程<一>:tab组件的灵活妙用
  • 【玩转全栈】----Django模板语法、请求与响应
  • C++并发编程之提高C++多线程应用可测试性的思想和方法
  • 谷歌泰坦:Transformer之后的AI时代?
  • xss漏洞简单复习
  • DataStream API
  • mysql直接在sql中将分组查询出来的多个属性的list,拼接成一个字符串,最后的结果只要一个大的字符串