美文网首页
从0实现react

从0实现react

作者: 第十人i | 来源:发表于2020-01-30 14:10 被阅读0次

项目地址: 项目地地址
参考地址: bilibili

1.下载nodejs
2.下载脚手架: npm install create-react-app -g
3.创建项目:create-react-app react-test

1.火热的0配置的打包工具parcel

2.安装babel插件,将jsx语法转换成js对象(虚拟DOM)

  • npm install babel-core babel-preset-env babel-plugin-transform-react-jsx -save-dev
  • babel官网

3.组件和生命周期

4.diff算法

diff算法(待完成)

  • 如何减少DOM更新: 我们需要找出渲染前后真正变化的部分,只更新这一部分,而对比变化,找出需要更新部分的算法称之为diff算法

  • 对比策略:

    • 在前面我们实现了_render方法,它能够将虚拟DOM转换成真正的DOM
  • 但是我们需要改进它,不要让它傻乎乎的重新渲染整个DOM树,而是找出真正变化的部门进行替换。

  • 这部门很多类似React框架实现方式都不太一样,有的框架会选择保存上次渲染的虚拟DOM,然后对比虚拟DOM前后的变化,得到一系列更新的数据,然后再将这些更新应用到真正的DOM上。

  • 我们会选择直接对比虚拟DOM和真实DOM,这样就不需要额外保存上一次渲染的虚拟DOM,并且能够一边对比一边更新,这也是我们选择的方式。**

  • 不管是DOM还是虚拟DOM,他们的结构都是一棵树,完全对比两棵树变化的算法时间复杂度是0(n^3),但是考虑到我们很少会跨层级移动DOM,所以我们只需要对比同一层级的变化。

    只需要对比同一颜色框内的节点
  • 总而言之,我们的diff算法有两个原则

    • 对比当前真实的DOM和虚拟DOM,再对比过程中直接更新真实DOM
    • 只对比同一层级的变化
  • 5.异步的setState

  • babel 官网

  • 6.个人博客: http://www.start6.cn/

相关文章

  • 从0实现react

    项目地址: 项目地地址参考地址: bilibili 1.火热的0配置的打包工具parcel 地址: parcel官...

  • Redux学习讲解

    Redux学习讲解 大神地址:从0到1实现一个Redux 借鉴地址:官网地址 react全家桶包括react、we...

  • 最简单的React Hooks源码解析

    holyZhengs [React中文社区](javascript:void(0);) 前言 从React Hoo...

  • 从0实现一个简易React

    目录 本文将分以下四个部分进行:1、实现 React.createElement && ReactDOM.rend...

  • React从0开始

    * node环境: 1、使用nvm来管理Node版本[https://juejin.im/post/6844904...

  • react-native-video

    简介 一个react-native视频组件,可以实现视频播放的效果。要求的react-native版本 >= 0....

  • 疑问汇总

    1. react context是怎样实现 跨组件通信的? 从Context源码实现谈React性能优化[http...

  • 从 0 到 1 实现 react - onChange 事件以及

    该系列文章在实现 cpreact 的同时理顺 React 框架的核心内容 项目地址 从一个疑问点开始 接上一章 H...

  • react从0搭建项目

    一、引入iconfont阿里巴巴图库 官网https://www.iconfont.cn/home/index?s...

  • React+Electron+Typescript

    参考: Electron 应用如何利用 create-react-app 从 0 到 1

网友评论

      本文标题:从0实现react

      本文链接:https://www.haomeiwen.com/subject/zgpithtx.html