2013-11-14 5 views
0

В некотором app.js, используя следующий кодновый требует ('подчеркивания') против требует ('подчеркивания') NodeJS [WebStorm 7 автозаполнения]

var _ = require('underscore'); 

_.times(2, function() { 
    console.log('Hello'); 
}); 

WebStorm 7 жалуется на неразрешенную функцию 'времени'. После некоторых поисковых запросов я узнал, что если я сделаю var _ = new require('underscore');, тогда веб-служба не будет жаловаться вообще. Тем не менее, я очень новичок в NodeJS, поэтому не мог понять это правильно.

Пожалуйста, расскажите мне, в чем разница между new require('') и require('') и как именно он решил проблему. Кроме того, есть ли последствия использования new require?

ответ

1

Чтобы все было ясно: _ - это функция, поэтому вы можете использовать ее с ключевым словом new. Но предполагается, что он используется как оболочка, которая добавляет методы к объекту, который вы передаете, чтобы сделать ваш объект api ориентированным.

Так что если вы используете _ как функцию или конструктор, вам необходимо передать объект в качестве аргумента, и вы получите объект с вашими данными и некоторыми функциями подчеркивания, прикрепленными как методы (то есть вам не нужно для передачи ваших данных в качестве первого аргумента, он инкапсулируется в объект).

В принципе, написание var _ = new require('underscore') неверно. Вы получите бесполезный объект, который определенно не настоящий _. А как насчет Webstorm - он будет жаловаться много, если вы не отключите эти функции. Javascript слишком динамичен, чтобы заставить их работать во всех случаях.

Основная информация: use var _ = require('underscore');, ignore Webstrom.

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