React01-React简介及环境搭建

news2024/11/16 8:56:36

一、SPA 单页面应用

1. 多页面应用(MPA)

一个链接对应一个页面。

优点:便于百度搜索。

缺点:请求量大。

应用:电商网站

2. 单页面应用(SPA)

应用:音乐网站

优点:不需要频繁向服务器请求页面

缺点:没有页面,数据没有单独的页面,都是 ajax 请求过来的,该页面不容易被百度搜索(seo)。

注意:无论是单页面应用还是多页面应用,我们不能直接说谁的优势更好,而是要根据业务来决定谁好。

二、React 简介

React 是当前流行的前端框架,它是 facebook 开发的一款开源框架。

官方网址:https://react.docschina.org

用于构建 Web 和原生交互界面的 Javasrcipt 库。

JQuery 是 js 的函数库,主要用途是用于界面的 dom 操作。

React 的优势

(1) 声明式定义组件

React 使用 class | function 关键字来定义 React 组件。

React 使创建交互式 UI(交互式是用户的一种行为,ui 是界面)变得轻而易举,即让用户在界面上的行为变得轻而易举。

(2) 组件化开发

组件化是当前前端一种很流行的开发模式,组件的优势就是让我们的项目变得很容易维护。

组件的复用率增强,提高了我们的开发效率,组件与组件之间都是独立的个体,两两之间互不干扰。

(3) 一次学习,随处编写

(4) React 工作高效

内部采用的是虚拟 DOM(Virtual DOM)

虚拟 DOM ,不能被界面渲染的 DOM,它们跟我们 js 的 DOM 结构很像,虚拟 DOM 其实就是我们 js 中 DOM 对象的副本。

虚拟 DOM 和真实 DOM 对比采用的是 Diff 算法

虚拟 DOM 和我们的真实 DOM,他们之间其实是一种映射关系。当我们的虚拟 DOM 发生改变的时候,我们的真实 DOM 也会跟着发生改变。如果虚拟 DOM 没有发生改变,那么真实 DOM 也不会发生改变。最大的优势就是该更新的更新,不该更新的就不更新。这种渲染方式叫最小化渲染,大大降低了前端页面的重构。

三、JSX 简介

React 组件化开发,开发组件的过程中,我们采用了 JSX 语法。

1. JSX 语法

JSX 在结构上和 HTML 很像,但是它的本质还是 js 语言。

2. babel 工具

babel 工具编译 JSX 语法。

babel 官网:https://www.babeljs.cn

// jsx 编译之前
<div class="app">hello word</div>

// jsx 编译之后
React.createElement("div", {
  class: "app"
}, "hello word"); // 返回结果就是Virtual DOM

3. 代码层面编译 JSX

babel-cli,babel 的脚手架工具。

配置编译 JSX 的流程:

(1) 创建 babel.config.js 或 .babelrc 配置文件。

(2) 项目初始化,使用命令生成一个 package.json 文件。

npm init -y

(3) 下载 babel 脚手架 @babel/cli

npm install --save-dev @babel/cli @babel/core

  • @babel/cli 提供了 babel 的编译指令

  • @babel/core 提供了编译的代码

  • babel 脚手架的使用指令

  • npx babel entry.js -o output.js

  • npm install --save-dev @babel/preset-react 告诉babel 编译的语法是 react

  • 在.babelrc 中添加配置项

(4) 配置 .babelrc 

{
    "presets": ["@babel/preset-react"]   
}

四、React 环境搭建

1. 安装 React

(1) npm

npm install react react-dom

(2) cdn 链接

<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>

传统开发需要手动创建目录、文件等,这种开发模式显得比较笨重,大大降低开发效率。

本文采用 npm 的方式搭建一个 React 脚手架项目,脚手架可以实现前期项目的基本搭建。

2. 创建 React 项目

npx create-react-app 项目名称

出现如下信息即为创建成功:

 

3. 启动项目

npm start

五、React 初体验

1. React 项目目录结构

  • node_modules  存放安装的依赖模块,使用 yarn install 安装
  • public  存放 index.html 模板文件,和一些图片等资源文件
  • src
    • index.js  项目的主文件App.css   
    • index.css  公共的样式文件
    • App.js  根组件
    • App 组件里的样式文件
  • packages.json

2. React 开发简介

React 提供了 react 相关的 api。

React-dom 提供了操作浏览器 DOM 的一些方法。

ReactDOM.render 方法将 jsx 组件渲染到指定的节点容器,有两个参数,第一个参数就是我们的jsx 组件,第二个参数就是我们的节点对象(document 来获取)。

注意:在我们的script标签上需要添加type属性,属性值就是 text/babel。

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

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

相关文章

Babylist EDI 需求详解

Babylist 是一个为准父母提供方便和灵活的婴儿注册服务的平台&#xff0c;帮助他们准备迎接新生儿的到来。Babylist 与各种不同的品牌和零售商合作&#xff0c;包括婴儿用品、玩具、衣物和其他相关产品的制造商。用户可以在 Babylist 上浏览各种不同的产品&#xff0c;并根据自…

9、Redis集群(cluster)

是什么 Redis集群是一个提供在多个Redis节点间共享数据的程序集&#xff0c;Redis集群可以支持多个master 能干嘛 Redis集群支持多个master&#xff0c;每个master又可以挂载多个slave 读写分离 支持数据的高可用 支持海量数据的读写存储操作 由于Cluster自带Sentinel的故障转…

UWB智能定位管理系统源码(Java+ vue+ spring boot)

智能定位管理系统技术架构&#xff1a;Java vue spring boot 一、系统概述 系统聚焦基于UWB(超宽带)技术的底层定位网络和定位算法&#xff0c;通过对定位分站、定位标签、定位引擎的硏发&#xff0c;实现高精度定位网络&#xff0c;获取高精度定位结果&#xff0c;支撑行业大…

爬虫入门指南(6):反爬虫与高级技巧:IP代理、User-Agent伪装、Cookie绕过登录验证及验证码识别工具

文章目录 前言IP代理与User-Agent伪装IP代理User-Agent伪装 使用Cookie绕过登录验证使用验证码识别工具未完待续... 前言 随着互联网发展&#xff0c;网站数据变得越来越重要。然而&#xff0c;为了保护其数据的安全性和唯一性&#xff0c;网站通常会采取反爬虫措施。本篇博客将…

一场由AIGC引发的网文变革

文 | 螳螂观察 作者 | 青月 2019年底《庆余年》第一季播出引发了全民追剧热潮&#xff0c;不仅实现了国内的口碑、流量双丰收&#xff0c;还收获了包括韩国在内的27个国家或地区海外观众的超高评价。 经过三年多的蓄力&#xff0c;前不久《庆余年》第二季发布了开机特辑。这…

论文解读|CVPR 2023:非刚性点云匹配的神经内嵌算法

原创 | 文 BFT机器人 01 背景 在非刚性点云匹配领域&#xff0c;将两个或多个形状的点云对应起来是一个具有挑战性的任务。在这个问题中&#xff0c;形状的变形可能会导致点云之间的几何形状和拓扑结构的差异。因此&#xff0c;点云匹配方法需要能够识别和建立这些非刚性变形下…

一文图解|低精度定时器原理

Linux 内核通常会使用 定时器 来做一些延时的操作&#xff0c;比如常用的 sleep() 系统调用就是使用定时器来实现的。 在 Linux 内核中&#xff0c;有两种类型的定时器&#xff1a;高精度定时器 与 低精度定时器。低精度定时器基于硬件的时钟中断实现的&#xff0c;其定时周期…

开放式蓝牙耳机推荐,高性价比的蓝牙耳机首选这些品牌

在开放式耳机的流行度越来越高的同时&#xff0c;新接触想入手开放式耳机的小伙伴们&#xff0c;面对不同样式型号的耳机&#xff0c;会更多的考虑舒适度还是音质&#xff1f;亦或者是外观呢&#xff0c;通过各方体验调查&#xff0c;我总结了几款值得大家选择的开放式耳机&…

Linux--共同访问的公共目录不允许a用户删除b用户目录或文件:粘滞位 -t

情景&#xff1a; ①当多个用户共享同一个目录&#xff0c;需要在该目录下&#xff0c;进行读写、创建文件 ②但是自己只能删除自己的&#xff0c;而不能删除别人的&#xff08;w:可以互删的&#xff0c;但是不满足条件&#xff09; 语法&#xff1a; chmod t 目录名 注意…

CICD集合(一):Jenkins2.3.46安装

一、安装和安装Jenkins 0.前提 因jenkins从2.357版本开始不再支持java8 2、jenkins与java版本对应查看&#xff0c;与jenkins下载&#xff1a;Redhat Jenkins Packages 3、打算使用java8&#xff0c;所以选择安装2.346.3-1.1 4、安装jenkins之前&#xff0c;安装好java8并…

前后端免费学 | 第六届字节跳动青训营报名啦

线上活动&#xff0c;全程免费 报名时间&#xff1a;2023年6月2日 - 2023年7月10日 报名地址&#xff1a;点我报名&#xff0c;暑假一起学技术呀... 前言 其实去年我就想参加青训营的&#xff0c;但是那时的我刚转完专业&#xff0c;觉得自己太菜了&#xff0c;单方面认为自己…

MySQL 8 group by 报错 this is incompatible with sql_mode=only_full_group_by

根据错误信息大概知道&#xff0c;是sql_mode参数设置为only_full_group_by的不兼容&#xff0c;如果select 的字段不在 group by 中&#xff0c;并且select 字段没有使用聚合函数&#xff08;SUM,MAX等&#xff09;&#xff0c;这个sql查询是被mysql认为非法的&#xff0c;会报…

easyui datagrid合并单元格

表头合并 columns:[[{field:bigarea,title:大区,rowspan:2,width:$$.fillsize(0.1),align:center},{field:ProvinceName,title:省份,rowspan:2,width:$$.fillsize(0.1),align:center},{field:dbct_name,title:分拨中心,rowspan:2,width:$$.fillsize(0.1),align:center},{field…

IDEA新建Spring Boot项目

新建项目之前已经将JDK环境变量啥的都安装好了&#xff0c;本文只有新建。 1.打开idea&#xff0c;选择Create New Project。如果已经打开其他项目&#xff0c;点击File->New->Project&#xff0c;也可以打开新建的界面。 2.点左侧的Spring Initializr然后如图&#xff…

三款新品齐发:大势智慧刷新实景三维技术新高度

近日&#xff0c;大势智慧“海量数据轻量化技术与新品夏季发布会”在大势智慧武汉总部盛大举行&#xff0c;并同步在其官方微信视频号进行线上直播&#xff0c;线上线下双会场气氛热烈、互动频繁、精彩纷呈。在此次发布会上&#xff0c;大势智慧集中推出轻量化技术、大势速影、…

第1章 Java概述

目录 1 Java相关1.1 跨平台性的体现1.2 Java的运行机制1.3 JDK、JRE、JVM及其关系1.4 Java注释 2 其他2.1 转义字符2.2 常用Dos命令2.3 相对路径与绝对路径 3 思维导图 上图为思维导图 1 Java相关 1.1 跨平台性的体现 Java的跨平台性&#xff1a;程序员编写的Java程序可以在不…

MyBatis介绍与下载

目录 MyBatis 介绍 MyBatis 主要特点 MyBatis 下载 IDEA创建maven项目&#xff08;默认&#xff09; MyBatis 介绍 MyBatis是一种开源的Java持久化框架&#xff0c;用于将SQL数据库访问和映射任务与Java对象之间的映射分离。它提供了一种简单的方式来对数据库进行操作&…

4Gwifi外夹式无线超声波流量计热量表无需破管物联网云平台对接

1.产品概述 DAQ-GP-UF4G无线外夹式超声波流量计是上海数采物联网科技有限公司推出的一款基于4G无线传输&#xff0c;交流/直流宽电压供电的通用型超声波流量计热量表&#xff0c;可采集管道中的瞬时流量、瞬时热流量等。外夹式超声波流量计与传统流量计相比&#xff0c;具有安装…

STM32实战项目—楼宇人员计数系统

本文项目比较简单&#xff0c;目的是介绍一下红外对管的使用&#xff0c;程序设计也比较简单。因此&#xff0c;博主并没有将程序工程上传资源&#xff0c;如果有需要的话可以私信。 文章目录 一、任务要求二、实现方法2.1 红外对管简介2.2 进出人员检测 三、程序设计3.1 红外对…

微服务架构介绍及SpringCloudAlibaba组件介绍

单体架构vs微服务架构 单机架构 什么是单体架构 一个归档包&#xff08;例如war格式&#xff09;包含了应用所有功能的应用程序&#xff0c;我们通常称之为单体应用。架构单体应用的方法论&#xff0c;我们称之为单体应用架构。&#xff08;就是一个war包打天下&#xff09;…