| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> react源码分析(1)-综述 -> 正文阅读 |
|
[JavaScript知识库]react源码分析(1)-综述 |
目录 2021SC@SDUSC整体介绍react是一个比较流行的前端应用框架,具有声明化,组件化,一次学习,跨平台编写的特性。可以用于构建用户界面,支持JSX语法(当然也可以不使用,react.createElement方法就可以创造reactElement元素,但不如JSX简洁,两者可以用Babel进行转化),各个组件可以有自身的状态,内部数据可以使用state等进行访问。(利用react native开发原生移动应用也是一个亮点)。react本身对外部插件也有较为良好的兼容性。 react组件分为函数组件,类组件以及原生标签组件等,它们均有各自的特性与属性,比如类组件使用state与props管理状态,函数组件使用hooks等。 目录结构首先看一下react源码的目录结构,这里的react版本为17.0.2,其中源码位于packages中,包括react,react-dom,react-reconcile等,而fixtures则包括一些小型测试项目,scripts则为一些babel,eslint等的相关文件。 另外,react源码中使用的是flow进行类型检查(由于facebook的历史原因,并非typeScript),而vsCode会将其默认为typeScript进行检测导致报错(不妨碍运行),打开settings.json,关闭js动态验证即可。 在packages中有不少模块,根据readme.md可以大致分为以下几部分: React Core其中包括所有全局reactAPI,只用于定义组件,不包括平台特定的代码,可同时适用于React DOM 和 React Native 组件。位于packages/react?中。
此处为react的入口API,也是集成地点。 渲染器最初只需要渲染DOM,后来被改编为支持原生平台的react native。因此渲染器被划分为多个部分,根据底层平台不同进行调用。其中包括: React DOM Renderer?将 React 组件渲染成 DOM。负责在浏览器上的渲染。 React Native Renderer?将 React 组件渲染为 Native 视图。此渲染器在 React Native 内部使用。不过其实它只是实现了react与react native的连接,真正的渲染在react native中。 React Test Renderer?将 React 组件渲染为 JSON 树。这主要是为了测试所用,react采用JEST进行测试。 另外一个官方支持的渲染器的是?react-art。它曾经是一个独立的?GitHub 仓库,但是已经加入主源代码树。 reconciler(我所负责的核心部分) 包括react与react native中共同部分,尤其是十分重要的协调算法,这样可以让声明式渲染,自定义组件,state,生命周期方法和 refs 等特性,保持跨平台工作一致。其中stack fiber已经被放弃,现在使用fiber reconciler,它的主要目标有:
源代码在?packages/react-reconciler?目录下。
此处即为react-reconciler的入口,其实有新旧两个版本,这里以新版本为例展示其API。 测试项目的运行与安装在介绍源码之前,可以先看一下fixtures测试项目的安装与运行以便于对react有一个大致的了解,首先需要在react项目根目录下运行yarn进行安装(如果出现yarn与node不匹配的问题,可以运行以下命令:yarn config set ignore-engines true 解决),这里其实推荐在linux系统上运行,但可以将JSON配置文件中的命令内容更改成符合powershell的格式,其实也可以在window上尝试,还要注意raw.githubusercontent.com的连接问题,可以先在IPaddress中查出相关IP地址,然后复制写入hosts文件,多尝试几次即可安装成功,然后进行build,再通过终端打开测试项目,按照readme.md中的提示运行,然后用浏览器打开相关项目下的index.html,如图所示为art的项目演示(react-art为官方支持的一个渲染器,本来是GitHub的一个项目,后来被加入到react的主源代码树中) 动态旋转图 此图为attribute-beahvior的演示(查看不同情况下SVG的效果) attribute-behavior 总结介绍了一下react,大体查看了一下react的目录结构,然后为react的测试代码部署了环境,并且顺利的成功运行了测试项目。希望未来能够越来越顺畅的分析react源码,明白内部的工作原理。本人曾参与过react相关的项目,react本身应用也很广泛,前景光明。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 3:04:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |