webpack+react

用的webpack4.x 按照官网的前期配置,搭建一个雏形,由于技术栈是react,然后还想ES6等语法,这就不可避免遇到Babel的安装问题,但是Babel官方升级之后的配置会有不兼容问题,先介绍一下Babel:

Babel 是一个 JavaScript 编译器
Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情:

语法转换
通过 Polyfill 方式在目标环境中添加缺失的特性 (通过 @babel/polyfill 模块)
源码转换 (codemods)
更多! (查看这些 视频 获得启发)
以上来自中文官网介绍

为了快速开发,首先记录一下package.json

{
  "name": "appfirst",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "start": "webpack-dev-server --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/preset-react": "^7.0.0",
    "babel-preset-env": "^7.0.0-beta.3",
    "clean-webpack-plugin": "^3.0.0",
    "css-loader": "^0.28.11",
    "eslint": "^6.0.1",
    "eslint-friendly-formatter": "^4.0.1",
    "eslint-loader": "^2.1.2",
    "eslint-plugin-html": "^6.0.0",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "node-sass": "^4.8.3",
    "react": "^16.3.1",
    "react-dom": "^16.3.1",
    "sass-loader": "^7.0.1",
    "semantic-ui-css": "^2.3.1",
    "semantic-ui-react": "^0.79.1",
    "style-loader": "^0.20.3",
    "url-loader": "^1.0.1",
    "webpack": "^4.35.0",
    "webpack-cli": "^3.3.5",
    "webpack-dev-server": "^3.7.2"
  },
  "dependencies": {
    "@babel/core": "^7.4.5",
    "@babel/preset-env": "^7.4.5",
    "babel-loader": "^8.0.0-beta.0",
    "babel-preset-latest": "^6.24.1",
    "lodash": "^4.17.11",
    "bootstrap": "^3.3.7",
    "normalize.css": "^8.0.0",
    "react-bootstrap": "^0.32.1"
  },
  "main": ".eslintrc.js",
  "description": ""
}

以上包含了Eslint、CSS、File解析器

再记录一下webpack.config.js文件信息

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

module.exports = {
  // entry: './src/index.js',
  entry: {
    app: "./src/index.js",
  },
  output: {
    // filename: 'bundle.js',
    filename: "[name].bundle.js",
    path: path.resolve(__dirname, "dist")
  },
  // 展开编译之后的文件
  devtool: "inline-source-map",
  // 服务器自己刷新
  devServer: {
    contentBase: "./dist"
  },
  plugins: [
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
      template: './public/index.html', //指定模板路径
      filename: 'index.html', //指定文件名
    })
  ],
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          "style-loader",
          "css-loader"
        ]
      },
      {
        test: /\.less$/,
        use: [
          "style-loader",
          "less-loader"
        ]
      },
      {
        test: /\.(png|svg|jpg|gif)$/,
        use: [
          "file-loader"
        ]
      },
      {
        test: /\.(woff|woff2|eot|ttf|otf)$/,
        use: [
          "file-loader"
        ]
      },
      {
        test: /\.js$/,
        loader: "eslint-loader",
        enforce: "pre",
        include: [path.resolve(__dirname, "src")], // 指定检查的目录
        options: { // 这里的配置项参数将会被传递到 eslint 的 CLIEngine 
          formatter: require("eslint-friendly-formatter") // 指定错误报告的格式规范
        }
      },
      {
        test: /\.m?js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['env', '@babel/preset-react']
          }
        }
      },
    ]
  }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
redux、reactwebpack是目前非常流行的前端技术,它们可以帮助我们快速构建复杂的单页面应用。而热加载是一种非常方便的开发工具,能够在我们修改代码后自动重新编译并刷新页面,极大地提高了开发效率。 然而,IE8是一个老旧的浏览器,在支持新技术的同时也存在很多兼容性问题。要使我们的应用在IE8上运行,我们需要进行一些特殊的处理。 下面是一些可能有用的技巧: 1. 使用babel进行ES6代码转换:redux和react都使用了一些ES6语法,而IE8并不支持这些语法。我们可以使用babel将ES6代码转换为ES5代码,从而在IE8上运行。同时,我们还需要使用babel-polyfill来提供一些ES6新特性的支持。 2. 使用es5-shim来提供一些ES5新特性的支持:IE8对ES5的支持也不完整,我们可以使用es5-shim来提供一些ES5新特性的支持。 3. 使用es6-shim来提供一些ES6新特性的支持:IE8对ES6的支持更加有限,我们可以使用es6-shim来提供一些ES6新特性的支持。 4. 使用webpack的兼容性插件:webpack提供了一些兼容性插件,可以自动处理一些兼容性问题,比如babel-loader、es3ify-webpack-plugin等。 5. 使用react-ie8来提供react在IE8上的支持:react-ie8是一个为react提供在IE8上支持的库,可以很方便地解决一些兼容性问题。 6. 使用redux-ie8来提供redux在IE8上的支持:redux-ie8是一个为redux提供在IE8上支持的库,可以很方便地解决一些兼容性问题。 总之,要使我们的应用在IE8上运行,需要进行一些特殊的处理,包括使用babel进行ES6代码转换、使用es5-shim和es6-shim来提供一些新特性的支持、使用webpack的兼容性插件、使用react-ie8和redux-ie8来提供在IE8上的支持等。这些技巧需要不断地更新和完善,以适应不断变化的前端技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值