Webpack 解析ES6和React

摘要:
Webpack解析ES6Webpack本机识别js,但不识别ES6语法。因此,您需要使用babel加载器和。babelrc配置文件babel preset从一系列babelplugins安装以下npm包npmi@babel / core@7.4.4@babel/preset-env@7.4.4babel-loader@8.0.5-D配置。babelrc文件{“presets”:[“@ba
webpack解析ES6

webpack原生可以识别js,但不能识别ES6语法
因此需要借助babel-loader以及.babelrc配置文件

babel-preset是一系列babel plugin的集合

  1. 安装以下npm包
npm i @babel/core@7.4.4 @babel/preset-env@7.4.4 babel-loader@8.0.5 -D 
  1. 配置.babelrc文件
{
    "presets": [
        "@babel/preset-env"
    ]
}
  1. 配置webpack babel-loader
'use strict';

const path = require('path');

module.exports = {
    // 入口 指定入口文件
    entry: {
        app:'./src/index.js', 
        search:'./src/search.js'
    },
    // 出口 
    output: {
        // 指定输出目录
        path: path.join(__dirname, 'dist'),
        // 指定打包之后的输出文件
        filename: '[name].js'
    },
    // 配置babel解析ES6
    module:{
        rules:[
            {
                test:/.js$/,
                use:'babel-loader'
            }
        ]
    },
    // 生成模式还是开发模式
    mode: 'production'
};
webpack解析react
  1. 安装依赖
npm i react@16.8.6 react-dom@16.8.6  @babel/preset-react@7.0.0 -D
{
  "name": "02beginning",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "build": " webpack "
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.4.4",
    "@babel/preset-env": "^7.4.4",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.5",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "webpack": "^4.31.0",
    "webpack-cli": "^3.3.2"
  }
}

  1. 配置.babelrc
{
    "presets": [
        "@babel/preset-env",
        "@babel/preset-react"
    ]
}
  1. 编写react组件
"use strict"

import React from 'react'
import ReactDOM from 'react-dom'

class Search extends React.Component{
    render(){
        return (
            <div>search text</div>
        )
    }
}

ReactDOM.render(<Search />,document.getElementById('root'))
  1. 将react文件配置到 webpack 入口文件下
'use strict';
const path = require('path');
module.exports = {
    // 入口 指定入口文件
    entry: {
        app:'./src/index.js', 
        search:'./src/search.js',
        reactComp:'./src/react-comp.js'
    },
    // 出口 
    output: {
        // 指定输出目录
        path: path.join(__dirname, 'dist'),
        filename: '[name].js'
    },
    // 配置babel解析ES6
    module:{
        rules:[
            {
                test:/.js$/,
                use:'babel-loader'
            }
        ]
    },
    // 生成模式还是开发模式
    mode: 'production'
};
  1. 执行命令解析
npm run build
  1. 引入打包文件到一个有root文件的html文件中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>


    <div id="root"></div>
    
    <script src="http://t.zoukankan.com/reactComp.js" type="text/javascript"></script>
    
</body>
</html>

相关版本文件

package.json

{
  "name": "02beginning",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "build": " webpack "
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.4.4",
    "@babel/preset-env": "^7.4.4",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.5",
    "css-loader": "^2.1.1",
    "file-loader": "^3.0.1",
    "less": "^3.9.0",
    "less-loader": "^5.0.0",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "style-loader": "^0.23.1",
    "url-loader": "^1.1.2",
    "webpack": "^4.31.0",
    "webpack-cli": "^3.3.2"
  }
}

.babelrc

{
    "presets": [
        "@babel/preset-env",
        "@babel/preset-react"
    ]
}

免责声明:文章转载自《Webpack 解析ES6和React》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇网页仿 Office 2003 的工具条loadrunner乱码问题解决办法下篇

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

相关文章

React (redux store reducers(1个) reducer(1个组件1个 包含多个function函数 ) action(对象) dispatch)(react-redux redux-actions redux-immutable redux-thunk 异步redux )flux

//compose 组成 combine 联合 import {applyMiddleware, createStore, compose, combineReducers} from 'redux'; import { bindActionCreators } from "redux"; import {Provider} from 'react-...

vue 项目按需引入多个ui组件库

在做项目的过程中遇到了公司组件库没有的组件,这个时候需要按需引入elementUI ,同时公司的组件库也是按需引入的,减少项目的体积。话不多说直接上代码: 首先:我们需要借助  babel-plugin-component,npm install babel-plugin-component -D 其次:我们找到我们的 bable.congig.js 来配...

React Native可用的css属性

  React Native的css名称和css有点点不同,有css基础的很快上手  "alignItems",在辅轴的排列方向 flex-start | flex-end | center | stretch  "alignSelf",主容器内元素在辅轴的排列方向,同alignItems有点类似  "backfaceVisibility",  "back...

为什么gulp全局安装后还要本地安装?

webpack、gulp等,全局安装后有些时候还要本地安装 本地安装require不到全局的包,这是node的机制问题,可以运行 npm link webpack将全局链接到本地来 https://www.jianshu.com/p/4585ec653bfb...

基于React Native的58 APP开发实践

React Native在iOS界早就炒的火热了,随着2015年底Android端推出后,一套代码能运行于双平台上,真正拥有了Hybrid框架的所有优势。再加上Native的优秀性能,让越来越多的公司在实际项目中一探究竟。58同城APP发布模块年代久远,一直计划进行重构以适应日益苛刻的用户体验,这个需求与我们在React Native上一探究竟的意愿一碰撞...

webpack4+vue2+axios+vue-router的多页+单页混合应用框架

VUE2的单页应用框架有人分享了,多页应用框架也有人分享了,这里就分享一个单页和多页的混合应用框架吧,初现雏形,还有很多需要优化和改善的地方。。。 结尾有github地址。 项目结构 │ ├─build /* webpack的配置目录 */ │ ├─config.js...