webpack的js编译

webpack来来回回学了几次了。

这一次获得了新的东西。

 

编译es6.

需要的loader:

npm i babel-loader @babel/core -D

但是在js文件中写es6语法(比如箭头函数),编译出来的结果依然维持着箭头函数本身。没有对es6语法进行编译。

这是因为,没有告知webpack,需要将js编译成es6,es5还是其它。

所以需要安装:

cnpm i @babel/preset-env -D

 

webpack.config.js的配置:

针对浏览器为目标:

{
    	 	test:/\.js$/,
    	 	use:{
                 loader:'babel-loader',
                 options:{
                     presets:[
                         ['@babel/preset-env',{
                             targets:{
                                browsers:['>1%']//市场占有率>1%
                             }
                         }]
                     ]
                 }
    	 	}
    	 },

 针对node版本的配置

{

  "presets": [

    ["@babel/preset-env", {

      "targets": {

        "node": "8.9.3"
      }      
    }]
  ]
}

针对特定浏览器配置:

{

  "presets": [

    ["@babel/preset-env", {

      "targets": {

        "browsers": "ie 11"

      }      

    }]

  ]

}

在上面的babel配置中,babel只是将一些es6,es7-8的语法转换成符合目标的js代码,但是如果我们使用一些特性或方法,比如Generator, Set, 或者一些方法。babel并不能转换为低版本浏览器识别的代码。

babel-polifill插件

简单的说,polifill就是一个垫片,提供了一些低版本es标准对高级特性的实现。babel-polifill生成一个全局对象,一般用于项目开发,它的全局垫片,是将所有es6需要编译的对象用es5实现了。所以,打包出来的体积很大。

使用polifill的方法如下:npm install --save babel-polifill

在入口文件app.js中引入:

import 'babel-polyfill' 

 或者在webpack.config.js的入口文件中:

entry:{

app:['babel-polyfill','./app.js']

}

@babel/plugin-transform-runtime生成一个局部对象,按需重写,不会特别增大体积。一般用于框架开发。

也可以在.babelrc中配置:

将options中配置的放入该文件中:

presets:[
                         ['@babel/preset-env',{
                             targets:{
                                browsers:['>1%']//市场占有率>1%
                             }
                         }]
                     ]

语法糖的编译:

cnpm i typescript ts-loader -D

module.exports = {

    entry: {

        app: './app.js'

    },

 

    output: {

        filename: '[name].[hash:2].js'

    },

    module:{

        rules:[

         {

            test:/\.js$/,

            use:{

                 loader:'babel-loader',

                 options:{

                     presets:[

                         ['@babel/preset-env',{

                             targets:{

                                browsers:['>1%']

                             }

                         }]

                     ],

                     "plugins": ["@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties"]

                 }

            }

         },

         {

            test:/\.tsx?$/,

            use:'ts-loader'

         }

        ]

    }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值