RequireJS 和 JavaScript API

发布于 2024-12-19 18:53:37 字数 488 浏览 0 评论 0原文

我正在使用此处中的示例项目。

假设我需要从模块中导出一些函数,以便为服务的客户端提供一些 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独岁月 2024-12-26 18:53:37

根据您提供的代码,我假设您在 app.html 中的现有脚本标记之后添加了代码。我认为你所看到的是一个时间问题。加载页面后,查看 标记,您应该按以下顺序看到脚本标记:

  1. “require”脚本
  2. 是您的新脚本
  3. alpha
  4. beta,

因此它会先运行您的脚本alpha 和 beta 已运行。原因是 require 将处理第一个脚本,但不会执行 main.js 的“内容”,直到运行所有依赖项(alpha 和 beta)。

我希望这有帮助。对代码的以下更改也可能说明发生了什么情况。 setTimeout 为 alpha 和 beta 提供了加载的机会:

<script type="text/javascript">
  setTimeout(function(){
           $(document).ready(function() {
              $('body').alpha().beta();
           });
           }, 5000);
</script>

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:

  1. the "require" script
  2. your new script
  3. alpha
  4. beta

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:

<script type="text/javascript">
  setTimeout(function(){
           $(document).ready(function() {
              $('body').alpha().beta();
           });
           }, 5000);
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文