【问题标题】:using underscorejs in a couchapp list在 couchapp 列表中使用 underscorejs
【发布时间】:2012-07-31 15:54:28
【问题描述】:

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

我不确定该怎么做;有什么线索吗?

谢谢

【问题讨论】:

    标签: couchdb requirejs underscore.js couchapp


    【解决方案1】:

    我唯一的建议是使用直接替换 Lo-Dash

    如果提供 AMD 加载程序支持。

    【讨论】:

    • 谢谢,很遗憾我也无法使用 lodash。这是我所做的:var _ = require('vendor/lodash'); log(_.VERSION);。我还尝试了lodash.com 上指示的各种方法,但均未成功。有什么线索吗?
    【解决方案2】:

    正如日志中的错误消息所述,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

    【讨论】:

    • @rhaper 谢谢,不幸的是它不起作用。我认为这是因为 couchdb 仅支持 requirejs v1,但我可能错了,因为我对此不太准确。 AMD-ify 版本不能正常工作(var _ = require('vendor/underscore'); log(_); 返回未定义)。任何想法?谢谢
    【解决方案3】:

    看起来您正在尝试创建一个 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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多