React项目搭建与部署

article/2025/7/29 3:11:52

转载自:https://www.cnblogs.com/jackson-zhangjiang/p/10095892.html#commentform

React项目搭建与部署

一,介绍与需求

1.1,介绍

1.1.1,React简介

    • React 是一个用于构建用户界面的 JAVASCRIPT 库。
    • React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。
    • React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。
    • React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。

1.1.2,React特点

    1. 声明式设计:React采用声明范式,可以轻松描述应用。
    2. 高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。
    3. 灵活:React可以与已知的库或框架很好地配合。
    4. JSX:JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
    5. 组件:通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
    6. 单向响应的数据流:React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

1.2,需求

二,环境搭建与项目框架

2.1,环境搭建

1,安装NODE,

2,安装webpack

1  npm install -g webpack 

3,配置淘宝镜像

使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm

1 npm install -g cnpm --registry=https://registry.npm.taobao.org
2 npm config set registry https://registry.npm.taobao.org

4,安装create-react-app

1 cnpm install -g create-react-app

5,创建项目

1 create-react-app my-project//创建项目
2 cd my-project/ 

6,本地服务启动

1 npm run start//启动本地server用于开发

2.2,项目框架 

|-node_modules             //项目包

|-public             //一般用于存放静态文件,打包时会被直接复制到输出目录(./buidle)

|-src               //项目源代码
  |  |-asserts         //用于存放静态资源,打包时会经过 webpack 处理

  |  |-components     //组件 存放 React 组件,一般是该项目公用的无状态组件
  |  |-containers          //页面视图
  |  |-routes         //路由 存放需要 connect model 的路由组件

  |  |-App.js         //入口文件

  |  |-index         //注册路由与服务

  |  |- serviceWorker        //开发配置

|-package.json      //包管理代码

|-.gitignore //Git忽略文件

三,常用集成与配置

3.1,路由集成与配置使用

React Router 是一个基于 React 之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时保持页面与 URL 间的同步。react-router

1 npm install react-router@4.3.1 --save

  1. Router下面只能包含一个盒子标签,类似这里的div。 
  2. Link代表一个链接,在html界面中会解析成a标签。作为一个链接,必须有一个to属性,代表链接地址。这个链接地址是一个相对路径。 
  3. Route,是下面要说的组件,有一个path属性和一个组件属性(可以是component、render等等)。
  4. 复制代码

     1  render(){2         return (3             <Router>4                 <div>5                     <ul>6                         <li><Link to="/home">首页</Link></li>7                         <li><Link to="/other">其他页</Link></li>8                     </ul>9                     <Route path="/home" component={Home}/>
    10                     <Route path="/other" component={Other}/>
    11                 </div>
    12             </Router>
    13         )
    14 }

    复制代码

路由支持嵌套,代码如下:

复制代码

 1 const Root = () => (2    <div>3       <Switch>4          <Route5             path="/"6             render={props => (7                <App>8                   <Switch>9                      <Route path="/" exact component={Home} />
10                      <Route path="/home" component={Home} />
11                      <Route path="/test" component={Test} />
12                      <Route path="/message/:id/:TestId" component={Message} />
13                       {/*路由不正确时,默认跳回home页面*/}
14                      <Route render={() => <Redirect to="/" />} />
15                   </Switch>
16                </App>
17             )}
18          />
19       </Switch>
20    </div>
21 );
22  
23 export default Root;

复制代码

3.2,redux集成与配置使用

React是单向数据流,所以有些情况下单单依赖React自身无法实现组件之间的通信,故此需要redux

需要安装Redux相关依赖,由于不同版本之间可能存在兼容性问题,所以安装的时候最好制定版本:

1 npm install redux@3.7.2 --save
2 npm install redux-thunk@2.1.0 --save
3 npm install react-redux@5.0.6 --save

然后就可以在项目中引入redux了,可以像如下方式组织目录结构:

3.3,fetch集成与配置使用

关于请求数据有很多种方式,这里采用的是fetch

1 npm install fetch --save

可以简单封装一下,如下:

复制代码

 1 import 'whatwg-fetch'2 import loggerService from './logger'3 4 let notAuthorizedCounter = 0;5 let fetchService = {6     fetch: (url, method, header, body) => {7         if (!header) {8             header = {}9         }
10 
11         return fetchService[method.toLowerCase()](url, header, body).catch(function(exception) {
12             loggerService.log('fetchService failed:', exception);
13 
14             // token过期,重新获取token并发起请求
15             if (exception.code === '401' || exception.code === '403') {
16                 notAuthorizedCounter++;
17                 // 最多重试3次
18                 if (notAuthorizedCounter > 2) {
19                     notAuthorizedCounter = 0;
20                     loggerService.warn("401 or 403 received. Max attemps reached.");
21                     return;
22                 } else {
23                     return fetchService.fetch(url, method, header, body);
24                 }
25             }
26         });
27     },
28     get: (url, header) => {
29         return fetch(url, {
30             method: 'GET',
31             headers: header
32         }).then((response) => {
33             return response.json();
34         });
35     },
36     post: (url, header, body) => {
37         header['Content-Type'] = 'application/json';
38         return fetch(url, {
39             method: 'POST',
40             headers: header,
41             body: JSON.stringify(body)
42         }).then((response) => {
43             return response.json();
44         });
45     }
46 };
47 export default fetchService;

复制代码

3.4,UI组件集成与配置使用

基于React的UI组件在这里推荐两个,一个是蚂蚁金服的Ant Design;另外一个是Material-UI。

两个都很不错,这里使用的是Ant Design。

1 npm install antd --save

请注意 react >= 16.6.3和react-dom >= 16.6.3 是对等依赖

1 npm install @material-ui/core

3.5,国际化方案

采用的是常用的react-intl

1 npm install react-intl --save

四,项目部署与问题

4.1,项目部署

首先对项目进行打包。

1 npm run build

通过以下命令可以在本地环境运行打包后的项目。

1 serve -s build

4.2,问题与注意事项

PropTypes 的使用

JavaScript 是弱类型语言,所以请尽量声明 propTypes 对 props 进行校验,以减少不必要的问题。

复制代码

 1 import React from 'react';2 import PropTypes from 'prop-types'3 4 class PropTypesList extends React.Component {5     static propTypes = {//校验6        title: PropTypes.string,7     };8     static defaultProps = {//设置默认值9         title:"PropTypes 的应用实例"//添加默认值
10     };
11     constructor(props) {
12         super(props);
13         this.state = {
14 
15         }
16     }
17     render() {
18         const { title} = this.props
19         return (
20             <div>
21                 <p>{title}</p>
22             </div>
23         );
24     }
25 }
26 
27 export default PropTypesList ;

复制代码

内置的 prop type 有:

    1. PropTypes.array
    2. PropTypes.bool
    3. PropTypes.func
    4. PropTypes.number
    5. PropTypes.object
    6. PropTypes.string
    7. PropTypes.node,// 字符串,DOM 元素或包含这些类型的数组。
    8. PropTypes.element, // React 元素
    9. PropTypes.instanceOf(Message), // 用 JS 的 instanceof 操作符声明 prop 为类的实例。
    10. PropTypes.oneOf(['News', 'Photos']), // 用 enum 来限制 prop 只接受指定的值。
    11. PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.instanceOf(Message) ]), // 指定的多个对象类型中的一个
    12. PropTypes.arrayOf(PropTypes.number),// 指定类型组成的数组
    13. PropTypes.objectOf(PropTypes.number),  // 指定类型的属性构成的对象
    14. PropTypes.shape({ color: PropTypes.string, fontSize:PropTypes.number }), // 特定形状参数的对象
    15. PropTypes.func.isRequired, // 不可空的任意类型
    16. PropTypes.any.isRequired,// 以后任意类型加上 `isRequired` 来使 prop 不可空。
    17. customProp: function(props, propName, componentName) { if (!/matchme/.test(props[propName])) { return new Error('Validation failed!'); } } },// 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接 // 使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。

http://chatgpt.dhexx.cn/article/FsBOjKl4.shtml

相关文章

React项目搭建与Echars工具使用

React项目搭建与Echars工具使用 一、React项目快速搭建1、新建文件夹2、直接在对应目录输入 cmd &#xff0c;打开终端 3、执行指令完成React应用建立 二、React项目结构和分析1、删除多于文件&#xff0c;使得结构清晰2、删除剩余文件中多于的引用内容3、使用vs code打开终端&…

【React】搭建React项目

最近自己在尝试搭建react项目&#xff0c;其实react项目搭建没有想象中的那么复杂&#xff0c;我们只需要使用一个命令把React架子搭建好&#xff0c;其他的依赖可以根据具体的需求去安装&#xff0c;比如AntDesignMobile的UI框架&#xff0c;执行npm install antd-mobile --sa…

react入门:利用脚手架搭建react项目

步骤1&#xff1a;安装node,查看node和npm版本 node --version npm --version步骤2&#xff1a;全局安装create-react-app npm install -g create-react-app步骤3&#xff1a;查看create-react-app版本 npm info react步骤4&#xff1a;创建react项目 create-react-app rea…

react打包服务器文件,react项目搭建及打包发布

一、创建项目 1.npm install -g create-react-app&#xff1b; 2.create-react-app my-app(my-app为项目名字)&#xff1b; 这样一个react项目就初始化好了&#xff0c;运行npm start启动项目可查看&#xff0c;接下来可以配置路由。 二、多页面路由 1.安装React Router React …

React项目搭建及基本介绍

React的项目搭建 项目搭建比较简单&#xff0c;先安装react脚手架&#xff0c;然后创建项目就完事了 第一步安装node&#xff08;基本环境&#xff09; 第二步安装webpack&#xff08;基本环境&#xff09; 直接敲命令运行即可 npm install -g webpack 第三步配置淘宝镜像 …

从0到0.1:最简单的React项目搭建

本文原创地址:http://blog.csdn.net/zhou_xiao_cheng/article/details/54677689,未经博主允许不得转载。 自从React火遍大江南北后,相信很多人都在加入到React队伍的路上,但是如何从零开始搭建一个React项目呢?本文将为大家介绍如何快速简单地搭建一个新的React项目。 在…

React + Ts项目搭建

一、安装reactts npx create-react-app my-app --template typescript二、安装eslint代码检测 一个好的项目必须有一个规范&#xff0c;所以得安装eslint代码检测 yarn add eslint npx eslint --initeslint初始化后会出现三个项目&#xff0c;根据项目而定 1、使用什么样的…

搭建react项目 搭建ts react项目 使用vite搭建react项目

创建react 项目 注意&#xff1a; 网上有一些生成react 的方法&#xff0c;但是也有一些是过时的。 使用官方脚手架creact-react-app 全局安装 creact-react-app 这个脚手架 这个脚手架和 vue 的 vue-cli是一样的&#xff0c;都可以全局安装&#xff0c;命令&#xff1a; npm…

搭建React项目,超简单教程

步骤 前言一、安装create-react-app二、使用步骤1.创建项目2.运行项目3.文件目录 总结 前言 最近公司闲的无聊&#xff0c;刚好之前学的React&#xff0c;至今还未搭建过一个React项目&#xff0c;借这空闲时间来练练手&#xff0c;从0开始搭建React项目&#xff0c;以此来记录…

React项目框架搭建

一、.前置环境安装 确认已安装安装Node.js “在项目开发中需要使用NPM包管理工具&#xff0c;而NPM运行在node.js上面&#xff0c; 所以需要先安装node.js。通过npm可以很方便的安装、共享、分发代码&#xff0c;管理项目依赖关系&#xff1b;通过运行“npm install 包名”几乎…

react项目的搭建与启动

react项目的搭建与启动 准备工作&#xff08;环境的搭建&#xff09;react项目创建与启动常用插件安装Sass/Scss安装 准备工作&#xff08;环境的搭建&#xff09; &#xff08;已经准备好的这一步可以跳过&#xff09; 1.安装Node.js&#xff08;安装一直选择下一步就行&…

react项目搭建(基础学习笔记)

react项目搭建&#xff08;基础学习&#xff09; 安装 局部安装 1、npm init -y或yarn init -y初始化项目 2、全局安装creact-react-app。使用npm install -D create-react-app或yarn add -D create-react-app。使用npx create-react-app --version查看安装的版本号。 3、…

React项目搭建的基本流程

一&#xff0c;版本号 React不同版本之间语法差别还是挺大的&#xff0c;这里放上我项目中的版本号仅供参考 二&#xff0c;项目目录搭建 通过脚手架创建项目&#xff1a; npx-create-react-app 项目名称 1.基本的目录结构 先进行项目初始化&#xff0c;删除项目原始的样式…

react项目搭建--相对较全面

前言&#xff1a;简单记录一下第一次搭建react项目框架&#xff0c;之前只是在已搭建好的框架内去开发实现项目&#xff0c;没有自己动手搭建过&#xff0c;亲自动手实际操作&#xff0c;还遇到挺多问题的。参考了不少文献&#xff0c;帮助我解决并完成整个项目搭建的文献&…

从零开始搭建react项目(一)

自学react有一段时间了&#xff0c;官网文档基础的看了一遍&#xff0c;然后便把之前公司做的一个vue项目用react搭建了下&#xff0c;顺便整理下一些知识点。 项目大概效果&#xff1a; 一、利用create-react-app搭建项目 1、全局安装create-react-app&#xff0c;执行&…

React项目搭建

一、创建项目 1、cmd切换到目标文件夹 2、初始化项目 npx create-react-app init-mobile 3、切换到对应目录根据提示启动项目 二、配置项目文件目录 调整项目中src目录结构如下&#xff1a; 三、引入组件库antd-mobile 1、安装 npm install --save antd-mobilenext 2、在…

思科路由器开启DNS解析

一、DNS服务端、DNS中继 R2(config)# interface FastEthernet0/0 R2(config-if)# ip address 192.168.1.254 255.255.255.0 R2(config)# interface FastEthernet0/1 R2(config-if)# ip address 22.1.1.2 255.255.255.0 R2(config)# router ospf 1 R2(config-router)# net…

IIS DNS服务器搭建

1——IIS&#xff08;因特网信息服务&#xff09;&#xff0c;IIS意味着你能发布网页&#xff0c;在没有配置服务器之前就用IP访问。步骤步骤 开始---》控制面板---》添加或删除程序---》双击应用程序服务器---》选择IIS、控制台 我这里&#xff0c;顺便双击了网络服务---》添加…

Wireshark实验 - DNS

Wireshark实验 - DNS 官方英文文档&#xff1a;Wireshark_Intro_v6.01.pdf Wireshark 实验: DNS v6.01 《计算机网络&#xff1a;自顶向下方法&#xff08;第6版&#xff09;》补充材料&#xff0c;J.F. Kurose and K.W. Ross “不闻不若闻之&#xff0c;闻之不若见之&#…

内网DNS重要使用作用

DNS服务简介&#xff1a; DNS(Domain Name System–域名系统),是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。是一个应用层的协议DNS使用TCP和UDP端口53。 DNS是一个分布式数据库,命名系统采用层次的逻辑结构…