Rozważam przyjęcie browserify dla niektórych z moich projektów, ale chciałbym się upewnić, że inni nie będą musieli używać przeglądarki, jeśli będą chcieli użyć (w pakiecie) kod. Oczywistym sposobem na to jest zarówno ekspozycja eksportów modułów poprzez module.exports
, jak i globalną window.
. Wolę jednak nie zanieczyszczać globalnej przestrzeni nazw dla tych, którzy są require
skryptem.Przeglądanie: W razie potrzeby użyj module.exports, w przeciwnym razie można wyeksponować globalne
Czy można wykryć, czy skrypt jest w postaci require
d? Jeśli tak, to mógłby zrobić coś takiego:
var mymodule = (function() { ... })();
if (isRequired()) {
module.exports = mymodule;
} else {
window.mymodule = mymodule;
}
Należy pamiętać, że bez względu na to co to będzie dołączonego wcześniej, więc nie będzie var mymodule
narażając globalnym. Ponadto obecnie używam urządzenia revealing module pattern, ale wolałbym przejść na coś bardziej odpowiedniego do przeglądania w trybie przeglądania.
Jaki jest najlepszy sposób na sprawienie, aby moduł był w stanie i require
w stanie istanie? Czy w obu przypadkach najlepiej jest ujawnić sytuację globalną?
Przegrywanie sprawia, że 'module',' module.exports' i 'require' są dostępne dla wszystkich plików w pakiecie. Tak więc tylko moje łączenie się sprawia, że są one dostępne. Dzięki za odpowiedzi. –