是否可以在一个地方安装requirejs并在模块中重复使用?
,例如
main.js:
requirejs.config({
baseUrl: "static/js",
paths: {
"jquery": "http://code.jquery.com/jquery-1.9.1.js",
"jquery-ui": "http://code.jquery.com/ui/1.10.2/jquery-ui.js"
},
shim: {
"jquery-ui": {
deps: ["jquery"]
}
}
});
和
public.js:
define(["main", "jquery", function(main, $) {
// do some public stuff
});
client.js:
define(["main", "jquery", function(main, $) {
// do some client stuff
});
在我公开的网络上有
<script type="..." src="js/require.js" data-main="js/public.js"></script>
在网络的客户端部分
<script type="..." src="js/require.js" data-main="js/client.js"></script>
而且我想为每个页面都有一个模块。例如,在公共
上有一个索引模块<script ...>
require('public/index');
</script>
和
公共/ index.js:
define(["jquery", "slideshow"], function($, s) {
$( function() { s.init() } );
});
RequireJS可以吗?
感谢您的回答。
答案 0 :(得分:8)
data-main
在非常简单的情况下是一个有用的快捷方式,但除此之外我没有发现它非常有用,解决方案是完全转储它。
在每个页面上明确加载main,然后使用回调加载特定于视图的脚本。
所以你在public.html:
<script src="/Scripts/require.js"></script>
<script>
require('main', function(){
require('public');
})
</script>
并在client.html中:
<script src="/Scripts/require.js"></script>
<script>
require('main', function(){
require('client');
})
</script>
答案 1 :(得分:0)
当你提出更清楚的问题时,我会编辑我的答案。
在您包含require.js
的任何页面中,您还应该包含main.js
来定义您的RequireJS配置。
你不能做像
这样的事情define(["main", "jquery", function(main, $) {
// do some public stuff
});
因为ReuiqreJS异步加载依赖项。虽然“main”位于“jquery”之前,但不能保证RequireJS会按顺序加载它们。
所以你的public / index.html可以是:
<script type="..." src="js/require.js"></script>
<script type="..." src="js/main.js"></script>
<script ...>
require('public/index');
</script>