2

我想将text.js插件放在自定义目录中并有一个自定义名称,例如:/app/some/path/here/to/text-version.js.

当我require使用text!RequireJS 的东西试图从配置中text.js指定的 url加载时baseUrl

如何告诉 RequireJS 在具有特定名称的特定目录中查找 text.js 插件?

4

2 回答 2

2

如果text.js库与 AMD 兼容(导出define包装功能的语句),则可以在模块的define存根中使用完整路径:

// yourmodule.js
define(['/app/some/path/here/to/text-version.js'], function(text) {
    // etc
});

在此处阅读有关 AMD 模块定义的更多信息:http ://requirejs.org/docs/whyamd.html#amd

否则,您将需要在主 RequireJS 配置脚本中填充该库:

// main.js
require.config({
  paths: {
    text: '/app/some/path/here/to/text-version.js'
  },

  shim: {
    text : {
      exports : 'text'
    }
  }
});

// yourmodule.js
define(['text'], function(text) {
    // etc
});

在此处阅读有关 RequireJS 匀场的更多信息:http ://requirejs.org/docs/api.html#config-shim

于 2013-03-20T01:12:27.383 回答
0

我刚刚发现,虽然 RequireJS 会在插件中自动加载,但它本质上是调用require('text', function (text) { /* ... */ }). 这意味着配置任何 RequireJS 插件的路径实际上非常容易——只需更改require.config().

/**
 * main.js
 */
require.config({
    baseUrl: '/lib/js/',

    paths: {
        text: 'require/plugins/text'
    }
});

现在,当您需要模块中的插件时,例如

/**
 * myModule.js
 */
define([ 'text!/lib/css/stylesheet.css' ], function () {
    // ...
});

RequireJS 会计算出在/lib/js/require/plugins/text.js.

于 2015-04-08T00:49:39.347 回答