webpack-demos

webpack-Babel编译ES6

浏览器对Es6兼容性不是很好,所以需要把Es6编译成Es5

  • 第一步需要用npm下载如下包
babel-loader  babel-core
  • 第二步创建.babelrc配置文件,里边添加{ “presets”: [“env”},添加完之后需要再下载 babel-preset-env包

  • 第三步创建webpack配置文件webpack.config.js,配置文件里代码如下

var path = require('path');

module.exports = {
  entry: path.resolve(__dirname, 'src/index.js'),
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: 'babel'
      }
    ]
  }
};
  • 第四步在创建入口文件index.js里面写Es6语句

为了展示浏览器中的运行效果,来添加一个 index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <script src="./dist/bundle.js"></script>
</body>
</html>
  • 第五步编译执行,在终端运行命令如下
webpack

webpack的配置文件webpack.config.js

配置文件里要指定入口文件和出口文件,module里写下载编译的包的配置

module.exports={
  entry:'./es6.js',   //指定入口文件
  output:{
    path:'build',      //出口文件所在文件夹
    filename:'bundle.js'  //出口文件
  },
  devtool:'eval' ,//找到源代码错误
  resolve:{                   //解决文件后缀省略
    extensions: [".js",".css",".jpg",".png"]
  },
  module: {
    rules: [
      {
        test: /\.js$/,    //编译.js文件
        exclude: /node_modules/,
        use: "babel-loader"  //用babel-loader包编译
       }
    ]
  }
}

webpack打捆Es6模块

Webpack 可以支持的模块格式不局限于 ES6 模块 ,但是由于我们写 React 项目主要用 ES6 来写,所以这一集就来演示一下用 Webpack 打捆 ES6 模块。

模块的命名导出和默认导出

我们这一集的重点并不是讲解模块的基础知识。但是还是顺便提一下 ES6 模块可以支持命名导出和默认导出两种形式。

src/index.js 如下:

import  i from './a';
import { j, k } from './a';

console.log(i);
console.log(j);
console.log(k);

src/a.js 如下:

const i = 1;
const j = 2;
const k = 3;

export { j, k };

export default i;

执行 webpack 命令,可以把 index.js 和 a.js 打捆成一个 bundle.js 文件,浏览器中运行,chrome console 中会打印出