IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 - 配置及运行

React 源码学习系列 1 - 配置及运行

之所以会加配置这部分的原因是因为目前(2022.03.19)官方的 React 项目是没有办法 build 的……一些配置被修改过了之后就和 rollup 产生了冲突,从而 build 失败。

除此之外,还有一些准备工作需要完成,具体的步骤可以在官方文档中 Contributing > How to Contribute 中有说明,官方文档地址:https://reactjs.org/docs/how-to-contribute.html

配置需求

来自官方文档:

  • You have Node installed at v8.0.0+ and Yarn at v1.2.0+. ?
  • You have JDK installed. ?
  • You have gcc installed or are comfortable installing a compiler if needed. Some of our dependencies may require a compilation step. On OS X, the Xcode Command Line Tools will cover this. On Ubuntu, apt-get install build-essential will install the required packages. Similar commands should work on other Linux distros. Windows will require some additional steps, see the node-gyp installation instructions for details. ?
  • You are familiar with Git. ?

Node 肯定是必须的,GCC 我本地没有安装,至少运行 React,Windows 平台是不需要的。

Java 不确认,我本身就安装了 Java(8 和 11 都可以,之后的版本没有确定),所以这条没办法确定。

Fork, build, 及运行 React 项目

不知道这个问题什么时候会被修改好,目前来说,有一个团队/成员 revert 了几天前提交的一个 commit,然后项目就可以正确 build 了,fork 的地址为:https://github.com/jeongwoopark0514/react/tree/fixBuild

Fort 完项目到本地后,切换分支到 fixBuild 使用 yarnnpm install 下载所有的依赖。

完成依赖下载后使用 yarn buildnpm run build 去 build 项目。

只 build React 和 ReactDOM 可以使用这个命令: yarn build react/index,react-dom/index --type=UMD

如果遇到以下报错:

rollup error

十有八九官方还没有 patch 这个问题,以及你直接下载了 FB 的 React 源码。

运行成功后的页面大概如下:

build success

…省略若干…

last build

所有 build 完的项目挺多的,反正一眼望不到头……

早知道就用 yarn build react/index,react-dom/index --type=UMD

打开项目

top-level 的结构截图如下:

folder structure

其实比较重要的就是 fixturespackages 两个目录,fixtures 中包含了一些运行案例,而 packages 就是真正的 React 的源码以模块的形式进行分割:

packages structure

比较眼熟的有 react, react-dom, react-reconciler(reconciler 这个概念都已经面试快被面烂了吧)等一些用过没用过的依赖。

fixtures 中的就是接下来的学习项目:fixtures/packaging/babel-standalone/dev.html,这也是 React 文档中推荐试运行的项目,官方文档中提到它使用的是 react.development.js,会监听所做的变化。

dev.html 的文件内容如下:

<html>
  <body>
    <script src="../../../build/node_modules/react/umd/react.development.js"></script>
    <script src="../../../build/node_modules/react-dom/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.js"></script>
    <div id="container"></div>
    <script type="text/babel">
      ReactDOM.render(
        <h1>Hello World!</h1>,
        document.getElementById("container")
      );
    </script>
  </body>
</html>

所以渲染出来的页面也很简单,我录了一下 profile 之后的页面如下:

dev html profile

橘黄色的部分是浏览器的渲染引擎在干活,绿色的代码是 babel 的执行,粉色的部分是 React 相关的代码。

注意 run 这一部分:

run

function run(transformFn, script) {
  var scriptEl = document.createElement("script");
  scriptEl.text = transformCode(transformFn, script);
  headEl.appendChild(scriptEl);
}

run 这段代码开始执行 react-dom 中的 append:

append react dom

也就是所有 React 代码的执行入口。

目前的版本是已经推进到了 v18 了,所以函数的调用会和 v17 的不太一样,并且 console 也会出现以下的警告:

warning

这就有点困扰了……所以下一步应该会……

直接试试看 v18 的 API 吧?

毕竟 v18 已经从 alpha 推到了 beta,虽然不知道 stable release 什么时候会放出来,不过总感觉就是今年的事情……毕竟都咕咕咕两年了。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:40:43  更:2022-03-21 20:45:19 
 
开发: 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年11日历 -2024/11/24 5:38:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码