Как browserify делает узел.модули js для работы в браузере?


Я действительно не могу понять какую-то работу позади browserify. При использовании чистых модулей JavaScript кажется "легким" преобразовать его в код браузера, даже если у него много зависимостей.

Но browserify делает больше:

Многие модули npm, которые не делают ввода-вывода, просто будут работать после того, как будут браузеризовался. Другие берут на себя больше работы.

Многие встроенные модули узлов были обернуты для работы в браузере, но только тогда, когда вы явно require() или используете их функциональность.

Когда вы require() любой из этих модулей, вы получите специфичная для браузера прокладка.

И снова:

  • процесс.nextTick (), _ _ dirname и _ _ filename node-isms работают
  • получить браузерные версии библиотек ядра узла события, поток, путь, url, утверждать, буфер, утиль, строки запроса, HTTP и ВМ, и крипто, когда вы require () them

Итак... process.nextTick(), __dirname внутри браузера... даже http? Для меня это не имеет смысла... как __dirname предполагается чтобы работать в браузере?

1 8

1 ответ:

process.nextTick() просто запускает обратный вызов позже.
В браузере это моделируется с помощью setTimeout(func, 0), setImmediate, или requestAnimationFrame().

__dirnamne и __filename - это просто переменные, которые browserify вводит во время компиляции на основе исходного пути к файлу.