扩展另一个模块的RequireJS模块

扩展另一个模块的RequireJS模块,requirejs,amd,Requirejs,Amd,我正在使用一个项目,它有两个不同的文件包装在AMD中,其中一个扩展了另一个,项目是 该项目有两个文件(build/bundle.js和build/formatters.js),每个文件导出jsondifffatch。当我将它们包括在我的文件中时,如: define(['jsondiffpatch', 'jsondiffpatch-formatters'], function (jsondiffpatch) { }); 格式化程序扩展不存在。如果我更改了主配置,则makejson

我正在使用一个项目,它有两个不同的文件包装在AMD中,其中一个扩展了另一个,项目是

该项目有两个文件(
build/bundle.js
build/formatters.js
),每个文件导出
jsondifffatch
。当我将它们包括在我的文件中时,如:

define(['jsondiffpatch',
        'jsondiffpatch-formatters'], function (jsondiffpatch) {
});
格式化程序扩展不存在。如果我更改了主配置,则make
jsondiffpath
取决于以下格式化程序:

shim: {
    'jsondiffpatch': {
        deps: ['jsondiffpatch-formatters']
    }
}

我还是不懂格式化程序。这是一个相当普遍的做法,但还没有看到克服它;我知道这很简单,我遗漏了什么?

当你用像RequireJS这样的AMD加载程序加载jsondiffpatch时,格式化程序是一个不同的模块。换句话说,它的工作原理与不使用AMD加载程序加载jsondiffpatch时略有不同。下面是一个完整的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/html.css" type="text/css" />
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/annotated.css" type="text/css" />
    </head>
    <script type="text/javascript" src="bower_components/requirejs/require.js"></script>
  </head>
  <body>
    <div id="visual"></div>
    <hr/>
    <div id="annotated"></div>
    <script>
      require.config({
        baseUrl: ".",
        paths: {
          jsondiffpatch: "bower_components/jsondiffpatch/build/bundle",
          "jsondiffpatch.formatters": "bower_components/jsondiffpatch/build/formatters"
        },
        enforceDefine: true
      });
      require(["jsondiffpatch", "jsondiffpatch.formatters"],
        function (jsdp, formatters) {

        //
        // Code here adapted from jsondiffpatch's examples:
        // https://github.com/benjamine/jsondiffpatch
        //
        var left = { a: 3, b: 4 };
        var right = { a: 5, c: 9 };
        var delta = jsdp.diff(left, right);

        document.getElementById('visual').innerHTML =
          formatters.html.format(delta, left);
        document.getElementById('annotated').innerHTML =
          formatters.annotated.format(delta, left);
      });
    </script>
  </body>
</html>


require.config({ baseUrl:“.”, 路径:{ jsondiffpatch:“bower_组件/jsondiffpatch/build/bundle”, “jsondifffpatch.formatters”:“bower_组件/jsondifffpatch/build/formatters” }, 强制定义:true }); 需要([“jsondiffpatch”、“jsondiffpatch.formatters”], 函数(jsdp、格式化程序){ // //这里的代码改编自jsondiffpatch的示例: // https://github.com/benjamine/jsondiffpatch // var left={a:3,b:4}; var-right={a:5,c:9}; var delta=jsdp.diff(左、右); document.getElementById('visual').innerHTML= formatters.html.format(delta,左); document.getElementById('annotated').innerHTML= 格式化程序。带注释的。格式(三角形,左侧); });

除了上面的HTML之外,您唯一需要的是使用Bower安装RequireJS和jsondiffpatch。

当您使用类似RequireJS的AMD加载程序加载jsondiffpatch时,格式化程序是一个不同的模块。换句话说,它的工作原理与不使用AMD加载程序加载jsondiffpatch时略有不同。下面是一个完整的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/html.css" type="text/css" />
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/annotated.css" type="text/css" />
    </head>
    <script type="text/javascript" src="bower_components/requirejs/require.js"></script>
  </head>
  <body>
    <div id="visual"></div>
    <hr/>
    <div id="annotated"></div>
    <script>
      require.config({
        baseUrl: ".",
        paths: {
          jsondiffpatch: "bower_components/jsondiffpatch/build/bundle",
          "jsondiffpatch.formatters": "bower_components/jsondiffpatch/build/formatters"
        },
        enforceDefine: true
      });
      require(["jsondiffpatch", "jsondiffpatch.formatters"],
        function (jsdp, formatters) {

        //
        // Code here adapted from jsondiffpatch's examples:
        // https://github.com/benjamine/jsondiffpatch
        //
        var left = { a: 3, b: 4 };
        var right = { a: 5, c: 9 };
        var delta = jsdp.diff(left, right);

        document.getElementById('visual').innerHTML =
          formatters.html.format(delta, left);
        document.getElementById('annotated').innerHTML =
          formatters.annotated.format(delta, left);
      });
    </script>
  </body>
</html>


require.config({ baseUrl:“.”, 路径:{ jsondiffpatch:“bower_组件/jsondiffpatch/build/bundle”, “jsondifffpatch.formatters”:“bower_组件/jsondifffpatch/build/formatters” }, 强制定义:true }); 需要([“jsondiffpatch”、“jsondiffpatch.formatters”], 函数(jsdp、格式化程序){ // //这里的代码改编自jsondiffpatch的示例: // https://github.com/benjamine/jsondiffpatch // var left={a:3,b:4}; var-right={a:5,c:9}; var delta=jsdp.diff(左、右); document.getElementById('visual').innerHTML= formatters.html.format(delta,左); document.getElementById('annotated').innerHTML= 格式化程序。带注释的。格式(三角形,左侧); });

除了上面的HTML之外,您唯一需要的是使用Bower安装RequireJS和jsondiffpatch。

当您使用类似RequireJS的AMD加载程序加载jsondiffpatch时,格式化程序是一个不同的模块。换句话说,它的工作原理与不使用AMD加载程序加载jsondiffpatch时略有不同。下面是一个完整的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/html.css" type="text/css" />
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/annotated.css" type="text/css" />
    </head>
    <script type="text/javascript" src="bower_components/requirejs/require.js"></script>
  </head>
  <body>
    <div id="visual"></div>
    <hr/>
    <div id="annotated"></div>
    <script>
      require.config({
        baseUrl: ".",
        paths: {
          jsondiffpatch: "bower_components/jsondiffpatch/build/bundle",
          "jsondiffpatch.formatters": "bower_components/jsondiffpatch/build/formatters"
        },
        enforceDefine: true
      });
      require(["jsondiffpatch", "jsondiffpatch.formatters"],
        function (jsdp, formatters) {

        //
        // Code here adapted from jsondiffpatch's examples:
        // https://github.com/benjamine/jsondiffpatch
        //
        var left = { a: 3, b: 4 };
        var right = { a: 5, c: 9 };
        var delta = jsdp.diff(left, right);

        document.getElementById('visual').innerHTML =
          formatters.html.format(delta, left);
        document.getElementById('annotated').innerHTML =
          formatters.annotated.format(delta, left);
      });
    </script>
  </body>
</html>


require.config({ baseUrl:“.”, 路径:{ jsondiffpatch:“bower_组件/jsondiffpatch/build/bundle”, “jsondifffpatch.formatters”:“bower_组件/jsondifffpatch/build/formatters” }, 强制定义:true }); 需要([“jsondiffpatch”、“jsondiffpatch.formatters”], 函数(jsdp、格式化程序){ // //这里的代码改编自jsondiffpatch的示例: // https://github.com/benjamine/jsondiffpatch // var left={a:3,b:4}; var-right={a:5,c:9}; var delta=jsdp.diff(左、右); document.getElementById('visual').innerHTML= formatters.html.format(delta,左); document.getElementById('annotated').innerHTML= 格式化程序。带注释的。格式(三角形,左侧); });

除了上面的HTML之外,您唯一需要的是使用Bower安装RequireJS和jsondiffpatch。

当您使用类似RequireJS的AMD加载程序加载jsondiffpatch时,格式化程序是一个不同的模块。换句话说,它的工作原理与不使用AMD加载程序加载jsondiffpatch时略有不同。下面是一个完整的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/html.css" type="text/css" />
    <link rel="stylesheet" href="bower_components/jsondiffpatch/src/formatters/annotated.css" type="text/css" />
    </head>
    <script type="text/javascript" src="bower_components/requirejs/require.js"></script>
  </head>
  <body>
    <div id="visual"></div>
    <hr/>
    <div id="annotated"></div>
    <script>
      require.config({
        baseUrl: ".",
        paths: {
          jsondiffpatch: "bower_components/jsondiffpatch/build/bundle",
          "jsondiffpatch.formatters": "bower_components/jsondiffpatch/build/formatters"
        },
        enforceDefine: true
      });
      require(["jsondiffpatch", "jsondiffpatch.formatters"],
        function (jsdp, formatters) {

        //
        // Code here adapted from jsondiffpatch's examples:
        // https://github.com/benjamine/jsondiffpatch
        //
        var left = { a: 3, b: 4 };
        var right = { a: 5, c: 9 };
        var delta = jsdp.diff(left, right);

        document.getElementById('visual').innerHTML =
          formatters.html.format(delta, left);
        document.getElementById('annotated').innerHTML =
          formatters.annotated.format(delta, left);
      });
    </script>
  </body>
</html>


require.config({ baseUrl:“.”, 路径:{ jsondiffpatch:“bower_组件/jsondiffpatch/build/bundle”, “jsondifffpatch.formatters”:“bower_组件/jsondifffpatch/build/formatters” }, 强制定义:true }); 需要([“jsondiffpatch”、“jsondiffpatch.formatters”], 函数(jsdp、格式化程序){ // //这里的代码改编自jsondiffpatch的示例: // https://github.com/benjamine/jsondiffpatch // var left={a:3,b:4}; var-right={a:5,c:9}; var delta=jsdp.diff(左、右); document.getElementById('visual').innerHTML= formatters.html.format(delta,左); document.getElementById('annotated').innerHTML= 格式化程序。带注释的。格式(三角形,左侧); });
除了上面的HTML之外,您唯一需要的是使用Bower安装RequireJS和jsondiffpatch。

这应该可以:

shim: {
    'jsondiffpatch-formatters': {
        deps: ['jsondiffpatch'],
        exports: 'jsondiffpatch.formatters'
    },
    'jsondiffpatch': {
        exports: 'jsondiffpatch'
    }
}
这应该起作用:

shim: {
    'jsondiffpatch-formatters': {
        deps: ['jsondiffpatch'],
        exports: 'jsondiffpatch.formatters'
    },
    'jsondiffpatch': {
        exports: 'jsondiffpatch'
    }
}
这应该起作用:

shim: {
    'jsondiffpatch-formatters': {
        deps: ['jsondiffpatch'],
        exports: 'jsondiffpatch.formatters'
    },
    'jsondiffpatch': {
        exports: 'jsondiffpatch'
    }
}
这应该起作用:

shim: {
    'jsondiffpatch-formatters': {
        deps: ['jsondiffpatch'],
        exports: 'jsondiffpatch.formatters'
    },
    'jsondiffpatch': {
        exports: 'jsondiffpatch'
    }
}
我看了一下,但我觉得这些不像AMD文件。另外,您的代码不应该是:define(['jsondifffpatch','jsondifffpatch formatters',],function(jsondifffpatch,form)