# webpack-react **Repository Path**: yooyeLearning/webpack-react ## Basic Information - **Project Name**: webpack-react - **Description**: 使用webpack为React搭建运行环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-02-25 - **Last Updated**: 2022-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 学习目标 > 使用webpack搭建React运行环境 ## webpack介绍 > 项目开发打包工具 [文档](https://www.webpackjs.com/) 1. 浏览器不能直接识别模块化代码 ---webpack---整合为浏览器可识别代码 2. 浏览器对ES6以上语法、.vue、.jsx ----webpack--- (HTML、css、js、img) 3. 可以为项目开发提供比较便利的开发环境 ## webpack打包基本流程 1. 不使用webpack的时候,通过模块化定义js代码 ``` Uncaught SyntaxError: Cannot use import statement outside a module ``` 2. 使用webpack打包index.js ## 使用webpack流程 1. 安装 ``` yarn init yarn add webpack webpack-cli --dev ``` 2. 新建webpack.config.js并添加配置项 > 必须在项目根目录下 ``` var path = require('path') module.exports = { entry:'./src/index.js', //指定被打包文件 output:{ path:path.resolve(__dirname,'dist'), filename:'bundle.js' } } ``` 3. 在package.json中添加scripts可执行命令 ``` "scripts":{ "build":"webpack --config webpack.config.js" }, ``` 4. 执行打包命令,验证打包结果 ``` yarn build ``` ## webpack的插件机制 > 每个插件都会负责解决某一类问题 1. 插件来源 + webpack官方插件 + 第三方开发的npm插件 2. html-webpack-plugin插件的使用 + 安装 yarn add html-webpack-plugin + 引入配置 + 重新打包,查看打包结果 ## Loader > 参考 step02分支 > webpack本身在打包过程中,并不能完全识别所有的新语法(如:React) 面向法国外贸公司--翻译官---中法 webpack----Loader ----React&js 0. 在项目打包入口文件index.js中,写入一段react代码 1. 不使用Loader,直接打包React代码 ``` You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders | | ReactDOM.render( >

这是React代码

, | document.getElementById('root') | ); ``` 2. 使用babel-loader协助webpack编译react语法 ## Babel的使用 > 参考 step02分支 > Babel 是一个 JavaScript 编译器。 [文档](https://www.babeljs.cn/) 预设 翻译官(法语、中文语法、英文) babel预设(ES6语法预设、react语法预设) 1. 安装babel核心库 ``` yarn add babel-loader @babel/core --dev ``` 2. 在webpack中配置loader [文档](https://www.babeljs.cn/setup#installation) > 在webpack.config.js中追加一个module配置项 ``` ...其他配置项, module: { rules: [ //loader的编译规则 { test: /\.m?js$/, //指定被编译文件类型 exclude: /node_modules/, //排除不需要编辑的文件目录 use: { loader: "babel-loader", //指定编译使用的loader options: { presets: ['@babel/preset-react'] //指定loader编译需要的预设 } } } ] } ``` 3. 安装react预设包 > 协助babel翻译react语法 ``` yarn add @babel/preset-react --dev ``` 4. 在项目根目录新建babel.config.json文件,指定babel相关配置 ``` { "presets": ["@babel/preset-react"] } ``` ## devServer > 启动本地开发服务 > 自动打包、自动打开浏览器、监听代码变化并刷新浏览器 [文档](https://www.webpackjs.com/configuration/dev-server/) 1. 安装 ``` yarn add webpack-dev-server --dev ``` 2. 在webpack.config.js中配置devServer ``` devServer:{ port:8080, open:true } ``` 3. 在package.json中新增scripts可执行命令 ``` "scripts": { "build": "webpack --config webpack.config.js", "dev": "webpack serve --open --config webpack.config.js" }, ``` 4. 执行yarn dev命令,启动项目并预览 ## 任务 1. 体验webpack的基本打包流程 2. webpack插件机制plugins 3. Loader预编译 + 什么是Loader? + Loader与plugins之间有什么区别? + bable-loader如何使用? 4. devServer的配置使用 5. 将React项目代码迁移至webpack环境,并解决代码编译问题 ## 在webpack环境中,运行React项目 1. webpack无法解析css样式文件 ``` You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders > body { | margin: 0; | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', @ ./src/index.js 3:0-21 ``` 2. 安装css-loader解决该问题 ``` yarn add style-loader css-loader --dev ``` 3. 在webpack.config.js中新增css-loader配置 > webpack.config.js / module / rules # React is not defined问题解决 [参考连接](https://stackoverflow.com/questions/32070303/uncaught-referenceerror-react-is-not-defined) 在webpack.config.js中新增一个plugins ``` new webpack.ProvidePlugin({ //解决React is undefined问题 "React": "react", }), ```