【问题标题】:Using require.js dependency injection使用 require.js 依赖注入
【发布时间】:2013-11-06 06:26:36
【问题描述】:

我正在尝试制作一个使用 jQuery 和 Handlebars 的模块

这是主文件:

require(['app', 'jquery', 'handlebars' ], function (app, $, handlebars) {

    console.log('Running jQuery %s', $().jquery);
});

这是应用文件:

define(['jquery', 'handlebars'], function ($, hb) {

    $(function() {

        var source   = $("#some-template").html();
        var template = hb.compile(source);
        var data = {...});
});

为什么它说 hb is not defined 但是当我删除所有依赖项时,它在使用 Handlebars 而不是 hb 时有效(这是正常方式)?

【问题讨论】:

  • 注意:没有必要(并且通常会混淆)包含不使用且仅由子模块需要的模块的依赖项;在您的情况下, main 不需要把手(并且 jQuery 仅用于调试,对吗?)因此它不应在定义调用中列出。
  • @kryger 你是什么意思没有使用? bot jquery 和 handlebars 在模块内部使用,除非我在这里混淆了术语?
  • @kryger 我是 require.js 的新手,那么正确的方法是什么?
  • 如果您不在该特定模块中使用 Handlebars,则“主”文件的签名应为 require(['app', 'jquery' ], function (app, $) (...)

标签: javascript dependency-injection dependencies requirejs require


【解决方案1】:

Handlebars 不兼容 AMD/RequireJS。你需要shim它:http://requirejs.org/docs/api.html#config-shim

  shim: {
    handlebars: {
      exports: 'Handlebars'
    },
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多