omu*_*mul 11 javascript facebook node.js ecmascript-6 reactjs
我正在浏览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
我确实在npmjs上找到了"emptyObject",但是那里的API似乎与React中使用的API不同; .isEmpty
React中的grepped与emptyObject无关.
那么emptyObject从哪里加载,以及React如何require
做它正在做的事情?这不直观.完全没有.
Don*_*Kim 14
emptyObject
React引用的模块的位置是https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/emptyObject.js#L9请注意,它不遵循CommonJS模块系统.
为了让Facebook更容易分享和使用我们自己的JavaScript.首先,这将允许我们发布代码而不必过多担心它的存在,遵循@providesModule的精神,但在更广泛的JavaScript生态系统中工作.
来自https://github.com/facebook/fbjs#purpose
通过添加@providesModule
许可证标头并require
在Node中加载这些模块来定义模块的方式称为Haste,一种为Facebook的开源项目构建的定制模块系统.
事实上,除非您想了解React的内部工作原理或为Facebook的开源项目做出贡献,否则您不需要知道这一点.换句话说,不建议使用Haste来编写自己的项目.
同样,invariant
在第10行加载的模块ReactClass.js
在https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/__forks__/invariant.js#L9中声明.
据我所知,Eclipse和WebStorm都不支持Haste,因此IDE无法提供帮助.但是使用Haste,文件和模块的名称应该相同,因此您可以通过搜索文件名找到一个模块,即Webstorm中的双移和Eclipse中的Ctrl+ Shift+ r.但是,emptyObject
你询问或invariant
不是React的一部分,所以找到它们的起源仍然很麻烦.
否则,有一个团队分享和组织他们从黑客React中学到的东西我偶尔做出贡献,并且他们require
通过跟随Haste 链接到相应的原始文件,例如https://annot.io/github.com/facebook/ react/blob/cc3dc21/src/isomorphic/classic/class/ReactClass.js?l = 19你可能想看到它.
归档时间: |
|
查看次数: |
5108 次 |
最近记录: |