2012-02-13 3 views
13

Я использую подчеркивание в моих проектах, но теперь я хочу, чтобы расширить его с помощью underscore.stringКак работать как с подчеркиванием, так и с подчеркиванием.string одновременно?

Я прочитал их документации, и, кажется, я мог бы иметь проблемы с использованием обоих, если я не буду принимать дополнительные меры, которые они говорят, принять:

var _ = require('underscore'); 

// Import Underscore.string to separate object, because there are conflict functions (include, reverse, contains) 
_.str = require('underscore.string'); 

// Mix in non-conflict functions to Underscore namespace if you want 
_.mixin(_.str.exports()); 

// All functions, include conflict, will be available through _.str object 
_.str.include('Underscore.string', 'string'); // => true 

Однако, я не имею ни малейшего представления о том, как выполнять эти шаги, мне нужно помочь понять шаги, чтобы работать с обоими и не имеют никаких проблем с их использованием.

До сих пор я сделал это:

<script src="underscore-min.js" type="text/javascript"></script> 
<script src="underscore.string.min.js" type="text/javascript"></script> 

Также еще один связанный с этим вопрос, когда мне удается работать с обоими, я всегда должен использовать _.str, или только на конфликтные функции?

ответ

20

How-To use underscore.string, по-видимому, написан для использования в node.js, но поскольку вы хотите использовать его в html/js, вы уже начали право, включив эти обе библиотеки.

подчеркивают создаст _ вар и если присутствует, underscore.string расширится, что по свойству str и string, так что вы можете использовать _.str уже включив два файла.

<script src="underscore-min.js" type="text/javascript"></script> 
<script src="underscore.string.min.js" type="text/javascript"></script> 
<script type="text/javascript"> _.mixin(_.str.exports()) </script> 

Если добавить, что последняя строку в вашем включает, вы можете использовать любой нерастворимый противоречивый метод из underscore.string, который все, кроме include, contains и reverse по source file.

Надеюсь, что это поможет.

+0

спасибо, вы действительно помогли:] – ajax333221

+2

это устарело для подчеркивания .string версии 3.x, а новая версия просто экспортирует глобальные '' 'вместо mixin для подчеркивания пространства имен. См. Мой ответ ниже для v3.x – steampowered

3

Если вы хотите использовать _, а не _.str на каждой функции (даже конфликтные из них), вы можете динамически выбирать между конфликтующими методами, основанными на типе аргумента:

(function(_contains, _include) { 
    _.mixin(_.str.exports()); 
    _.mixin({ 
     reverse: function(obj) { 
      if (typeof obj === "string") { 
       return _.str.reverse(obj); 
      } 
      return obj.reverse(); 
     }, 
     contains: function(obj, value) { 
      if (typeof obj === "string") { 
       return _.str.contains(obj, value); 
      } 
      return _contains.apply(this, arguments); 
     }, 
     include: function(obj, value) { 
      if (typeof obj === "string") { 
       return _.str.include(obj, value); 
      } 
      return _include.apply(this, arguments); 
     } 
    }); 
})(_.contains, _.include); 
3

В версии 3.х просто использовать глобальный s вместо _.mixin() в пространство имен подчёркивания.

Here are the changelog notes at Underscore.string

Это все, что вам нужно для версии 3.х

<script src="underscore-min.js" type="text/javascript"></script> 
<script src="underscore.string.min.js" type="text/javascript"></script> 

Использование в качестве Underscore.js или Lo-Даш Mixin теперь обескуражен как есть слишком много сталкивающихся методы

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