2015-07-05 2 views
1

В python при импорте модуля операторы внутри блока 'if name == main' блок импортированного модуля не выполнен.Метод «require()»

Существует ли эквивалентный подход, который может предотвратить выполнение нежелательных операторов в импортированном модуле в javascript?

+2

[Доступ к основной модуль #] (https://nodejs.org/api/modules.html#modules_accessing_the_main_module), вы имеете в виду это? – fuyushimoya

ответ

5

Комментарий к комментарию Via fuyushimoya.

Когда файл запускается непосредственно из узла, require.main устанавливается в его модуль . Это означает, что вы можете определить, является ли файл был запущен непосредственно путем тестирования

require.main === module 

для файла foo.js, тогда это будет справедливо, если запустить через узел foo.js, тогда, но ложные если управляют требуют ('./foo').

- Node.js documentation

Итак:

if (require.main === module) { 
    // Code that runs only if the module is executed directly 
} else { 
    // Code that runs only if the code is loaded as a module 
} 
+0

Я не уверен, его состояние, хотя я все еще изучаю python, если в python этот способ заключается в создании структуры master-slave, то, возможно, [cluster] (https://nodejs.org/api/cluster. html) с 'cluster.isMaster' - это то, что он хочет? – fuyushimoya

+0

@Quentin Spot on .. спасибо! – shintocv

+0

@fuyushimoya .. в python это .. 'if __name__ == '__main__': // code' спасибо :) – shintocv

-2

Просто сгруппируйте свои утверждения внутри функций и экспортируйте нужные функции.

exports.function1 = new function() { 
    //some code 
} 
function function2() { 
    //some other code 
} 

Подробнее об этом here.

+2

Вы, кажется, совершенно не поняли вопрос. – Quentin

Смежные вопросы