- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在浏览 React 代码库,我注意到 React 的 require
与 Nodejs 中的行为不太一样。我不明白这里发生了什么。
例如,查看 ReactClass.js 的第 19 行,有一个 require('emptyObject')
,但 package.json 中没有列出 emptyObject,也没有说明该模块的任何位置来自。
https://github.com/facebook/react/blob/master/src/isomorphic/classic/class/ReactClass.js#L19
我确实找到了 "emptyObject" on npmjs ,但那里的 API 似乎与 React 中使用的不同; React 中 grepped 的 .isEmpty
与 emptyObject 无关。
那么 emptyObject 是从哪里加载的,React 的 require
是如何做的呢?这并不直观。完全没有。
最佳答案
React 引用的 emptyObject
模块的位置是 https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/emptyObject.js#L9请注意,它不遵循 CommonJS 模块系统。
To make it easier for Facebook to share and consume our own JavaScript. Primarily this will allow us to ship code without worrying too much about where it lives, keeping with the spirit of @providesModule but working in the broader JavaScript ecosystem.
来自 https://github.com/facebook/fbjs#purpose
通过在许可头中添加 @providesModule
并在 Node 中使用 require
加载这些模块来定义模块的方式称为 Haste,这是一个为 Facebook 构建的定制模块系统开源项目。
事实上,除非您想了解 React 的内部工作原理或为 Facebook 的开源项目做出贡献,否则您不需要知道这些。也就是说,不建议使用 Haste 编写自己的项目。
同样,在 ReactClass.js
的第 10 行加载的 invariant
模块在 https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/__forks__/invariant.js#L9 声明
据我所知,Eclipse 和 WebStorm 都不支持 Haste,所以 IDE 无能为力。但是使用Haste,文件名和模块名应该是一样的,所以你可以通过搜索文件名找到一个模块,即Webstorm中的double shift和Ctrl+Shift +r 在 Eclipse 中。但是,您询问的 emptyObject
或 invariant
不是 React 的一部分,因此查找它们的来源仍然很麻烦。
否则,有一个团队会分享和组织他们从黑客 React 中学到的东西,我偶尔会做出贡献,他们通过跟随 Haste 将这些 require
链接到相应的原始文件,例如https://annot.io/github.com/facebook/react/blob/cc3dc21/src/isomorphic/classic/class/ReactClass.js?l=19你可能想看看。
关于javascript - 在 React 中找不到所需的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40353532/
我有一个依赖于包 B 的包 A。当包 A 中的代码运行并访问包 B 中的类时,包 B 的状态将被解析 (4),而不是 Activity (32) 和包 B 的激活器也没跑好。我认为 bundle B
这个问题在这里已经有了答案: How to remove the space between inline/inline-block elements? (41 个回答) 关闭 7 年前。
我正在尝试使用 Java OpenAL 库。我在导入名为 libsoft_oal.so 的 native 库时遇到问题。 Java OpenAL 依赖于 OpenAL 软实现。我尝试根据他们在 git
我正在尝试启动我的应用程序。是一个 unicorn +工头+sinatra的应用。 这是我的 config.ru 文件: require "rubygems" require "sinatra" Bu
我有一个下拉列表,其中包含一些从数据库表中检索的值,我想要的是当单击按钮时它应该只获得选项标签的中间值,但只有那些类名为“get_this”的选项标签并离开那些选项,如果他们没有这个类 预期输出:值
我有一个index.php文件,需要一个通用的head.php文件,head.php文件中有几个Javascript文件,当这样尝试时,代码在源代码中看起来很好,但文件却不是实际上对文档做任何事情。
有人能帮帮我吗? 我已经像这样运行了 imsmod: $ insmod /data/mm/mmdev.ko epoll_rate=100 但是我得到一个错误: insmod: init_module
是否有键盘快捷键或插件可以在 Notepad++ 中打开 PHP 所需或包含的文件?我知道,在 Dreamweaver 中,执行此操作的命令是 Ctrl+D,但我似乎无法在 Notepad++ 中找到
我已经用 js 设置了一个显示/隐藏 div,但我很难弄清楚如何一次显示一个 div。目前发生的情况是,除非我再次单击原始链接来关闭该 div,否则每个 div 都会显示。 http://www.li
当我尝试将未分配的辅助分片分配给节点时出现错误。 { "error": { "root_cause": [ { "type": "remote_transpor
我正在构建一个 C++ 应用程序,使用 Netbeans 6.9 作为我的 IDE。我有一个 C++ 库,它是一个纯 C 库的包装器。 我已将文件正确添加到项目中(使用添加库文件选项)。这是 g++
我是一名优秀的程序员,十分优秀!