当前位置: 首页 > news >正文

React 入门 01:快速写一个React的HelloWorld项目

本文主要介绍如何用React开发的脚手架工具vite快速搭建一个符合实际业务项目结构的hello world网页项目并理解React的代码文件结构以及页面渲染流程。

文章目录

  • 一、准备工作:安装node.js
  • 二、项目搭建
    • 创建项目目录
    • 使用Vite创建并启动一个项目
    • 学会如何修改页面内容
      • 网页内容是如何展示出来的
        • 方法一:搜索关键内容
        • 方法二:看目录

一、准备工作:安装node.js

Windows系统的node.js安装十分简易,没有环境安装经验的伙伴可以参考文章:Windows系统下安装node.js

二、项目搭建

创建项目目录

我们需要先创建一个用于放置项目文件的目录,之后该项目相关的命令操作都需要在该路径下执行。我们新建一个hello-react的目录,然后进入到该目录,命令行路径提示如下:C:\hello-react>

使用Vite创建并启动一个项目

vite是一个构建工具,可以理解为一个模块打包器。 它的主要目标是快速将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用。
我们可以使用命令npm create vite@latest my-app -- --template react来快速创建一个名为my-app的项目。比如我们的项目希望叫做hello-react,就可以把命令改为npm create vite@latest hello-react -- --template react
命令中间加了一个孤立的--,会让vite选择默认的配置(react+javascript),如果需要调整可以去掉--,用命令npm create vite@latest my-app --template react来启动项目,然后根据提示选择相关工具配置。
在这里插入图片描述
看到控制台最终已经输出如下内容:

  VITE v7.1.12  ready in 297 ms➜  Local:   http://localhost:5173/➜  Network: use --host to expose➜  press h + enter to show help

根据输出,我们的项目已经运行起来了,浏览器访问http://localhost:5173/即可以到看到了。于是 我们浏览器访问指定地址后可以看到如下页面:
在这里插入图片描述

学会如何修改页面内容

网页内容是如何展示出来的

我们要修改网页内容,就要知道网页内容是如何展示出来的。

首先用你喜欢的编辑器打开项目(我个人偏爱并强推VS Code),可以看到如下右侧项目代码文件结构:
在这里插入图片描述

如果过了解过网页开发的基础知识,会知道我们看到的网页都是html,然后通过cssjshtml上添加样式以及交互效果。所以我们可以点开项目根目录的index.html,看到代码内容如下:
在这里插入图片描述
在这里插入图片描述

index.html内容中的<title>与我们看到的页面tab名称是对应的,说明我们看到的确实是这个html里面的内容。但是<body>标签中并没有内容,那么我们在页面上看到的vitereact的图片和文本是哪来的呢?

这里提两种探索的方法

方法一:搜索关键内容

在这里插入图片描述

我们看到页面有四个文本(三个纯文本内容和一个按钮文本内容),所以我们可以直接用IDE搜索这些文本所在位置,如下:
在这里插入图片描述

我们尝试修改一下找到的App.jsx中的Vite + React,改成Hello React World!并保存,然后刷新浏览器查看页面是否发生变化,可以看到页面如下:
在这里插入图片描述
页面内容确实跟预期一样发生了变化。再去看App.jsx文件中的其他内容,可以看到浏览器页面里展示的其他内容也都在这个代码文件中。

所以我们可以确定,如果我们想修改页面内容只需要修改App.jsx即可

同样地,当我们想进一步去探索React是如何知道要把App.jsx的内容渲染到浏览器页面上的,我们就可以搜索App.jsx,看哪里用到了这个文件,搜索结果如下:
在这里插入图片描述
我们可以看到,这是在一个src目录下main.jsx文件中,根据名称可以知道,srcsource的缩写,代表源代码文件目录,main.jsx主入口文件。代码中有一个.render()函数调用(render是渲染的意思),那么到这里我们可以大胆推测整个网页的渲染逻辑就是,React有一个主入口main.jsx,我们的页面具体内容App.jsx会被导入到这个入口文件中,然后放到渲染部分(即render()包裹的部分)中进行内容的渲染。所以我们可以通过浏览器地址http://localhost:5173/看到页面渲染的App.jsx中的内容。

方法二:看目录

使用标准化工具来组织代码的好处是,文件的位置和命令都有迹可循。我们看到根目录下index.html之外的文件名字都表明这些文件是一些配置相关的文件(比如eslint.config.js是eslint的配置文件、vite.config.js是vite的配置文件)。而其他文件夹根据名字可以知道:

  • node_modules存放项目相关的依赖包
  • srcsource的缩写,所以是存放源代码的地方
  • pubilc是公开目录,存放可以公开访问的文件
  • src/assets是资源/资产,所以存放我们在项目中用到的比如图片、视频或者音频等内部使用的内容资产

不同构建工具(比如用create-react-appcreate-next-apprsbuild等)或者不同框架(比如Vue)得到的项目文件结构可能不同,但是基本都会使用通用的名称,比如:

  • build是写好代码之后构建完毕用于部署到服务器上的文件夹
  • config是用来放配置的目录
  • static是静态的意思,该目录是用来存放一些静态文件的地方
  • test是放代码测试文件的地方

所以如果我们要查找页面的内容(涉及代码,属于可改变的内容而非静态文件),应该在src目录下找,打开src目录,可以看到两个文件App.jsxmain.jsx。一般来说,直接存放在目录下的,是类似于"程序入口"一样的文件。根据文件名称,App代表的是Application(应用)内容,而main代表的应该是主入口,所以我们先尝试打开main.jsx,查看内容
在这里插入图片描述
可以看到main.js里面import 导入了一些东西,虽然我们不知道具体是什么,但是我们的代码是标准化的,所以根据命名,可以推测:

  • App作为appliaction(应用)的简写,应该代表跟应用相关的内容;
  • getElementById('root')翻译过来是通过ID来获取元素的意思,获取了某一个id为root的元素,之前我们在index.html中看到<body>中就是一个id为root的元素,可以猜测这行代码就是获取了这个元素。。
  • render是渲染的意思,在渲染的内容中放入了<StrictMode> <App /> </StrictMode>,所以这里应该是定位到了index.html的body位置,然后将App的内容渲染到了页面中。

根据以上三点,我们可以基本确定,我们在浏览器中看到的内容就是从这里传到index.html并被浏览器展示出来的。

进一步,我们查看App的内容,看页面的图片和文字是如何引入到页面的,打开App.jsx之后,可以看到内容如下:
在这里插入图片描述
我们看到App.jsx中有两个<img>分别引用了对应的logo,这就是页面展示的vitel和reactlogo图片来源。我们可以尝试删除其中一张logo图片或者修改文件中其他内容,然后检查页面展示的内容是否变成了我们修改后的内容。通过刷新浏览器页面,我们的推测可以得到验证,我们也明白了React是如何将代码渲染到浏览器的。

http://www.dtcms.com/a/545398.html

相关文章:

  • 地方旅游网站建设必要性网站怎么做站内美化
  • 设计网站栏目wordpress 三一重工
  • 黄冈网站建设策划海口建网站公司
  • 电子元器件学习-DC-DC篇:原理、拓扑结构、参数接收、手册解读、外围器件选型、Layout设计案例分析
  • SSD和HDD存储应该如何选择?
  • wordpress 博客 免费主题哈尔滨关键词优化方式
  • 河北网站排名网站内置字体
  • Yocto —— Linux Kernel 配置和修改
  • Rust结构体:数据组织的优雅范式与实例化实践
  • 【Harmony】鸿蒙相机拍照使用简单示例
  • 论文笔记:“Mind the Gap Preserving and Compensating for the Modality Gap in“
  • 国产光学软件突破 | 3D可视化衍射光波导仿真
  • 仓颉语言中的Option类型与空安全处理:深度解析与实践
  • 无穷级数概念
  • mysql的事务、锁以及MVCC
  • [Dify 实战] 使用插件实现内容抓取与格式转换流程:从网页到结构化输出的自动化方案
  • 李宏毅机器学习笔记35
  • 类和对象深层回顾:(内含面试题)拷贝构造函数,传值返回和传引用返回区别
  • Rust环境搭建
  • 潍坊做网站价格个人网页设计软件
  • LeetCode 刷题【138. 随机链表的复制】
  • 做可转债好的网站wordpress不用邮件确认
  • Rust 中的减少内存分配策略:从分配器视角到架构设计 [特殊字符]
  • MySQL8.0.30 版本中redo log的变化
  • 0430. 扁平化多级双向链表
  • 网站关键词多少合适icp备案服务码
  • TypeScript声明合并详解二
  • 做网站组织架构my77728域名查询
  • 深度学习------图像分割项目
  • 【深度学习2】线性回归的从零开始实现