前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >React.js基础知识总结一

React.js基础知识总结一

作者头像
用户6379025
发布于 2022-12-26 07:54:39
发布于 2022-12-26 07:54:39
1.9K00
代码可运行
举报
文章被收录于专栏:莫凡莫凡
运行总次数:0
代码可运行

React是什么?

React是FaceBook(脸书)公司研发的一款JS框架(MVC) React是一款框架:具备自己开发的独立思想(MVC:Model View Controller) -> 划分组件开发 -> 基于路由的SPA单页面开发 -> 基于ES6来编写代码(最后部署上线的时候,我们需要把ES6编译成ES5 =>基于Babel来完成编译) -> 可能用到Less/Sass等,我们也需要使用对应的插件把他们进行预编译 -> 最后为了优化性能(减少HTTP请求次数),我们需要把JS或者CSS进行合并压缩 -> webpack来完成以上页面组件合并、JS/CSS编译加合并等工作

React.js怎么运行(一般不会自己配置WebPack,太麻烦了)

一般需要使用官方脚手架 1、安装 npm i create-react-app -g 安装这个就可以命令安装项目了 2、使用:creact-react-app 【项目名称】

脚手架生成目录主要内容

node_modules 当前项目中依赖的包都安装在这里

.bin 本地项目中可执行命令,在package.json的scripts中配置对应的脚本即可(其中有一个就是:react-scripts命令)

public 存放的是当前项目的HTML页面(单页面应用放一个index.html即可,多页面根据自己需求放置需要的页面)

在REACT框架中,所有的逻辑都是在JS中完成的(包括页面结构的创建),如果想给当前的页面导入一些CSS样式或者IMG图片等内容,我们有两种方式:

1.在JS中基于ES6 Module模块规范,使用import导入,这样webpack在编译合并JS的时候,会把导入的资源文件等插入到页面的结构中(绝对不能在JS管控的结构中通过相对目录./或者…/,导入资源,因为在webpack编译的时候,地址就不在是之前的相对地址了)

2.如果不想在JS中导入(JS中导入的资源最后都会基于WEBPACK编译),我们也可以把资源手动的在HTML中导入,但是HTML最后也要基于WEBPACK编译,导入的地址也不建议写相对地址,而是使用 %PUBLIC_URL% 写成绝对地址

<link rel="manifest" href="%PUBLIC_URL%/manifest.json"> <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">

src 项目结构中最主要的目录,因为后期所有的JS、路由、组件等都是放到这里面(包括需要编写的CSS或者图片等)

index.js 是当前项目的入口文件

.gitignore Git提交时候的忽略提交文件配置项

package.json 当前项目的配置清单

“dependencies”: {

“react”: “^16.4.1”,

“react-dom”: “^16.4.1”,

“react-scripts”: “1.1.4”

}

基于脚手架生成工程目录,自动帮我们安装了三个模块:react/react-dom/react-scripts

react-scripts集成了webpack需要的内容

->Babel一套

->CSS处理的一套

->eslint一套

->webpack一套

->其它的

有sass css 处理器,最新版本有 的处理内容(项目中使用less,我们需要自己额外的安装)

“scripts”: {

“start”: “react-scripts start”,

“build”: “react-scripts build”,

“test”: “react-scripts test --env=jsdom”,

“eject”: “react-scripts eject”

}

可执行的脚本“$ npm run start / $ yarn start”

start:开发环境下,基于webpack编译处理,最后可以预览当前开发的项目成果(在webpack中安装了webpack-dev-server插件,基于这个插件会自动创建一个WEB服务[端口号默认是3000],webpack会帮我们自动打开浏览器,并且展示我们的页面,并且能够监听我们代码的改变,如果代码改变了,webpack会自动重新编译,并且刷新浏览器来完成重新渲染)

build:项目需要部署到服务器上,我们先执行 yarn build,把项目整体编译打包(完成后会在项目中生成一个build文件夹,这个文件夹中包含了所有编译后的内容,我们把它上传到服务器即可);而且在服务上进行部署的时候,不需要安装任何模块了(因为webpack已经把需要的内容都打包到一个JS中了

React脚手架的深入剖析

create-react-app脚手架为了让结构目录清晰,把安装的webpack及配置文件都集成在了react-scripts模块中,放到了node_modules中

但是真实项目中,我们需要在脚手架默认安装的基础上,额外安装一些我们需要的模块,例如:react-router-dom/axios… 再比如:less/less-loader…

情况一:如果我们安装其它的组件,但是安装成功后不需要修改webpack的配置项,此时我们直接的安装,并且调取使用即可

情况二:我们安装的插件是基于webpack处理的,也就是需要把安装的模块配置到webpack中(重新修改webpack配置项了) =>首先需要把隐藏到node_modules中的配置项暴露到项目中 > $ yarn eject 首先会提示确认是否执行eject操作,这个操作是不可逆转的,一但暴露出来配置项,就无法在隐藏回去了 如果当前的项目基于GIT管理,在执行eject的时候,如果还有没有提交到历史的区的内容,需要先提交到历史区,然后在eject才可以,否则报错:This git repository has untracked files or uncommitted changes… =>再去修改对应的配置项即可 一但暴露后,项目目录中多了两个文件夹: config 存放的是webpack的配置文件 webpack.config.js 开发环境下的配置项(yarn start) scripts 存放的是可执行脚本的JS文件 start.js yarn start执行的就是这个JS build.js yarn build执行的就是这个JS package.json中的内容也改了 【举个栗子:需要配置LESS,下面的文章总结的很好,我就不再写一遍了】 https://blog.csdn.net/qq_25520603/article/details/90206399

我们预览项目的时候,也是先基于webpack编译,把编译后的内容放到浏览器中运行,所以如果项目中使用了less,我们需要修改webpack配置项,在配置项中加入less的编译工作,这样后期预览项目,首先基于webpack把less编译为css,然后在呈现在页面中.

$ set HTTPS=true&&npm start 开启HTTPS协议模式(设置环境变量HTTPS的值)

$ set PORT=63341 修改端口号

====================================

react & react-dom

【渐进式框架】 一种最流行的框架设计思想,一般框架中都包含很多内容,这样导致框架的体积过于臃肿,拖慢加载的速度。真实项目中,我们使用一个框架,不一定用到所有的功能,此时我们应该把框架的功能进行拆分,用户想用什么,让其自己自由组合即可。 全家桶:渐进式框架N多部分的组合 VUE全家桶:vue-cli/vue/vue-router/vuex/axios(fetch)/vue element(vant) REACT全家桶:create-react-app/react/react-dom/react-router/redux/react-redux/axios/ant/dva/saga/mobx…

  1. react:REACT框架的核心部分,提供了Component类可以供我们进行组件开发,提供了钩子函数(生命周期函数:所有的生命周期函数都是基于回调函数完成的)
  2. react-dom:把JSX语法(REACT独有的语法)渲染为真实DOM(能够放到页面中展示的结构都叫做真实的DOM)的组件

ReactDOM.render(JSX,CONTAINER,CALLBACK)

ReactDOM.render([JSX],[CONTAINER],[CALLBACK]):把JSX元素渲染到页面中

JSX:REACT虚拟元素变为真实的dom

CONTAINER:容器,我们想把元素放到页面中的哪个容器中

CALLBACK:当把内容放到页面中呈现触发的回调函数

JSX:REACT独有的语法 JAVASCRIPT+XML(HTML)

和我们之前自己拼接的HTML字符串类似,都是把HTML结构代码和JS代码或者数据混合在一起了,但是它不是字符串

1.不建议我们把JSX直接渲染到BODY中,而是放在自己创建一个容器中,一般我们都放在一个ID为ROOT的DIV中即可

2.在JSX中出现的{}是存放JS的,但是要求JS代码指执行完成有返回结果(JS表达式)

代码语言:javascript
代码运行次数:0
运行
复制
->不能直接放一个对象数据类型的值(对象(除了给style赋值)、数组(数组中如有没有对象,都是基本值或者是JSX元素,这样是可以的)、函数都不行)
代码语言:javascript
代码运行次数:0
运行
复制
->可以是基本类型的值(布尔类型什么都不显示、nullundefined也是JSX元素,代表的是空)
代码语言:javascript
代码运行次数:0
运行
复制
->循环判断的语句都不支持,但是支持三元运算符

3.循环数组创建JSX元素(一般都基于数组的MAP方法完成迭代),需要给创建的元素设置唯一的KEY值(当前本次循环内唯一即可)

4.只能出现一个根元素

5.给元素设置样式类用的是className而不是class

6.style中不能直接的写样式字符串,需要基于一个样式对象来遍历赋值

JSX是虚拟的dom 那它怎么渲染到页面成为真实的dom呢 (diff diff)

代码语言:javascript
代码运行次数:0
运行
复制
<h1 id="id">hello world</h1>,
  document.getElementById("root"),
  ()=>{
    console.log("ok")
  }
变成
React.createElement("h1", {
    id: "id"
  }, "hello world")
// 这需要非常强大的正则匹配算法。babel真的太强了
// 下面我在浏览器打印一下会出现什么结果呢

 console.log(React.createElement("h1", {
    id: "id"
  }, "hello world"), document.getElementById("root"), () => {
    console.log("ok");
  })
//  

以上可以知道 React.creacteElement()函数执行结果返回的是一个对象,这就是虚拟dom

代码语言:javascript
代码运行次数:0
运行
复制
// 下面我来简单实现这个函数
// params :type props contianer callback return:{}
 function createElement(type,props, children){
    let obj={
       type:null,
       props:{children:""},
       key:null,
       ref:null 
     }
     
     obj.type=type
     obj.props=props                
     obj.props.children=children 
     //可能你在react上操作dom就会有ref,在for循环就有key
    'key' in obj.props ? (obj.key = obj.props.key, delete obj.props.key ) : null;
    'ref' in obj.props ? (obj.ref = obj.props.ref, delete  obj.props.ref) : null;  
     //另外一种写法
     obj = {...obj, type, props: {...props, children}};
    return obj
 }
 
console.log(createElement("h1", {
       id: "id"
   }, "hello world"))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux 基础-查看进程命令 ps 和 top
ps 是 进程状态 (process status) 的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。只打印命令名字而不是命令的绝对路径,以运行下面的格式 ps 命令:
嵌入式视觉
2022/09/05
3.4K0
Linux 基础-查看进程命令 ps 和 top
htop(1) command
类似于 top,但 htop 允许您垂直和水平滚动,并使用指向设备(鼠标)进行交互。您可以观察系统上运行的所有进程,以及它们的命令行参数,还可以以树形格式查看它们,选择多个进程并同时对它们进行操作。
恋喵大鲤鱼
2024/09/20
2390
htop(1) command
【linux命令讲解大全】170.深入了解htop: Linux中交互式进程查看器的功能和用法
htop命令是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。
全栈若城
2024/03/02
2150
[Linux] 学习笔记1-查看进程的命令(ps/top/pstree/pgrep)
2.Top命令 top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
科控物联
2022/04/19
1K0
[Linux] 学习笔记1-查看进程的命令(ps/top/pstree/pgrep)
强大的进程查看器:htop
当谈到系统监视和任务管理工具时,htop 是一个强大且功能丰富的选择。它是一个交互式的进程查看器,可以以图形化的方式显示系统的资源使用情况。本文将介绍 htop 的使用技巧,并提供一些示例,帮助您更好地理解和利用这个工具。
网络技术联盟站
2023/07/14
1.5K0
强大的进程查看器:htop
Linux系列之查看进程线程的方法
在window系统查看系统进程,我们一般会使用Ctrl+Shift+Esc打开系统进程监控页面,但是在Linux系统查看进程一般使用top命令或者ps命令,但是如果要查看线程怎么查看?其实也可以使用这两个命令,所以本博客总结一下几种方法
SmileNicky
2022/05/19
3.9K0
Linux系列之查看进程线程的方法
Linux进程管理命令及状态详解
查看进程树。 linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。如果指定了pid了,那么树的根是该pid,不然将会是init(pid: 1)。
bboy枫亭
2020/09/22
1.9K0
Linux进程管理命令及状态详解
如何在Linux中查看所有正在运行的进程
你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的PID。Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息。ps命令能提供一份当前进程的快照。如果你想状态可以自动刷新,可以使用top命令。
用户4988085
2021/07/21
62.4K0
linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制
程序 ------》系统调用-------》缓存(内存) -------》cpu处理 执行任务
用户5807183
2019/09/23
3.6K0
linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制
一个小Tips:Linux 下查看内存使用情况方法总结
在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法。
C语言与CPP编程
2023/12/04
1.5K0
一个小Tips:Linux 下查看内存使用情况方法总结
linux中的交互式进程查看命令htop
htop界面展示 Htop Linux 进程监控工具 Htop是一个用于 Linux / 类 Unix 系统的交互式实时进程监控应用程序,也是top 命的替代品,它是所有 Linux 操作系统上预装的默认进程监控工具。 Htop还有许多其他用户友好的功能,这些功能在top 命令下不可用 在 htop 中,可以垂直滚动查看完整进程列表,水平滚动查看完整命令行。 与top因为它不会在启动期间等待获取数据。 在 htop 中,你可以一次杀死多个进程而无需插入其 PID。 在 htop 中,你不再需要输入进程号
入门笔记
2022/06/02
1.4K0
linux中的交互式进程查看命令htop
玩转服务器5—服务器资源查看
对于使用我们共享服务器(2024的共享服务器交个朋友福利价仍然是800)的用户,由于大家拿到的服务器账号是共享的,所以说你并不能像使用自己服务器那样自由自在,在提交任务时要留意一下服务器的整体使用情况,不能占用过多线程或者内存,从而影响其余用户的使用。那么这时候就要掌握一些服务器资源查看的技巧。比如top、htop命令。
生信菜鸟团
2024/11/27
2010
玩转服务器5—服务器资源查看
Linux 进程管理之四大名捕
一、四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”、内功卓越的高手“铁手”、腿功惊人的“追命”和剑法一流的“冷血”。 本文四大名捕由 linux 命令所出演: 无情:ps 出演 铁手:dstat 出演 追命:top 出演 冷血:htop 出演 二、进程相关基础知识 介绍四大名捕之前先介绍一下进程相关的基础知识,话不多说,看图。 (查看大图) 三、轻功暗器高手“无情” [PS] ps:用于显示当前进程
小小科
2018/05/02
1.2K0
Linux 进程管理之四大名捕
linux top 指定进程_linux top 排序
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
全栈程序员站长
2022/11/09
9.7K0
ubuntu: 控制&查看 进程
你也可以使用grep来对输出做管道,这样可以不需要使用其它命令就能搜索出某个进程。
JNingWei
2018/09/28
4K0
ubuntu: 控制&查看 进程
美女面试官问我:能说几个常见的Linux性能调优命令吗?
top、iostat、pidstat、ps、vmstat、netstat、sar等。
田维常
2020/12/14
6290
进程管理工具之top、htop、glances、dstat
进程管理经常用到的工具有:top、htop、glances、dstat,下面一一介绍。
保持热爱奔赴山海
2019/09/18
1.6K0
进程管理工具之top、htop、glances、dstat
top 与 htop 实时监控
top -d 5 -p 1234 此命令每 5 秒刷新一次,仅监控 PID 为 1234 的进程,适用于需要重点关注某个特定进程的场景,如监控某个关键服务的运行状态。
久绊A
2025/03/11
1880
Linux性能分析:htop命令使用
htop 是一个类似于 top 的命令,但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况,如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析:
巫山老妖
2024/05/18
6540
Linux性能分析:htop命令使用
100个 Linux 命令(8)-统计和查看系统状态
pstree命令以树的形式显示进程信息,默认树的分支是收拢的,也不显示pid,要显示这些信息需要指定对应的选项。
懒人的小脑
2019/01/16
2.6K0
100个 Linux 命令(8)-统计和查看系统状态
推荐阅读
相关推荐
Linux 基础-查看进程命令 ps 和 top
更多 >
目录
  • React是什么?
  • React.js怎么运行(一般不会自己配置WebPack,太麻烦了)
  • 脚手架生成目录主要内容
  • React脚手架的深入剖析
  • react & react-dom
  • ReactDOM.render(JSX,CONTAINER,CALLBACK)
  • JSX是虚拟的dom 那它怎么渲染到页面成为真实的dom呢 (diff diff)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验