我想將text.js
插件放在自定義目錄中,並有一個自定義名稱,如:/app/some/path/here/to/text-version.js
。如何告訴RequiredJS在自定義目錄中查找text.js插件?
當我require
東西使用text!
RequireJS正試圖從baseUrl
在配置中指定的url加載text.js
。
如何告訴RequireJS去尋找text.js插件在特定目錄具體名?
我想將text.js
插件放在自定義目錄中,並有一個自定義名稱,如:/app/some/path/here/to/text-version.js
。如何告訴RequiredJS在自定義目錄中查找text.js插件?
當我require
東西使用text!
RequireJS正試圖從baseUrl
在配置中指定的url加載text.js
。
如何告訴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
加載文本插件。
+1優秀的答案。清晰和簡潔。 – 2013-03-20 01:29:51
我不知道它如何幫助我。 shim是否會覆蓋'text!'行爲? – 2013-03-20 01:41:53
啊,好吧 - 我現在看到墊片是如何工作的,謝謝! – 2013-03-20 01:49:06