Легко / возможно ли выполнить простой include('./path/to/file')
тип команды в node.js?
Все, что мне нужно, - это иметь доступ к локальным переменным и запускать скрипт. Как люди обычно организуют проекты node.js, которые больше, чем просто привет мир? (Полнофункциональный динамический веб-сайт)
Например, я хотел бы иметь такие каталоги, как:
/models
/views
... и т.д
javascript
node.js
Travis
источник
источник
downloadedModules
в том же каталоге, что и сценарий.Ответы:
Просто сделай
require('./yourfile.js');
Объявите все переменные, к которым вы хотите получить доступ извне, как глобальные переменные. Так что вместо
var a = "hello"
это будетGLOBAL.a="hello"
или простоa = "hello"
Это явно плохо. Вы не хотите загрязнять глобальный масштаб. Вместо этого предлагается метод
export
ваших функций / переменных.Если вам нужен шаблон MVC, взгляните на Geddy.
источник
require
выглядит в ваших модулях npm, если вы не укажете префикс пути чем-то вроде./
Вам нужно понимать CommonJS, который является шаблоном для определения модулей. Вы не должны злоупотреблять ГЛОБАЛЬНОЙ областью видимости, что всегда плохо, вместо этого вы можете использовать токен экспорта, например:
И клиентский код, который будет использовать наш модуль:
Этот код был извлечен из API документации node.js:
http://nodejs.org/docs/v0.3.2/api/modules.html
Кроме того, если вы хотите использовать что-то вроде Rails или Sinatra, я рекомендую Express (я не смог опубликовать URL-адрес, позор за переполнение стека!)
источник
Если вы пишете код для Node, то использование модулей Node, как описано Иваном, без сомнения, лучший вариант.
Однако, если вам нужно загрузить уже написанный JavaScript, который не знает node,
vm
модуль - это то, что вам нужно (и определенно предпочтительнееeval
).Например, вот мой
execfile
модуль, который оценивает сценарийpath
в любомcontext
или глобальном контексте:Также обратите внимание: загруженные модули
require(…)
не имеют доступа к глобальному контексту.источник
require.cache
, поэтому один файл может загружаться несколько раз.require
обычно:function loadService(name) { return require('./services/' + name); }
затем перечислите услуги, но это имеет смысл для приложения.Если вы планируете загрузить функции или объекты внешнего файла javascript, загрузите этот контекст, используя следующий код - обратите внимание на метод runInThisContext:
источник
Расширяя ответы @Shripad и @Ivan , я бы порекомендовал вам использовать стандартные функции Node.js module.export .
В вашем файле для констант ( например
constants.js
) вы должны написать такие константы:Затем в файле, в котором вы хотите использовать эти константы, напишите следующий код:
Если вы никогда раньше не видели
const { ... }
синтаксис: это деструктурирующее присваивание .источник
Простите за воскрешение. Вы можете использовать модуль child_process для выполнения внешних файлов js в node.js
источник