在couchapp列表中使用underscorejs

时间:2012-08-02 16:06:50

标签: couchdb requirejs underscore.js couchapp

我正在使用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一起使用,您可以将其作为普通脚本加载,包装或修补您的副本,或下载分叉版本。

我不确定如何继续;任何线索?

由于

3 个答案:

答案 0 :(得分:1)

我唯一的建议是使用插入式替换Lo-Dash

除非提供AMD加载器支持,否则其他内容。

答案 1 :(得分:1)

作为日志状态中的错误消息,Underscore.js不再格式化为开箱即用的AMD模块。您有两种可能的解决方案:垫片或使用AMD-ified下划线。

<强>垫片:

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

在你的情况下很简单,配置requireJS如下:

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

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

<强> AMD-IFY:

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

答案 2 :(得分:1)

看起来你正在尝试创建一个couchdb列表函数。这是我如何拉下划线。这一切都在coffeescript中......

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

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

在列表函数中:

(head, req) ->
  _ = require 'lib/underscore'