我正在使用require.js将项目从“旧”浏览器样式模块结构更改为“新”浏览器或服务器端javascript模块结构。
在客户端上,我使用的是异地托管的 jQuery,所以我从他们在README的“使用优先级配置”技术中给出的示例开始:
<title>My Page</title>
<script src="scripts/require.js"></script>
<script>
require({
baseUrl: 'scripts',
paths: {
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min',
jqueryui: ...,
...
... // bunch more paths here
},
priority: ['jquery']
}, [ 'main' ]);
</script>
这实际上工作正常。但我想将功能从 main 导出到 HTML 网页本身。例如:
<a class="button" href="#" onclick="MyApi.foo();">
<img src="foo.png" alt="foo" />Click for: <b>Foo!</b>
</a>
在适应 AMD 模块模式之前,我通过在全局空间中创建字典对象来公开各种文件的功能:
// main.js
var MyApi = {};
jQuery(document).ready(function($) {
// ...unexported code goes here...
// export function via MyApi
MyApi.foo = function() {
alert("Foo!");
};
});
但我不知道 require.js 中的正确方法是什么。是否可以将 HTML morerequire
语句放入<script>
标签内,然后命名模块以便可以在网页内使用?或者这是否应该始终在 main.js 中动态完成,例如$('#foobutton').click(...)
?