Webpack搭建React开发环境

Webpack搭建React开发环境

1、React环境搭建

实现React开发的三种方式:

(1)使用CDN的方式

<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<!-- 生产环境中不建议使用 -->
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

(2)使用React脚手架工具(推荐)

# 安装脚手架
npm install -g create-react-app
# 创建项目
create-react-app  myapp
# 启动项目
npm start

(3)使用Webpack构建工具

# 步骤
// 1. 安装Node、NPM......
// 2. 安装webpack工具......
// 3. 安装babel......
// 4. 创建配置文件......
// 5. 创建项目目录结构......
// 6. 配置webpack.config.js和package.json......
// 7. 搭建本地服务......

2、为什么要使用 webpack ?

  • 解耦需要:
    • 使用SPA(Single-page Application,单页面应用)开发大型项目时,解决模块之间的解耦和维护问题;
  • 前端工程化需要:
    • 前端开发逐渐向工程化演进,理解前端框架的项目构建的流程(如React、Vue、Angular);
  • 项目扩展需要:
    • 理解Webpack核心概念(如Babel加载器、Plugin插件),便于项目协同开发与项目整合;
  • 面试需要:
    • 进入一线互联网公司的必备技能;

3、Webpack搭建React开发环境步骤

首先要有node环境,进入Node.js的官网,选择对应系统下载安装包。安装node后集成了npm管理器

设置默认npm使用淘宝镜像

npm config set registry https://registry.npm.taobao.org

安装cnpm包,安装成功后npm命令更换为cnpm命令

npm install -g cnpm --registry=https://registry.npm.taobao.org
## 安装成功之后,直接像使用npm一样使用cnpm即可,例如:安装某个包就变成了
cnpm i packageName

设置环境变量

创建项目文件夹,以 myapp 文件为例,该文件即为项目根目录。打开命令提示符,执行:

cd myapp

依次完成以下操作:

第一步 安装模块

创建package.json文件

# 手动配置
npm init
# 自动配置
npm init -y

安装react模块

# 安装react
cnpm install react --save
# 安装react-dom
cnpm install react-dom --save

安装webpack工具

# 安装webpack和webpack-cli
cnpm install webpack webpack-cli --save-dev

安装babel相关

# 安装 babel和react相关加载器
cnpm i babel-loader @babel/core @babel/preset-env @babel/preset-react -D

安装css加载器

cnpm i css-loader style-loader -D

安装HTML插件

cnpm i html-webpack-plugin -D

PS:【依赖安装到 开发环境与生产环境的区别】

  • 开发环境,即项目的编码阶段需要的依赖,上线后不需要引用,例如:webpack构建工具、babel加载器等,使用 --save-S 命令安装;

  • 生产环境,项目上线后开始正式提供对外服务的阶段仍然需要依赖支持,例如:jQuery库、路由等,使用 --save-dev-D 命令安装;

第二步 创建目录结构

项目的目录结构为:

myapp

​ – public [静态资源文件目录]

​ – src [ 项目源文件目录 ]

​ – dist [ 打包文件目录 ]

​ – webpack.config.js [ webpack配置文件 ]

​ – package.json [ NPM包管理配置文件 ]

​ – node_modules [ 项目中的依赖存放目录 ]

在public目录下,创建index.html,该文件为项目的默认首页

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><title>Hello React Webpack</title></head><body><div id="root"></div></body>
</html>

在src目录下,创建index.js,该文件为项目的入口文件

import React from 'react'
import ReactDOM from 'react-dom'ReactDOM.render(<div>Hello React!</div>,document.getElementById('root'));

在项目的根目录下创建webpack.config.js配置文件,依次完成以下配置:

(1)配置入口(entry)

module.exports = {entry:'./src/index.js'
}

(2)配置出口(output)

const path = require('path');
module.exports = {// ...output: {path: path.resolve(__dirname, 'dist'),filename: 'main.js'}
}

(3)配置加载器(loader)

module.exports = {// ...module:{rules:[{test: /\.css$/,use:['style-loader','css-loader']},{test: /\.jsx?$/, // jsx/js文件的正则exclude: /node_modules/, // 排除 node_modules 文件夹use:{// loader 是 babelloader: 'babel-loader',options: {// babel 转义的配置选项babelrc: false,presets: [// 添加 preset-reactrequire.resolve('@babel/preset-react'),[require.resolve('@babel/preset-env'), {modules: false}]],cacheDirectory: true}}}]}
}

(4)配置插件(plugin)

const HtmlWebPackPlugin = require('html-webpack-plugin');
module.exports = {// ...plugins:[new HtmlWebPackPlugin({template: 'public/index.html',filename: 'index.html',inject: true})]
}

plugins中的inject属性有四个值true | ‘head’ | ‘body’ | false,默认是body,即将脚本插入到body的最底部

执行打包命令

npx webpack --mode development

配置 npm run build 命令执行打包操作:

//在 package.json 文件添加 build 项
{"scripts": {"build": "webpack --mode production"}
}

执行打包命令:

npm run build

第三步 搭建本地服务

安装依赖

cnpm i webpack-dev-server -D

在webpack.config.js文件中配置本地服务相关信息

module.exports = {// ...devServer: {contentBase: './dist',host: 'localhost',port: 3000}
}

在package.json文件中配置启动命令

{"scripts": {"dev": "webpack-dev-server"}
}

执行启动服务命令

npm run dev

注意:

如果服务器启动后报错,说明webpack和webpack-dev-server版本不兼容,可以降配置安装

webpack-dev-server@2.9.7

webpack@3.11.0

html-webpack-plugin@3.2.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安心加科技打造多维度全场景式安心加物联平台

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 公司介绍 广东省安心加科技有限公司是一家专注于地产行业智能化和物联网领域&#xff0…

MySQL 索引分析除了 EXPLAIN 还有什么方法?

作者 | adrninistrat0r责编 | 夕颜出品 | CSDN&#xff08;ID:CSDNnews&#xff09;前言对于非数据库开发人员而言&#xff0c;难以对MySQL源码进行分析或调试&#xff0c;接近一个黑盒&#xff0c;但MySQL提供了一些命令及系统状态变量&#xff0c;可对索引及其他内容进行分析…

阿里云助力宁波市教育局“甬上云校”停课不停学

突如其来的新冠病毒肺炎疫情&#xff0c;让全国的师生正在经历着一个非常特殊的寒假。 疫情当下&#xff0c;教育部明确要求2020年春季延期开学&#xff0c;并且鼓励利用互联网和信息化教育资源确保学生“停课不停学”。虽然远离一线战场&#xff0c;各地教育部门和学校也迅速…

Elasticsearch7.15.2 报java.lang.NoClassDefFoundError: org/elasticsearch/client/Cancellable的解决方案

文章目录1. 现象2. 分析定位3. 解决方案1. 现象 2. 分析定位 原因&#xff1a;查看依赖项的级联关系&#xff0c;发现rest-high-level-client这个7.15.2包,的引用了6.4.3的rest-client。 3. 解决方案 直接把rest-client包的7.15.2版本的依赖项加进来就好了。 springboot集成…

全流分析取证:高级威胁哪里跑?!

网络安全的趋势和技术选择 网络空间安全涉及的安全响应&#xff0c;是指在安全事件发生后&#xff0c;通过人工或者自动化的方式&#xff0c;能采取相应的措施&#xff0c;降低安全事件带来的危害和影响&#xff1b;从启明星辰发布的近几年安全态势观察报告来看&#xff0c;安…

仅用1天,为湖北黄冈中学搭建直播课堂!

一场突如其来的新冠病毒肺炎疫情&#xff0c;让在无数在备考阶段的高三学子陷入苦恼。为了阻断疫情蔓延&#xff0c;减少人员聚集&#xff0c;教育部下发“关于2020年春季延期开学的通知”。距离高考仅剩120多天&#xff0c;虽停课&#xff0c;不能停学。 1天开通直播 助力黄冈…

疫情攻坚战“分秒必争” 宜搭免费开放疫情相关应用

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 抗击疫情如救水火&#xff0c;必须与时间赛跑&#xff01;1月29日&#xff0c;浙江省卫生…

kibana 后台启动

进入到kibana 安装目录 执行命令 nohup bin/kibana &

万师傅使用云产品,上手简单、开箱即用、省去运维烦恼

云栖号案例库&#xff1a;【点击查看更多上云案例】 不知道怎么上云&#xff1f;看云栖号案例库&#xff0c;了解不同行业不同发展阶段的上云方案&#xff0c;助力你上云决策&#xff01; 整体架构 每当我在思考技术选型方案的时候&#xff0c;翻翻阿里云的官网&#xff0c;总…

《2019~2020网络安全态势观察报告》重磅发布!

【导读】过去一年多&#xff0c;各种 APT 攻击事件、勒索挖矿事件&#xff0c;数据泄露事件&#xff0c;漏洞攻击事件仍然不绝于耳。从 ATT&CK 模型框架的兴起到实战化攻防环境的建立&#xff0c;从反序列化漏洞的攻防博弈到 VPN 漏洞的异军突起&#xff0c;从不断“APT”化…

Canal 1.1.5 启动报错:caching_sha2_password Auth failed

文章目录1. 现象2. 分析定位3. 解决方案效果图1. 现象 java.io.IOException: caching_sha2_password Auth failedat com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.negotiate(MysqlConnector.java:260) ~[canal.parse.driver-1.1.5.jar:na]at com.alibaba.otter.…

安装axios及其基础用法

1、基本用法 安装 cnpm i axios --save在 main.js 中引入 axios import axios from axios Vue.prototype.$axios axios在组件中使用 axios <script>export default {mounted(){this.$axios.get(/goods.json).then(res>{console.log(res.data);})}} </script&g…

MaxCompute2.0 助力众安保险快速成长

摘要&#xff1a;2017云栖大会阿里云大数据计算服务&#xff08;MaxCompute&#xff09;专场&#xff0c;众安保险数据总监王超群带来MaxCompute助力众安保险方面的演讲。本文主要从MaxCompute优势开始谈起&#xff0c;进而谈及大数据能够为公司运营带来的好处&#xff0c;最后…

Elasticsearch7.15.2 mysql8.0.26 logstash-input-jdbc 数据全量索引构建

文章目录一、基础软件安装1. 安装mysql2. Elasticsearch7.15.2 安装部署3. kibana 安装部署4. logstash-input-jdbc 安装部署二、数据库准备2.1. 创建数据库2.2. 表结构初始化2.3. 数据初始化三、logstash 配置mysql3.1. 创建目录3.2. 上传mysql驱动3.3. 创建jdbc.conf3.4. 创建…

优酷背后的大数据秘密:资源弹性,可支撑EB级存储

在本文中优酷数据中台的数据技术专家门德亮分享了优酷从Hadoop迁移到阿里云MaxCompute后对业务及平台的价值。 本文内容根据演讲视频以及PPT整理而成。 大家好&#xff0c;我是门德亮&#xff0c;现在在优酷数据中台做数据相关的事情。很荣幸&#xff0c;我正好见证了优酷从没…

Python 本身真的有用吗?CSDN要对Python下手了!

Python 作为一种解释型技术脚本语言&#xff0c;越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的技术大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 而作为Python初学者来讲&#xff0c;最大的问题…

immutable.js笔记

Immutable.js原理分析 Immutable Data 就是一旦创建&#xff0c;就不能再被更改的数据。对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象。Immutable 实现的原理是 Persistent Data Structure&#xff08;持久化数据结构&#xff09;&#xff0c;也…

揭秘高德地图如何利用MaxCompute管理海量数据

摘要&#xff1a;随着自媒体的发展&#xff0c;传统媒体面临着巨大的压力和挑战&#xff0c;新华智云运用大数据和人工智能技术&#xff0c;致力于为媒体行业赋能。通过媒体大数据开放平台&#xff0c;将媒体行业全网数据汇总起来&#xff0c;借助平台数据处理能力和算法能力&a…

Elasticsearch7.15.2 mysql8.0.26 logstash-input-jdbc 数据增量索引构建

文章目录一、基础软件安装1. 安装mysql2. Elasticsearch7.15.2 安装部署3. kibana 安装部署4. logstash-input-jdbc 安装部署二、数据库准备2.1. 创建数据库2.2. 表结构初始化2.3. 数据初始化三、logstash 配置mysql3.1. 创建目录3.2. 上传mysql驱动3.3. 创建jdbc.conf3.4. 创建…

为什么说下一个十年的主战场在Serverless?

作者 | 不瞋&#xff0c;阿里云 Serverless 负责人"唯有超越&#xff0c;才能让我们走下去。"这是不瞋在阿里的第十年。从2010 年加入阿里云&#xff0c;不瞋参与了阿里云飞天分布式系统的研发&#xff0c;历任批量计算的架构师、表格存储&#xff08;NoSQL&#xff…