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