Theory:Propozycje czynienia z `exports` w node.js
Jedną z rzeczy, które przemawia do mnie o node.js używa go jako narzędzia wiersza poleceń.
Teoretycznie mogę pisać biblioteki w JavaScript i umieszczać je w moim katalogu ~/.node_libraries
, a następnie mogę ponownie używać tych bibliotek.
Tak na przykład, mam text.js w ~/.node_libraries
i ma kilka funkcji związanych tekstowych używam kółko (depunctuate()
, tokenize_text()
, takie rzeczy).
Piękno tego polega na tym, że mogłem użyć tego samego pliku text.js
z moimi skryptami wiersza poleceń i po stronie serwera. W tej chwili robię wszystkie teksty z Pythonem, ale chciałbym trzymać się jednego języka.
Praktyka:
AFAICT, w celu stworzenia modułu node.js, muszę dołączyć wszystko, co chcesz mieć dostęp do exports
lub this
. Czyli w text.js
mam zrobić:
exports.depunctuate = depunctuate
lub
this.depunctuate = depunctuate
Jeśli używam exports
, mam problemy z wykorzystaniem biblioteki po stronie serwera à la:
<script src=text.js></script>
ponieważ wtedy dostaję eksport nie jest zdefiniowany błędy.
Jeśli używam this
, unikam błędu, ale wszystko, co eksportuję, kończy się dołączaniem do obiektu okna.
Czy istnieje sposób, w jaki mogę skonfigurować te biblioteki, aby uniknąć obu tych problemów? Na przykład, czy istnieje sposób, w jaki można zawinąć eksportowanie exports
, tak aby var był widoczny dla węzła, ale nie wtedy, gdy jest używany w prostym pliku JavaScript na serwerze?
To się udało! Muszę kochać Stackoverflow ... BTW, dlaczego nie mogę po prostu powiedzieć 'if (exports)'? –
Zaczekaj, po namyśle, wciąż jestem w stanie dostać się do 'window.depunctuate'. –