webpack4与babel配合使es6代码可运行于低版本浏览器

摘要:
简单代码类库实用程序。jsconstname='weiqinl'letyear=newDate()。getFullYear()从'/utils'Promise.resolve(year)导出{name,year}(值=>

使用es6+新语法编写代码,可是不能运行于低版本浏览器,需要将语法转换成es5的。那就借助babel7转换,再加上webpack打包,实现代码的转换。

转换包括两部分:语法和API

let、const这些是新语法。

new promise()等这些是新API。

简单代码

类库 utils.js

const name = 'weiqinl'

let year = new Date().getFullYear()

export {  name,  year }

index.js

import _ from 'lodash'

import {  name,  year } from './utils'

Promise.resolve(year).then(value => {

  console.log(`${name} - ${value} - ${_.add(1, 2)}`)

})

babel转换

安装babel编译器和对应的运行时环境

npm install -D @babel/core @babel/preset-env @babel/plugin-transform-runtime @babel/polyfill babel-loader

并新建.babelrc文件,里面可以配置很多东西,内容为:

{

  "presets": [

    ["@babel/preset-env", {

      "useBuiltIns": "usage",

      "modules": false

    }]

  ],

  "plugins": [

    [

      "@babel/plugin-transform-runtime", {

        "corejs": false,

        "helpers": false,

        "regenerator": false,

        "useESModules": false

      }

    ]

  ],

  "comments": false

}

webpack构建

webpack4,可以零配置构建项目,那是因为它的很多配置值都默认了。在这里,我们需要自己配置。
首先安装webpack

npm i webpack webpack-cli -D

然后创建一个webpack.config.js文件

const path = require('path');

module.exports = {

  mode: "production",

  entry: ['@babel/polyfill', './src/index.js'],

  output: {

    path: path.resolve(__dirname, 'dist'),

    filename: '[name].bundle.js'

  },

  module: {

    rules: [{

      test: /.js$/,

      include: [

        path.resolve(__dirname, 'src')

      ],

      exclude: /(node_modules|bower_components)/,

      loader: "babel-loader",

    }]

  }

}

使用

webpack构建打包好的js文件,我们将其引入到html文件。

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>webpack-babel-es6</title>

</head>

<body>

  webpack构建由babel转码的es6语法,支持es6语法和API<br />

  请查看浏览器控制台

  <script src="./dist/main.bundle.js"></script>

</body>

</html>

运行该html,可以看到控制台有内容输出weiqinl - 2018 - 3

最后的目录结构:

目录结构

可以git查看源码https://github.com/weiqinl/demo/tree/master/webpack-bable-es6

免责声明:文章转载自《webpack4与babel配合使es6代码可运行于低版本浏览器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇怎么去掉织梦网站首页带的index.html/index.phpjava(计算机)常见加密算法详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

日志服务:NLog

ylbtech-日志服务:NLog NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。 NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输...

Ubuntu 如何更换阿里源

#进入源地址 cd /etc/apt #备份源文件 sudo cp sources.list sources.list.bak #编辑 sudo vim /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse...

硬盘杀手!Windows版Redis疯狂占用C盘空间!

关键词:Redis占用C盘,Windows Redis,64位Windows版Redis疯狂占用C盘空间,redis启动后创建RedisQFolk_****.dat文件。redis-server.exe redis.windows.conf。分页文件,AppDataLocalRedis,heapdir。maxheap ,转移到其它盘。系统盘被占用。没空间...

linux的自启动服务脚本的(/etc/rc.d/init.d或者其链接/etc/init.d)

转载地址:http://www.cnblogs.com/diyunpeng/archive/2009/11/11/1600886.html Linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d/etc/rc.d/rc1.d/e...

使用eclipse将maven项目部署tomcat, 以及如何实现热部署

在以前,我每次部署项目的时候都是关闭tomcat并开启tomcat,完成代码的编译并部署到tomcat上,现在想想,感觉当时怎么不去了解去如何部署到tomcat有几种方式,elispe 创建的web项目部署到tomcat的原理。若是了解了,估计很多时间都不会停留在关闭和开启tomcat上吧,当然这里也是说说而已。 目前,我是想把maven项目web工程部署...

爱奇艺VIP云解析接口

以下奉上爱奇艺VIP MP4地址解析接口,支持三种调用方式,满足广告站长的需求。API:http://api.addzsw.com/aiqiyi?sign=1&id={tvid}例子:http://api.addzsw.com/aiqiyi?sign=1&id=493240900API:http://api.addzsw.com/aiqiy...