前言

最近真的都是在瞎学,看到自己不是很明白的东西,都喜欢自己手动去敲1到3遍(晚上下班的时候咯),

瞧,React  基于webpack 搭建,react 官方有一套手脚架工具,我自己也搭建过确实挺好使的,适合初学者学习学习。

但是自己还是想手动来搭建,嗯 于是写一篇不用手脚架搭建的博客,供自己加强记忆,哈哈哈 开始咯

创建项目目录

新建 react-webpack 项目

cd react-webpack

初始化 npm 环境

npm init   //一路回车

package.json 文件下 其实就是记录依赖相关的 加载库

{
"name": "react-webpack",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "yf",
"license": "ISC"
}

依赖安装

npm i  react -D

npm i   react-dom -D

npm i  webpack  -D

npm  i  webpack-cli -D  (因为webpak 到 4版本以上 就需要这个 ,不然会报错)

创建目录

创建 src ,build 2个目录

在 src 下创建 webpack 打包入口文件   index.js

在创建webpack 配置文件

const path = require('path') // 引入‘path’,为了在这里使用绝对路径,避免相对路径在不同系统时出现不必要的问题
const publicPath = '/'; module.exports = {
// 应用入口
entry: {
app: path.join(__dirname, '../src/index.js') // index.js作为打包的入口
},
// 输出目录
output: {
filename: '[name].[hash:8].js',//name代表entry对应的名字; hash代表 整个app打包完成后根据内容加上hash。一旦整个文件内容变更,hash就会变化
path: path.join(__dirname, '../dist'), // 打包好之后的输出路径
publicPath: publicPath, //态资源文件引用时的路径
},
};

修改package.json 下

添加如下代码:

    "build": "webpack --mode production"

需要引入 babel-loader 来编译 es6

npm i babel-core babel-loader babel-preset-env -D

npm install babel babel-cli  -D

npm install babel-preset-react  babel-preset-es2015 -D

{
test: /\.(js|jsx)$/, //使用loader的目标文件。这里是.js
use: {
loader: 'babel-loader',
options: {
presets: ["env", "react"] //['@babel/preset-react']
},
},
exclude: [
path.join(__dirname, '../node_modules') // 由于node_modules都是编译过的文件,这里我们不让babel去处理其下面的js文件
]
},

在项目根目录下创建 babel 的配置文件 .babelrc:

{
"presets": [
["es2015", {"loose": true}],
"react"
]
}

执行 npm run build

你的第一个打包就在dist 文件下了

在使用   html-webpack-plugin

webpack  可以根据你的配置生成你想要的文件 html

npm  i   html-webpack-plugin - D

const HTMLPlugin = require('html-webpack-plugin')

plugins: [
new HTMLPlugin({
filename: 'index.html', //制定的文件,默认
template:'index.html' //制定html生成使用的模板文件
}) // 生成一个html页面,同时在webpack编译的时候。把我们所生成的entry都注入到这个html页面中,路径都是根据我们output配置的来走的。 ]

在 你的 index.html ,写这样

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app"></div>
</body>
</html>

写第一个 React 应用

import React from 'react';
import ReactDOM from 'react-dom'; export default class HelloReact extends React.Component{
constructor(props) {
super(props);
} render(){
return( <div>Hello React</div>);
}
} ReactDOM.render(<HelloReact />, document.getElementById('app'));

development 模式下启动服务器并实时刷新 webpack-dev-server

npm i webpack-dev-server --save-dev

   "start": "webpack-dev-server --mode development --open",
"build": "webpack --mode development --config build/webpack.config.js"

在index.js 文件下引入

<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello React</title>
</head>
<body>
<div id="root"></div>
<script type="text/javascript" src="./main.e09b122c.js"></script>
</body>
</html>

然后再编译: npm run build

npm run start

用浏览器打开 //http://localhost:8080,就可以看到 Hello React 出现了

webpack 搭建React(手动搭建)的更多相关文章

  1. 基于webpack的React项目搭建(一)

    前言 工欲善其事,必先利其器.为了更好的学习React,我们先简要的把开发环境搭建起来.本文主要介绍使用webpack搭建React项目,如果你对React或es6的基础语法还不了解,建议先去学习学习 ...

  2. 基于webpack的React项目搭建(三)

    前言 搭建好前文的开发环境,已经可以进行开发.然而实际的项目中,不同环境有着不同的构建需求.这里就将开发环境和生产环境的配置单独提取出来,并做一些简单的优化. 分离不同环境公有配置 不同环境虽然有不同 ...

  3. 基于webpack的React项目搭建(二)

    前言 前面我们已经搭建了基础环境,现在将开发环境更完善一些. devtool 在开发的过程,我们会经常调试,so,为了方便我们在chrome中调试源代码,需要更改webpack.config.js,然 ...

  4. react手动搭建解析

    1.创建项目名<react-progect> ->项目文件下创建package.json文件 ->项目下执行命令:cnpm initcnpm i webpack webpack ...

  5. 基于webpack的react开发环境搭建新手教程

    最近学习react-webpack项目搭建,找到一篇我认为不错的博客,跟着学习了一番,写得很详细很好,本篇博客纯属记录总结,要看更详细的搭建过程及解析,请戳: 基于webpack的React项目搭建( ...

  6. 手动搭建的react环境中,关于图片引入的问题

    react手动搭建的环境,require引进来图片不显示,网页src显示[object module] 解决方案 (1)import引进图片 import anli from './img/anli. ...

  7. React 系列文章(1): npm 手动搭建React 运行实例 (新手必看)

    摘 要 刚接触React 开发, 在摸索中构建react 运行环境,总会遇到各种坑:本文,将用最短时间解决webpack+react 环境搭建问题. 1.如果你还没有React基础 看这里. 2.如果 ...

  8. 详解 Webpack+Babel+React 开发环境的搭建

    1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等) ...

  9. 使用 webpack 搭建 React 项目

    简评:相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用,当有特殊需求,需要修改 eject 出来的 we ...

  10. react项目搭建及webpack配置

    1,配置webpack npm install -g webpack                       webpack的cli环境 npm install -g webpack-dev-se ...

随机推荐

  1. 部署php程序报错解决---TP框架

    1.TP框架中 出现如下错误: 访问网站 http://192.168.0.204/ STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/51620d75af91aa7 ...

  2. Opencv中copyTo()函数的使用方法

    在Mat矩阵类的成员函数中copyTo(roi , mask)函数是非常有用的一个函数,尤其是后面的mask可以实现蒙版的功能,我们用几个实例来说明它的作用.我们要注意mask的数据类型,必须是CV_ ...

  3. [转载]jsp上传文件

    JSP 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图像文件或任何文档. 本章节我们使用 Servlet 来处理文件上传,使用到的文件有: uplo ...

  4. GET 和 POST 区别?网上多数答案都是错的!

    最近在看<HTTP权威指南>这本书,对HTTP协议有了更深一层的了解. 在我们面试过程中关于HTTP协议有两个经典的面试题: 1. 谈谈HTTP中GET与POST的区别. 2. 在浏览器中 ...

  5. python 并发编程 多线程 Thread对象的其他属性或方法

    介绍 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. threading模块提供的一些方法: ...

  6. bi的tableau

    参考: 官网: https://help.tableau.com/current/server-linux/zh-cn/get_started_server.htm 可视化分析最佳做法: 实用指南 h ...

  7. MyEclipse 2013 破解

    本文链接:https://blog.csdn.net/Jayliue/article/details/97414181 1.运行cracker.jar 用 cd 命令找到 cracker.jar所在目 ...

  8. hadoop-mapreduce 详解

    mapreduce 完整流程解析 1. 在客户端启动一个 job: hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar -file ...

  9. php开发环境推荐使用

    万丈高楼平地起,好用得环境才能建立宏伟大厦,php开发环境推荐使用 1,自己安装 lamp 环境 linux+apache+mysql+php 2,自己安装 lnmp 环境 linux+nginx+m ...

  10. P4304 [TJOI2013]攻击装置

    传送门 看到棋盘先黑白染色冷静一下 然后发现...攻击的时候同种颜色不会相互攻击 这样就是个网络流经典套路了,关于这个套路我以前好像写过几题,那边有解释一下:传送门 #include<iostr ...