1、必须安装nodejs 注意:安装nodejs稳定版本
2、安装cnpm:用cnpm替代npm
安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
3、用yarn替代npm
yarn的安装:
第一种方法:参考官方文档https://yarn.bootcss.com/
第二种方法:cnpm install -g yarn 或者 npm install -g yarn
搭建React开发环境的第一种方法(老-推荐):
https://reactjs.org/docs/create-a-new-react-app.html
1. 再次提醒:必须要安装nodejs 注意:安装nodejs稳定版本
2. 安装脚手架工具 (单文件组件项目生成工具) 只需要安装一次
npm install -g create-react-app / cnpm install -g create-react-app
3. 创建项目 (可能创建多次)
找到项目要创建的目录:
create-react-app reactdemo
4. cd 到项目里面
cd reactdemo
npm start 或者 yarn start运行项目
npm run build 或者 yarn build 生成项目(个人喜欢用yarn)
一般更多需要关注的在于src文件,assets可以放css文件、图片等素材,component就是自定义的组件,比如这里我定义了Home和Result组件,这两个组件最终在src下的App.js根组件中挂载,这里的两个组件其实是我写的两个页面,并且在根组件App.js中实现路由跳转。
React有两种写组件的方式,一种用class extends…来写,另一种用函数式来写,本人较亲耐于函数式,简洁,并且没有this指向的问题,也就是React 后更新的hook特性,第一种写组件的方式中,初始化变量需要:this.setState(),而hook特性带来了useState(),写法更加简洁,容易理解。
const [variable,setVariable] = useState(variable0)
setVarible(newVariable)
,即可改变变量状态import React, {
Component } from 'react'
const Home = () => {
return (
)
}
export default Home
import React, {
Component } from 'react'
import {
Upload, message, Button } from 'antd'
import {
UploadOutlined } from '@ant-design/icons'
...
const Home = () => {
const props = {
name: 'file',//name得看接口需求,name与接口需要的name一致
action: '/test/upload/file',//接口路径
data: {
file} ,//接口需要的参数,无参数可以不写
multiple: false,//支持多个文件
showUploadList: true,//展示文件列表
headers: {
// "Content-Type": "multipart/form-data"
},
}
return (
...
<Upload {
...props}
fileList={
file}
onChange={
onChange}
>
<Button type="Link" shape="round" size="large">
<UploadOutlined /> Select file
</Button>
</Upload>
)
}
export default Home
upload传文件这里有几个坑:
http-proxy-middleware
npm install http-proxy-middleware --save
或yarn add http-proxy-middleware --save
const {
createProxyMiddleware} = require('http-proxy-middleware')
module.exports = function (app) {
// proxy第一个参数为要代理的路由
// 第二参数中target为代理后的请求网址,changeOrigin是否改变请求头,其他参数请看官网
app.use(createProxyMiddleware('/test', {
target: 'http://xxx.xx.xxx.xxx...', # 这里就是你要跨到的服务器接口地址
changeOrigin: true
}))
}
yarn start 或 npm start
),接着在upload中action位置写上接口后面的地址,不能写全部地址了,得写相对地址,否则会报跨域错误:"Content-Type": "multipart/form-data"
反而传不过去(基础薄弱,原因不知),但是注释掉后,能正常把文件传到后端,一段时间后在浏览器network里面可以接收到response:Nginx反向代理
我演示的是win服务器的部署,其他的可能略有区别,首先安装Nginx,直接去官网下载安装即可,win下启动cmd
(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可
在服务器输入:http://localhost:80,有Nginx界面则启动成成功。
配置之前,需要先把React项目打包,打包很简单,直接yarn build
,会在项目目录生成一个build文件:
然后将项目复制到你的win服务器上,在Nginx安装目录下有一个Nginx的conf文件,主要改一下前端端口以及root地址(也就是build文件夹所在地址):
server {
listen 80;
server_name smartcite;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root C:\samart_cite_fronted\project_pdf2xml\project_pdf2xml\build;
index index.html;
}
listen :设置的端口号
server_name :访问的名字
root :你项目所放的地址
index index.html :你的入口html文件因为是单页应用,所以,是根据路由跳转,为避免出现404,我们需要重写至index.html
nginx开启命令:start nginx
nginx停止命令:nginx -s quit
nginx重启命令:nginx -s reload
Nginx部署过程注意:
windows server部署react项目
server {
listen 80;
server_name localhost;
location / {
root C:\samart_cite_web;
index index.html;
try_files $uri $uri/ /index.html;
}
}
和win大体一致,但是没有防火墙的考虑,这一点比较省心!
/home/smartcite
/home/smartcite
,(如果本地的React项目还没有build包,则要yarn build
这样会生成一个build
包,或者npm nuild
对应生成dst包,一个意思)/etc/nginx/sites-available
里面,有的也可能在/etc/nginx/conf.d
下/usr/sbin
下输入./nginx -s reload
重启nginx服务(只要重新修改了nginx配置,都需要重启)参考博客:
https://blog.csdn.net/wly_er/article/details/82348593
https://www.jb51.net/article/152781.htm