Не удается найти модули, необходимые в React

Я просматривал кодовую базу React, и я заметил, как React's require не совсем ведет себя как в Nodejs. Я не понимаю, что здесь происходит.

глядя на строку 19 на ReactClass.js, например, есть require('emptyObject'), но emptyObject не указан в пакете.json, и нигде не сказано, откуда этот модуль.

https://github.com/facebook/react/blob/master/src/isomorphic/classic/class/ReactClass.js#L19

Я найти "emptyObject" на npmjs, но API там, кажется, отличается от того, который используется в React;.isEmpty grepped в React не связан с emptyObject.

Итак, откуда загружается emptyObject и как React's require делать то, что он делает? Это не интуитивно. Совсем.

2 ответов


расположение emptyObject модуль который реагирует ссылается на 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 в узле называется Haste, настраиваемая модульная система, построенная для проектов с открытым исходным кодом Facebook.

на самом деле, если вы не хотите понять внутреннюю работу React или внести свой вклад в проекты с открытым исходным кодом Facebook, вам не нужно знать это. Другими словами, Не рекомендуется использовать Haste для написания собственного проекта.

в том же духе,


Я заметил, как реагировать require не совсем ведет себя как в Nodejs.

право. Facebook имеет свой собственный загрузчик модуль. Все модули имеют уникальные идентификаторы, предоставляемые