2

我正在使用 couchdb 1.2.x,我正在尝试underscorejs在列表中使用,但没有成功。

这是我如何进行的:

function(head, req) {
  var _ = require('vendor/underscore/underscore');
  log(_);
}

通过查看 couchdb 日志,我可以看到它var _是未定义的。此外,underscorejs 日志说:

1.3.0 — 2012 年 1 月 11 日
从 Underscore 中删除了 AMD (RequireJS) 支持。如果您想将 Underscore 与 RequireJS 一起使用,您可以将其作为普通脚本加载、包装或修补您的副本,或下载分叉版本。

我不确定如何进行;任何线索?

谢谢

4

3 回答 3

1

我唯一的建议是使用替代品Lo-Dash

除此之外,如果提供 AMD 加载程序支持。

于 2012-08-05T14:51:17.543 回答
1

看起来您正在尝试创建一个 couchdb 列表函数。以下是我如何使用下划线。这一切都在咖啡脚本中......

在我的设计文档中,我导入并声明库,然后从列表函数中拉入:

designDoc =
  ...
  lib:
    underscore: "<actual underscore code as a string>"
  ...
  list:
    listFunction: "<list function as a string, see below>"
  ...

在列表函数本身中:

(head, req) ->
  _ = require 'lib/underscore'
于 2012-08-31T18:11:04.103 回答
1

正如日志中的错误消息所述,Underscore.js 不再被格式化为开箱即用的 AMD 模块。您有两种可能的解决方案:填充或使用 AMD 化的下划线。

垫片:

Shim将在必要的 AMD 样板文件中包含下划线,并且对您相对透明,允许您使用未修改版本的 _。

在您的情况下,这很容易,像这样配置 requireJS:

require.config({
  paths: {
    underscore: "vendor/underscore/underscore"
  },
  shim: {
    underscore: {
      exports: '_'
    }
  }
});

注意:为方便起见,我还为下划线定义了一个路径别名,但没有必要让 shim 工作。

AMD 化:

下划线(和主干)的 AMD 化版本由 requireJS 的作者在此处维护:https ://github.com/amdjs/underscore

于 2012-08-05T17:42:35.937 回答