2012-02-13 35 views
13

Tôi đang sử dụng nhấn mạnh vào các dự án của tôi, nhưng bây giờ tôi muốn mở rộng nó bằng cách sử dụng một underscore.stringLàm cách nào để làm việc với cả dấu gạch dưới và gạch dưới cùng một lúc?

Tôi đọc tài liệu hướng dẫn của họ, và có vẻ như tôi có thể có vấn đề về sử dụng cả hai nếu tôi không dùng các biện pháp thêm họ nói để thực hiện:

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 

Tuy nhiên, tôi không biết làm cách nào để làm việc với cả hai bước và không gặp khó khăn khi sử dụng chúng.

Cho đến nay, tôi đã làm điều này:

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

Ngoài ra một câu hỏi khác liên quan, khi tôi quản lý để làm việc với cả hai, phải tôi luôn luôn sử dụng _.str, hoặc chỉ trên các chức năng mâu thuẫn?

Trả lời

20

Cách sử dụng dấu gạch dưới.string rõ ràng được viết để sử dụng trong node.js, nhưng khi bạn muốn sử dụng trong html/js bạn đã bắt đầu ngay bằng cách bao gồm cả hai thư viện đó.

nhấn sẽ tạo ra _ var và nếu đó là hiện nay, underscore.string sẽ mở rộng mà bằng một tài sản strstring vì vậy bạn có thể sử dụng _.str đã được bao gồm hai tập tin.

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

Nếu bạn thêm rằng dòng cuối cùng để bao gồm, bạn có thể sử dụng bất kỳ phương pháp không mâu thuẫn từ underscore.string đó là tất cả nhưng include, containsreverse theo source file.

Hy vọng điều đó sẽ hữu ích.

+0

cảm ơn, bạn thực sự đã giúp:] – ajax333221

+2

điều này đã lỗi thời cho dấu gạch dưới .string phiên bản 3.x và phiên bản mới chỉ xuất khẩu 's' toàn cục thay vì mixin thành không gian tên gạch dưới. Xem câu trả lời của tôi bên dưới cho v3.x – steampowered

3

Nếu bạn muốn sử dụng _ hơn _.str trên tất cả các chức năng (ngay cả những mâu thuẫn), bạn có thể tự động chọn giữa các phương pháp mâu thuẫn dựa trên loại đối số:

(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

Trong phiên bản 3.x chỉ cần sử dụng toàn cầu s thay vì _.mixin() thành không gian tên gạch dưới.

Here are the changelog notes at Underscore.string

Đây là tất cả các bạn cần cho phiên bản 3.x

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

Cách sử dụng như Underscore.js hoặc Lo-Dash mixin nay không được khuyến khích vì có quá nhiều đụng độ phương thức

Các vấn đề liên quan