Не удается найти модули, необходимые в 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 имеет свой собственный загрузчик модуль. Все модули имеют уникальные идентификаторы, предоставляемые