2012-02-13 10 views
13

私は私のプロジェクトにアンダースコア使用していますが、今、私はunderscore.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

使用方法underscore.stringは、明らかにnode.jsで使用するように書かれていますが、html/js内で使用したい場合は、両方のライブラリを含めて既に開始しています。

_ VARを作成しますアンダースコア、それが存在している場合は、2つのファイルを含めることによって、すでに _.strを使用することができますので、 underscore.stringstrstringプロパティでそれを拡張します。

<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> 

あなたが含まへの最後の行を追加する場合は、source fileによるincludecontainsreverse以外のすべてであるをunderscore.string から以外の競合の方法を使用することができます。

希望に役立ちます。

+0

ありがとう、本当に助けてくれました:] – ajax333221

+2

これはアンダースコア.string version 3.xとなり、新しいバージョンは単にmixinの代わりにグローバル 's'をアンダースコアネームスペースにエクスポートします。 v3.xの私の答えを見てください – steampowered

3

あなたはすべての関数(でも競合するもの)に_ではなく、_.strを使用する場合は、動的引数の型に基づいて、競合する方法の間で選ぶことができますバージョン3.xでは

(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

単に使用アンダースコア名前空間に_.mixin()の代わりにグローバルsを追加します。

Here are the changelog notes at Underscore.string

あまりにも多くの衝突があるとしてこれを使用すると、バージョン3.xのために必要なすべてのUnderscore.jsまたはLO-ダッシュミックスインとして

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

使用法は、現在推奨されていますメソッド

関連する問題