【问题标题】:Using Lo-Dash and Underscore simulatenously in RequireJS environment在 RequireJS 环境中同时使用 Lodash 和 Underscore
【发布时间】:2015-07-14 16:27:45
【问题描述】:

在 RequireJS 环境中,让一些 AMD 模块使用 Lo-Dash 而其他模块同时使用 Underscore 的最佳方法是什么?

【问题讨论】:

  • Lo-dash 应该是 Underscore 的直接替代品(但不是相反)所以你为什么不直接使用 Lo-dash?
  • 我有与 Lo-Dash 不兼容的旧模块,需要与使用 Lo-Dash 的新模块同时运行。目前无法重构和测试旧模块。
  • 。 . .与普遍的看法和说法相反,Lo-Dash 并不是 Underscore 的完美替代品。

标签: javascript requirejs underscore.js amd lodash


【解决方案1】:

我自己能够相当简单地解决问题。特别是对于需要 Lo-Dash 的模块使用 lodash 路径,对于需要“下划线”的模块使用 underscore

require.config({
  paths: {
    'underscore': 'path-to-my-underscore-file',
    'lodash': 'path-to-my-lodash-file'
  }
});

这样,两个库可以同时使用,互不干扰。

与流行的看法和说法相反,Lo-Dash 并不是 Underscore 的完美替代品。

【讨论】:

  • 我不确定谁一直声称 Lo-Dash 是除了 MAYBE Lo-Dash 之外的 Underscore 的完美替代品?
  • 对该问题的第一条评论的赞成票数表明了常见的误解。这可能是假定的,因为 Underscore 和 Lo-Dash 都使用“_”全局。
【解决方案2】:

您已经提到的路径解决方案是一种选择(我认为更好)。我知道另一种方法,但我不一定认为它更好,因为它更具欺骗性。您可以重新映射各种包的“lodash”和“下划线”的含义。

requirejs.config({
    paths: {
        'underscore': 'path-to-my-underscore-file',
        'lodash': 'path-to-my-lodash-file'
    },
    map: {
        'some/lodash_compatible_module': {
            'underscore': 'lodash'
        },
        'some/lodash_compatible_folder': {
            'underscore': 'lodash'
        },
        'some/oldmodule_or_folder': {
            'underscore': 'underscore'
        }
    }
});

如果你想创建一个外观,你也可以这样做:

requirejs.config({
    paths: {
        utils: 'lodash',
        'underscore': 'path-to-my-underscore-file',
        'lodash': 'path-to-my-lodash-file'
    },
    map: {
        'some/lodash_compatible_module': {
            'utils': 'lodash'
        },
        'some/lodash_compatible_folder': {
            'utils': 'lodash'
        },
        'some/oldmodule_or_folder': {
            'utils': 'underscore'
        }
    }
});

虽然这种方法有一些负面影响。有一些很酷的东西。即能够重新映射第三方依赖项可能认为包是什么(如果这是一个问题)。

有关地图工作原理的更多信息,请查看:http://requirejs.org/docs/api.html#config-map

【讨论】:

  • 非常有趣的接线!
猜你喜欢
  • 1970-01-01
  • 2014-09-22
  • 2013-01-08
  • 2012-06-07
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多