2012-02-13 13 views
13

estoy usando subrayado en mis proyectos, pero ahora quiero extenderlo a mediante el underscore.string¿Cómo trabajar con underscore y underscore.string al mismo tiempo?

leí su documentación, y parece que podría tener problemas utilizando tanto si yo no tomo las medidas adicionales que dicen tomar:

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 

sin embargo, no tenemos ninguna idea de cómo seguir esos pasos, necesito ayuda para entender los pasos para trabajar con ambos y no tienen problemas de usarlos.

Hasta ahora, he hecho esto:

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

También otra pregunta relacionada, cuando me las arreglo para trabajar con ambos, deben siempre usar _.str, o sólo en las funciones conflictivas?

Respuesta

20

How-To usa underscore.string aparentemente está escrito para su uso en node.js, pero como usted quiere usarlo en html/js, ya comenzó al incluir ambas bibliotecas.

subrayan creará el _ var y si que está presente, underscore.string que se extenderá por una propiedad str y string por lo que puede utilizar _.str ya mediante la inclusión de los dos archivos.

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

Si se agrega que la última línea a su incluye, se puede utilizar cualquier método no contradictoria de underscore.string que es todo pero include, containsreverse y de acuerdo con el source file.

Espero que ayude.

+0

gracias, has ayudado mucho:] – ajax333221

+2

esto está desactualizado para subrayado .string versión 3.x y la nueva versión simplemente exporta un 's' global en lugar de mixin para subrayar el espacio de nombres. Ver mi respuesta a continuación para v3.x – steampowered

3

Si desea utilizar _ en lugar de _.str en cada función (incluso las más conflictivas), se puede recoger de forma dinámica entre los métodos en conflicto con base en el tipo de argumento:

(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

En la versión 3.x simplemente usar el s global en lugar de _.mixin() en el espacio de nombres de subrayado.

Here are the changelog notes at Underscore.string

Esto es todo lo que necesita para la versión 3.x

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

uso como Underscore.js o mixin Lo-Dash ahora se desanima ya que hay demasiados colisión métodos

Cuestiones relacionadas