2017-01-04 4 views
1

Я пытаюсь создать приложение и структуру папок как так:Nodejs Список функций из разных файлов

./ 
    index.js 
    options/ 
     basic.js 
     help.js 

JS файлы в папке опций будут иметь объекты, например, так:

ping = { 
    info: 'text', 
    fn: function() {} 
} 

Я хочу index.js, чтобы быть в состоянии сделать что-то вроде

var options = require('./options'); 
options['ping'].fn(); 

Как экспортировать/требовать, чтобы заставить его работать, как это? Мои попытки были бесполезны.

Я хочу быть в состоянии сделать это без JS компилятором как ES

+0

'module.exports = ping'. [Подробнее здесь] (http://stackoverflow.com/questions/5311334/what-is-the-purpose-of-node-js-module-exports-and-how-do-you-use-it). – Marty

+0

, тогда я получаю не могу найти опции модуля – user3916570

+0

Вам нужно «require ('./ options/file_with_your_code.js») '(либо' basic', либо 'help', вы не указали, в каком файле находится ваш код). – Marty

ответ

0

В файлах JS (скажем filename.js) в параметрах использования папки module.exports:

module.exports = { 
    info: 'text', 
    fn: function() {} 
}; 

Затем потреблять ваш модуль :

var options = require('./options/filename.js'); 
options.fn(); 

Это CommonJS подход, который поддерживает NodeJS изначально для модулей.

Вы не сможете найти require папку, не обращаясь к какой-либо другой оснастке, так как require работает на уровне файла.

От NodeJS-х doc:

Node.js имеет простую систему загрузки модулей. В Node.js файлы и модули находятся во взаимно-однозначном соответствии (каждый файл рассматривается как отдельный модуль ).

Вот хорошая статья, чтобы узнать больше: https://www.sitepoint.com/understanding-module-exports-exports-node-js/

+0

, тогда я получаю не могу найти модуль './options' в index.js – user3916570

+0

попробуйте: './options.js' –

+0

опции - это папка – user3916570

1

Вы можете создать index.js файл внутри options папку, которая экспортирует все двойников модулей.

module.exports = { 
    ping: require('./help.js'), // Assuming your "ping" object is here. 
    other: require('./basic.js') 
}; 
Смежные вопросы