react获取全局_react学习笔记

2023-10-28

一、开发

个人之前也粗略看过react的文档,但是程序员最怕的就是没有项目实操,看完后一段时间就全忘了,但是现在市面上react的使用又很多(我太难了)。最近因为疫情只能呆在家里,刚好利用这段时间搞一搞。当然也是粗略的搞,做完一个大屏展示后,发现react上手确实比vue要难点。react没有vue一样的模板语法,react更接近原生js的操作,而且配置项也比较多。

这篇文章把我开发中遇到的一些坑记录下来,方便以后查询

1、创建项目

直接利用react的脚手架进行创建,这里有两种方式:

如果你本地没有全局安装create-react-app,需要用npx

npx create-react-app 项目名

如果你本地全局安装了,就可以直接使用

create-react-app 项目名

个人建议先在本地全局安装create-react-app命令,因为使用npx安装的时候,是直接从服务器上去获取的,不是很稳定;本地安装后,要稍微快点。

2、项目目录结构

利用create-react-app创建项目后,就会生成如图的目录结构(此图借用):

可以根据个人的习惯灵活组织项目结构,如加入路由、redux等。

3、使用css预编译

个人偏向less,但react默认不支持less,所以需要配置less-loader,但是我把所有的目录看了一遍,发现不知道在什么地方配置(要死了),后面百度了下,发现**create-react-app创建的项目默认是没有config目录的,需要执行npm run eject才能暴露出来。(**尴尬)

npm run eject

然后打开config目录中的webpack.config.js进行修改

具体修改哪些地方可以百度下,配置起来还是比较麻烦的,所以对新手不是那么友好。

4、本地运行

本地运行很方便,直接输入npm start命令就会开启一个本地服务器,并自动打开浏览器,react本地服务器默认端口3000,如果端口被占用,就会随机分配一个端口:

因为每次启动的端口都会被随机,不是很方便,因此你可以修改固定的端口。react要修改默认端口,需要修改scripts目录中的start.js,同样create-react-app创建的项目默认是没有scripts目录的,如果要生成scripts目录,同样需要执行npm run eject命令。执行完命令后才会暴露出这个目录,然后找到start.js里面的端口配置:

修改完成后重新执行npm start,就会在指定端口启动

二、线上部署

线上部署的时候遇到的问题就比较头痛了,每台服务器的情况不一样,你的问题也许别人没遇到过,别人给的答案可能根本就不能解决你的问题,只能按实际情况来。

1、服务器环境安装

首先确保你的服务器上安装了node,怎么安装可以网上找下,有很详细的文章说明,当然要求你懂点linux命令。

2、安装依赖

将本地处理好的代码放到服务器上,这里记得执行npm install命令来安装依赖,在项目的目录中执行npm install命令,node会根据package.json中的内容来安装依赖。

3、编译

这一步也不会有什么问题,因为服务器上是不能直接用npm start来运行,涉及到一些资源的路径问题。所以需要先执行npm run build命令来编译文件。编译成功后会生成一个build目录,里面就是编译过后的文件:

4、运行

运行分两种方式,一种是把build目录拷贝到nginx对应的目录中,或者用nginx代理到build目录,这中方式比较简单;第二种方式是用serve -s build来启动服务,然后用nginx代理到react服务,这里我遇到了问题:

安装了serve命令后,执行serve -s build时提示命令不可用

这个问题困扰了整整一个上午,网上查资料有几种说法,有说需要设置package.json中的homepage,我照着设置了,但是任然无法解决;有说是因为node版本太低的原因,所以我想升级node版本,于是我安装了n命令,结果发现n命令也无法使用。

到这里我打开明白了不是node的原因,问题应该在服务器上,终于我找到了一篇文章说是因为node的环境变量问题,需要修改/etc/profile文件

vim /etc/profile

然后在文件最后加上

export PATH="$PATH:/usr/local/nodejs/bin"

/usr/local/nodejs/bin是你的nodejs安装目录,然后执行让变量生效的命令

source /etc/profile

然后重新安装serve命令

npm install -g serve

成功后,执行

serve -s build

就可以正常启动了

但是,这个时候你不太好访问,需要在nginx中添加代理,找到nginx的安装目录,然后找到nginx.conf文件添加代理:

location / { 
    proxy http://127.0.0.1:5500; 
}

到这里就皆大欢喜了,页面跑起来了!当然,如果你也是这么做的,但是任然有问题也不要灰心,可以仔细找找问题。~~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react获取全局_react学习笔记 的相关文章

  • VSCode Remote-SSH (Windows)

    1 VSCode 安装 VSCode 2 安装扩展 Remote SSH Getting started Follow the step by step tutorial or if you have a simple SSH host s
  • Canny边缘检测算法原理及其VC实现详解(一)

    目录 1 边缘检测原理及步骤 2 Canny边缘检测算法原理 2 1 对原始图像进行灰度化 2 2 对图像进行高斯滤波 2 3 用一阶偏导的有限差分来计算梯度的幅值和方向 2 4 对梯度幅值进行非极大值抑制 2 5 用双阈值算法检测和连接边
  • jsp下拉框级联查询以及java代码实现

    需求描述 我们在开发过程中 很多页面查询 新增修改页面的下拉 需要通过一个下拉框的值 确定另一个下拉的值 典型的就是 选择年级 另一个下拉需要展示对应的班级 选择了班级 需要展示对应的学生 下面是存放地方 建筑物 级联查询建筑物与房间的例子
  • 《二叉搜索树OJ》

    文章目录 1 根据二叉树创建字符串 https leetcode cn problems construct string from binary tree 2 二叉树的层序遍历 https leetcode cn problems bin
  • v4l2框架API详解

    v4l2是linux内核中视频设备驱动框架 主要为了上层访问视频提供统一得标准接口 用户空间系统调用 open write read 内核空间 video device gt v4l2 device gt v4l2 subdev gt se
  • 【Windows系统】磁盘、Partition和Volume的联系与区别

    1 磁盘 Disk 磁盘 以下摘自微软 磁盘设备和分区 Win32 apps Microsoft Learn 硬盘由一组堆积的盘片组成 其中每个盘片的数据都以电磁方式存储在同心圆或 轨道中 每个盘片都有两个头 一个在盘片的两侧 在磁盘旋转时
  • ubuntu16安装新软件之后无法看到运行中的新软件

    安装新软件后 在启动器上点击新软件图标后 有小圆圈转动 看不到新软件界面 解决方法 系统设置 硬件显示 勾选 镜像显示 M 提醒 可能会限制分辨率选项 点击 应用 按钮 但字体模糊 解决方案 ctrl alt t打开命令行模式 xrandr
  • php yii2模块,Yii2模块自定义模块目录

    请教一下各位 yii2的模块创建后 比如如下的forum模块 官方的标准是如下目录结构 请问可以在该模块下手动创建一个目录么 比如common目录 如果可以的话调用该目录里的类文件与Yii1 1中的components一样么 现在想把该模块
  • Integer和int及String的总结

    Integer和int及String的总结 秉承着总结发表是最好的记忆 我把之前遇到的问题在这里总结和大家分享一下 希望大家共同进步 一 Integer和int 首先说下自动拆装箱 基本数据类型转换为包装类型的过程叫装箱 反之则是拆箱 其中
  • matlab 利用while循环计算平均值和方差

    一 该程序是用来测输入数据的平均值和方差的 公式 二 项目流程 1 State the problem假定所有测量数为正数或者0 计算这一系列测量数的平均值和方差 假定我们预先不知道有多少测量数据被录入 一个负数标志着测量数据输入结束 2
  • 网络层重点协议-IP协议(结构分析)

    IP协议数据报格式 一 4位版本号 用来表示IP协议的版本 现有的IP协议只有两个版本IPv4和IPv6 二 4位首部长度 IP协议数据报报头的长度 三 8位服务类型 3位优先权字段 已经弃用 4位TOS字段 和1位保留 字段 必须置为0
  • 实验4

    一 实验目的 1 掌握DPCM编解码系统的基本原理 2 初步掌握实验用C C Python等语言编程实现DPCM 编码器 并分析其压缩效率 二 实验内容 1 DPCM编解码原理 DPCM是差分预测编码调制的缩写 是比较典型的预测编码系统 在
  • 基于SPI机制和DataX插件热加载破坏双亲委派的思考

    在开始阅读之前请先思考以下两个问题 并希望您能再接下来的文章中找到答案 1 如果我自己实现了一个新的java lang String类 并通过UrlClassLoader加载使用该类 能否覆盖JDK中的 java lang String 2
  • 五、Eureka服务注册、续约、剔除、下线源码分析

    Eureka 概念的理解 1 服务的注册 当项目启动时 eureka 的客户端 就会向 eureka server 发送自己的元数据 原始数据 运行的 ip 端口 port 健康的状态监控等 因为使用的是 http ResuFul 请求风格
  • vmlinuz/vmlinux、Image、zImage与uImage的区别

    前言 内核镜像和其他的镜像并没有本质上的区别 都是用同一套交叉编译工具链来生成的 内核有这么多不同类型的镜像是为了满足各种启动方式 本质上和其他镜像都是一样的 只是在此基础上做了修改 生成镜像的过程 1 源代码经过编译链接变成elf格式的可
  • QT : 屏蔽qDebug调试信息

    DEFINES QT NO WARNING OUTPUT DEFINES QT NO DEBUG OUTPUT C Qt Qt5 7 0 5 7 msvc2013 include QtCore qlogging h cpp view pla
  • (转)[Unity3D]关于Assets资源目录结构管理

    转 Unity3D 关于Assets资源目录结构管理 分享个我们项目常用的目录结构 微调过很多次 最终到了这个版本 个人认为这种管理资源方式是不错的 欢迎探讨各个细节 更新于2013 5 30 Asserts Editor 自写的灵活方便插
  • Hbase导入、导出数据到本地文件

    注意导入 导出操作是在控制台中运行 而不是Hbase Shell中 导出 命令格式是 hbase org apache hadoop hbase mapreduce Export 表名 文件路径 hbase org apache hadoo
  • VS2017出现C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.错误

    VS2017利用fopen和fscanf读取文件时出现以下错误信息 C4996 fopen This function or variable may be unsafe Consider using fopen s instead To

随机推荐