RequireJS 和 JavaScript API
我正在使用此处中的示例项目。
假设我需要从模块中导出一些函数,以便为服务的客户端提供一些 JavaScript API。
但是我的 .js 文件中的声明在 RequireJS 之外不可见!
我将以下块添加到 jquery-require-sample/webapp/app.html:
<script type="text/javascript">
$(document).ready(function() {
$('body').alpha().beta();
});
</script>
它失败:未捕获类型错误:对象 [object Object] 没有方法“alpha”。
可以做我想做的事吗?
I'm using a sample project from here.
Suppose I need to export some function from my module to provide some JavaScript API to the clients of my service.
But the declarations in my .js files are not visible outside RequireJS!
I add the following block to jquery-require-sample/webapp/app.html:
<script type="text/javascript">
$(document).ready(function() {
$('body').alpha().beta();
});
</script>
It fails: Uncaught TypeError: Object [object Object] has no method 'alpha'.
Is it possible to do what I want?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据您提供的代码,我假设您在 app.html 中的现有脚本标记之后添加了代码。我认为你所看到的是一个时间问题。加载页面后,查看
标记,您应该按以下顺序看到脚本标记:
因此它会先运行您的脚本alpha 和 beta 已运行。原因是 require 将处理第一个脚本,但不会执行 main.js 的“内容”,直到运行所有依赖项(alpha 和 beta)。
我希望这有帮助。对代码的以下更改也可能说明发生了什么情况。 setTimeout 为 alpha 和 beta 提供了加载的机会:
Based on the code you provided I'm assuming you added your code after the existing script tag in app.html. I think what you're seeing is a timing issue. After you load the page, take a look at the
<head>
tag and you should see script tags in the following order:so it's running your script before the alpha and beta are run. The reason is because require will process the first script, but not execute the "meat" of main.js until all it's dependencies are run (alpha and beta).
I hope this helps. The following changes to your code may also illustrate what's going on. the setTimeout gives alpha and beta a chance to load: