Теория:
Одна из вещей, которые мне нравятся в node.js, - это использование его в качестве команды инструмент линии.
Теоретически я могу писать библиотеки на Javascript и размещать их в моем каталоге ~ / .node_libraries
, а затем я могу повторно использовать эти библиотеки.
Так, например, у меня есть файл text.js в ~ / .node_libraries
, и в нем есть набор функций, связанных с текстом, которые я использую постоянно ( depunctuate ()
, tokenize_text ()
и тому подобное).
Прелесть в том, что я мог использовать один и тот же файл text.js
со своими сценариями командной строки и на стороне сервера. Прямо сейчас я занимаюсь всей этой обработкой текста с помощью Python, но я хотел бы просто придерживаться одного языка.
Практика:
AFAICT, чтобы создать модуль node.js, я должен прикрепить все, что я хочу, чтобы было доступно для , экспортирует
или это
. Т.е. в text.js
я должен сделать:
exports.depunctuate = depunctuate
или
this.depunctuate = depunctuate
Если я использую экспорт
, У меня проблемы с использованием библиотеки на стороне сервера а-ля:
<script src=text.js></script>
, потому что тогда я получаю экспорт не определен ошибки.
Если я использую this
, я избегаю ошибки , но все, что я экспортирую, в конечном итоге прикрепляется к объекту окна.
Есть ли способ настроить эти библиотеки, чтобы избежать обеих этих проблем? Например, есть ли способ обернуть экспорт exports
, чтобы переменная была очевидна для узла, но не тогда, когда она используется в простом файле Javascript на сервере?