React | React脚手架解析

news2024/11/16 14:22:34

✨ 个人主页:CoderHing

🖥️ React.js专栏:React脚手架解析
🙋‍♂️ 个人简介:一个不甘平庸的平凡人🍬

💫 系列专栏:吊打面试官系列  16天学会Vue  11天学会React  Node专栏

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力!❤️


目录

一、认识脚手架工具

前端工程的复杂化

脚手架是什么?

前端脚手架

二、create-react-app

安装node

三、创建React项目

创建React项目

目录结构分析

了解PWA

四、webpack配置

脚手架中的webpack


一、认识脚手架工具

前端工程的复杂化

  • 如果我们只是开发几个小demo,那么就不需要考虑这些问题:

    • 目录结构如何组织划分,

    • 如何管理文件之间的相互依赖

    • 如何管理第三方模块依赖

    • 项目发布前的压缩,打包

    • 等...

  • 现代的前端项目越来越复杂化

    • 不会再是HTML引入css,引入几个js或者第三方js那么简单

    • 如css可能是less,scss等预处理器,我们需要将其转换成普通的css才能被浏览器解析

    • 如JavaScript代码不再只是编写在几个文件中,而是通过模块化的方式,被组成在成百上千的文件中,需要通过模块化的技术来管理他们之间的相互依赖

    • 如项目需要依赖的第三方库,如何更好的进行管理(版本升级等..)

  • 为了解决上面的问题,我们需要去学习一些工具

    • 如babel,webpack,gulp,配置他们转换规则,打包依赖,热更新等一些内容

    • 脚手架的出现是帮助我们解决这一系列问题的

脚手架是什么?

  • 传统的脚手架指的是建筑学的一种结构:在搭建楼房,建筑物时,临时搭建出来的一个框架

  • 编程中的脚手架(Scaffold),其实是一种工具,帮助我们快速生成项目的工程化结构

    • 每个项目完成的效果不同,但是他们的基本工程化结构是相似的

    • 既然相似,就没必要去从零进行开发,完全可以使用一些工具,帮助我们生产基本的工程化模板

    • 不同的项目,在这个模板的基础上进行项目开发或进行一些配置的简单修改即可

    • 这样也可以间接保证项目基本结构一致,方便后期的维护

  • 脚手架让项目从搭建到开发,再到部署,整个流程变得快速和便捷

前端脚手架

  • 对于现在比较流行的三大框架都有属于自己的脚手架:

    • Vue的脚手架: @vue/cli

    • Angular的脚手架: @angular/cli

    • React的脚手架:create-react-app(CRA)

  • 他们的作用都是帮助我们生成一个通用的目录结构,并且将我们所需的工程环境配置好.

  • 使用这些脚手架需要依赖什么呢?

    • 目前这些脚手架都是使用node编写,并且都是基于webpack的

    • 所以我们必须在电脑上安装node环境

二、create-react-app

安装node

  • React脚手架本身需要依赖node,所以我们需要安装node环境

    • 无论是windows还是mac OS 都可以通过node官网直接进行下载

    • 这里推荐使用LTS版本,是长期支持版本,比较稳定

三、创建React项目

创建React项目

  • 创建React项目的命令如下:

    • 注:项目名称 不能包含大写字母

    • 另外还有更多创建项目的方式,可参考github的Readme

      • create-react-app 项目名称

  • 创建完成之后,进入对应的目录,就可以将项目跑起来:

目录结构分析

  • 我们可以通过VSCode打开项目:

- public
-- favicon.ico // 应用程序顶部的icon图标
-- index.html // 应用的index.html入口文件
-- logo192.png // 在manifest.json中使用
-- logo512.png // 在manifest.json中使用
-- manifest.json // 和web app配置相关
-- robots.txt // 指定搜索引擎可以或者无法爬取哪些文件
- src
-- App.css // App组件相关样式
-- App.js // App组件代码文件
-- App.test.js // App组件的测试代码文件
-- index.css // 全局样式文件
-- index.js // 整个应用程序的入口文件
-- logo.svg // 启动项目所看到的React图标
-- reportWebVitals.js // 发送一些包之类的东西
-- setupTests.js // 测试初始化文件
- package.json // 对整个应用程序的描述:包括应用名称,版本,依赖包,及项目启动,打包等.
- README.md // readme说明文档

了解PWA

  • 整个目录结构都非常好理解,只是有一个PWA相关的概念:

    • PWA全程Progressive Web App渐进式WEB应用

    • 一个PWA应用首先是 一个网页 可以通过Web技术编写出一个网页应用

    • 随后添加上 App ManifestService Worker 来实现PWA的 安装和离线 等功能

    • 这种Web存在的形式,也称之为是Web App

  • PWA解决了哪些问题?

    • 可以添加至主屏幕,点击主屏幕图标可以实现启动动画及隐藏地址栏

    • 实现 离线缓存功能,用户手机没网,依然可以使用一些离线功能

    • 实现 消息推送

    • 等一系列类似于 Native App相关的功能

四、webpack配置

脚手架中的webpack

  • React脚手架默认是基于Webpack来开发的

  • 但是,很奇怪,我们并没有在目录结构中看到任何webpack相关的内容?

    • React脚手架将webpack相关的配置隐藏起来了

  • 如果我们希望看到webpack的配置信息,应该怎么做?

    • 可以执行一个pack.json文件中的一个脚本: "eject": "react-scripts eject"

    • 这个操作是不可逆的,所以执行过程中会给我们提示

    • npm run eject

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

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

相关文章

接口自动化测试数据处理:技术人员必备的一项技能

目录 前言: 1.定义测试数据结构 2.从文件中加载测试数据 3.使用faker库生成随机测试数据 4.在测试用例中使用测试数据 总结: 前言: 在进行接口自动化测试时,测试数据的准备和处理是至关重要的一环。测试数据的准确性和完整性…

heic格式转化jpg的3种好用方法

如果你是使用iOS手机的用户,那么一定对HEIC格式不陌生。虽然HEIC格式可以保存原始图像质量,但它只能在苹果手机或Mac电脑上打开。如果我们想要在安卓或Windows系统上打开,就需要使用转换软件将HEIC格式转换成常用的JPG格式。HEIC 是一种新型的…

设计模式总览 —— 导论

什么是 GOF 对接口编程而不是对实现编程。优先使用对象组合而不是继承。 设计模式的基石 封装继承多态顺序判断循环 设计模式总览 创建型模式(Creational Patterns) 单例(Singleton)模式原型(Prototype&#xff09…

mysql免安装版本(简化版)

1:解压mysql-5.7.26-winx64 2:添加data文件夹 3:添加my.ini文件 内容如下: port "3306" # 设置mysql的安装目录 basedir "D://tools\mysql-5.7.26-winx64\mysql-5.7.26-winx64\" # 设置mysql数据库的数…

推荐几个可以免费使用的ChatGPT工具

在ChatGPT相关API推出之后,各种工具如雨后春笋一般层出不穷,这篇文章就列举一些日常使用到的工具。 工具列表 OpenAI 在线读取任意网页内容包括视频(YouTube),并根据这些内容回答你提出的相关问题或总结相关内容支持…

RabbitMq-接收消息+redis消费者重复接收

在接触RammitMQ时,好多文章都说在配置中设置属性 # rabbitmq 配置 rabbitmq:host: xxx.xxx.xxx.xxxport: xxxxusername: xxxpassword: xxxxxx## 生产端配置# 开启发布确认,就是confirm模式. 消费端ack应答后,才将消息从队列中删除#确认消息已发送到队列(Queue)pub…

算法记录lday3 LinkedList 链表移除 + 链表构建 + 链表反转reverse

今日任务 ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 链表理论基础 建议:了解一下链接基础,以及链表和数组的区别 文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A…

【SpringBoot源码剥析】| 依赖管理

目录 一. 🦁 依赖管理Ⅰ. 部分dependency导入时为啥不需要指定版本?1.1 父依赖启动器的工作1.2 问题答案 Ⅱ. 项目运行依赖的JAR包是从何而来的?2.1 分析源码2.2 问题答案 二. 🦁 总结 一. 🦁 依赖管理 Ⅰ. 部分dependency导入时…

Linux——中断和时间管理(中)

目录 驱动中的中断处理 中断下半部 软中断 tasklet 工作队列 驱动中的中断处理 通过上一节的分析不难发现,要在驱动中支持中断,则需要构造一个 struct irqaction的结构对象,并根据IRQ 号加入到对应的链表中(因为 irq_des 已经在内核初始…

golang微服务项目通用流水线

golang微服务项目通用流水线 工作中随着业务越来越大,微服务的项目也越来越多,最开始的时候是一个服务一个流水线,然后还分了三个环境,也就是一个服务三个流水线,后面就越来越不利于管理维护了,因此&#…

马云的创业故事及他人生中的摆渡人-创建阿里巴巴(五)

著名的“18罗汉大会” 以及“马云成功背后的男人” 1999年大年初五,杭州湖畔花园小区,18个人坐满了一屋子, 这是阿里巴巴的第一次全员大会,马云激情澎湃地讲了2个小时,并且专门请了摄影师全程录像。 这就是传说中的…

SD卡无法识别怎么办?

SD卡是一种可移动存储设备,广泛应用于各种电子设备,如Android智能手机、平板电脑或相机等,您可以将SD卡连接到计算机以传输一些文件。但有些时候,当您打开文件资源管理器后,可能会发现您的SD卡不显示,无法使…

即时通讯IM源码应该如何做好安全防护?

即时通讯(Instant Messaging,IM)在现代社会中已经成为了人们日常生活中必不可少的沟通工具。无论是在家庭、教育、商业或政府等各行各业中,IM都扮演着重要的角色。然而,随着IM使用率的增加,相应的安全威胁也…

程序员基础的硬件知识(cpu、主板、显卡、内存条等)

一、综合简介 cpu:负责运算数据,就等于你的大脑运算速度。 显卡:本来没有显卡,后来因为大家对图片要求越来越高,视频要求越来越高,啥都让cpu算太累了,于是分出来一个,专门用来计算…

华为云服务EulerOS release 2.0 版本安装大象数据库

1连接华为服务器 下载并按照命令yum install -y postgresql-server 2 初始化 postgresql-setup initdb 3启动 systemctl start postgresql.service 启动服务 4开放端口(如果防火墙已经关闭则可以省略) iptables -I INPUT -p tcp --dport 5432 -j ACCEPT 5验证安装结果&…

Cortex-A7中断详解(二)

CP15协处理器 CP15协处理器一般用于存储系统管理,但是在中断中也会使用到,CP15协处理器一共有16个32位寄存器。CP15协处理器的访问通过以下指令完成: MRC:将CP15协处理器中的寄存器数据读到ARM寄存器中。MCR:将ARM寄…

坚持刷题2个月,终于去了梦寐以求的大厂....

写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题…并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给定…

软件测试的测试用例

1.白盒和黑盒测试: 黑盒测试:把代码看成一个黑盒子,只关心输入和输出结果之间的关系 产品功能是否符合要求; 白盒测试:能够看到代码本身,针对代码本身进行测试,测试代码本身的逻辑是否符合规范。 2.测试用…

常用图标(icon)css下载

1、演示图例(icon1.css)[24*18] 2、演示图例(icon2.css)[24*24] 3、演示图例(icon3.css)[24*24] 4、演示图例(icon4.css)[24*18] 5、演示图例(icon5.css)[26*…

C/C++每日一练(20230426)

目录 1. 不喜欢带钱的小C 🌟🌟 2. 数组排序 ※ 3. 超级素数 ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 不喜欢带钱的小C 小C不喜欢带钱&#xff0c…