Подтвердить что ты не робот

Как работать одновременно с подчеркиванием и подчеркиванием .string?

Я использую подчеркивание для своих проектов, но теперь я хочу расширить его с помощью 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 или только для конфликтующих функций?

4b9b3361

Ответ 1

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

подчеркивание создаст _ var, и если он присутствует, 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 в соответствии с исходный файл.

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

Ответ 2

Если вы хотите использовать _ вместо _.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.x просто используйте глобальный s вместо _.mixin() в пространство имен подчеркивания.

Вот заметки изменений на странице 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 теперь обескуражено, поскольку существует слишком много сталкивающихся методов