如何同时使用下划线和下划线?

时间:2012-02-13 18:26:38

标签: javascript underscore.js

我在我的项目中使用下划线,但现在我想使用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,还是只使用冲突的函数?

3 个答案:

答案 0 :(得分:20)

如何使用underscore.string 显然是为了在node.js中使用而编写的,但是你想在html / js中使用它,你已经通过包含这两个库来开始了。< / p>

下划线会创建_ var,如果存在, underscore.string 会将其扩展为str和{{1因此,您可以通过包含这两个文件来使用string

_.str

如果您将最后一行添加到您的包含,则可以使用 underscore.string 中的任何非冲突方法,该方法除了<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> include和{{1根据{{​​3}}。

希望有所帮助。

答案 1 :(得分:4)

在版本3.x中,只需使用全局s而不是_.mixin()到下划线命名空间。

<强> Here are the changelog notes at Underscore.string

这就是版本3.x

所需的全部内容
<script src="underscore-min.js" type="text/javascript"></script>
<script src="underscore.string.min.js" type="text/javascript"></script>
  

现在不鼓励使用Underscore.js或Lo-Dash mixin   太多的碰撞方法

答案 2 :(得分: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);