我想将text.js
插件放在自定义目录中并有一个自定义名称,例如:/app/some/path/here/to/text-version.js
.
当我require
使用text!
RequireJS 的东西试图从配置中text.js
指定的 url加载时baseUrl
。
如何告诉 RequireJS 在具有特定名称的特定目录中查找 text.js 插件?
我想将text.js
插件放在自定义目录中并有一个自定义名称,例如:/app/some/path/here/to/text-version.js
.
当我require
使用text!
RequireJS 的东西试图从配置中text.js
指定的 url加载时baseUrl
。
如何告诉 RequireJS 在具有特定名称的特定目录中查找 text.js 插件?
如果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
我刚刚发现,虽然 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
.