Javascript React库如何直接要求其源库?
我浏览了Facebook的React的源代码,发现在整个项目源代码中,他们没有指定加载自己模块的相对路径。例如,库使用Javascript React库如何直接要求其源库?,javascript,reactjs,commonjs,Javascript,Reactjs,Commonjs,我浏览了Facebook的React的源代码,发现在整个项目源代码中,他们没有指定加载自己模块的相对路径。例如,库使用var foo=require('../bar/foobar')而不是执行var foo=require('foobar'),就好像模块已加载到node\u模块中,以便CommonJS读取一样 我只是想知道他们是怎么做到的?我试着通过Grunt查看他们的构建步骤,但看不到任何直接实现这一点的包 对于我所说的技术的一个更具体的例子,库调用存在于中的flattchildren模块,而
var foo=require('../bar/foobar')
而不是执行var foo=require('foobar')
,就好像模块已加载到node\u模块中,以便CommonJS读取一样
我只是想知道他们是怎么做到的?我试着通过Grunt查看他们的构建步骤,但看不到任何直接实现这一点的包
对于我所说的技术的一个更具体的例子,库调用存在于中的flattchildren
模块,而不指定路径。React使用一个名为的工具。其配置与如下所示的行相匹配:
* @providesModule ReactChildReconciler
Torequire('ReactChildReconciler')
调用。它们还将所有内容放在一个目录中,因此路径最终为require('./ReactChildReconciler')
源代码是以结构化的方式组织的,但模块名称在全球范围内是repo所独有的(我认为facebook的所有内部代码)
[需要引用]。这意味着它指向的内容没有歧义
在这个主题上,react的代码中还有其他一些神奇的东西
对不变量(断言、解释等)
的调用和类似的警告
调用通过删除第一个调用后的参数进行转换,以节省空间。警告调用被完全剥离,因为它们被包装在下一个魔法中:仅开发块
if (__DEV__) {
...
}
其汇编目的是:
if (process.env.NODE_ENV !== 'production') {
...
}
它通过envify编译成这样(在开发中),代码运行:
if ('development' !== 'production') {
...
}
在生产过程中:
if ('production' !== 'production') {
...
}
它缩小到:
我说“嘿,解释也被打断了。。哦“