RequireJS和JavaScript API

RequireJS和JavaScript API,javascript,api,export,requirejs,Javascript,Api,Export,Requirejs,我正在使用来自的一个示例项目 假设我需要从模块中导出一些函数,以便向服务的客户端提供一些JavaScript API 但是我的.js文件中的声明在RequireJS之外是不可见的 我将以下块添加到jquery require sample/webapp/app.html: <script type="text/javascript"> $(document).ready(function() { $('body').alpha().beta(); }); &l

我正在使用来自的一个示例项目

假设我需要从模块中导出一些函数,以便向服务的客户端提供一些JavaScript API

但是我的.js文件中的声明在RequireJS之外是不可见的

我将以下块添加到jquery require sample/webapp/app.html:

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

$(文档).ready(函数(){
$('body').alpha().beta();
});
失败:未捕获类型错误:对象[Object Object]没有方法“alpha”


是否可以执行我想要的操作?

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

  • “require”脚本
  • 你的新剧本
  • 阿尔法
  • 贝塔
  • 所以它在运行alpha和beta之前运行脚本。原因是require将处理第一个脚本,但在运行main.js的所有依赖项(alpha和beta)之前不会执行main.js的“meat”

    我希望这有帮助。下面对代码所做的更改也可能说明发生了什么。setTimeout使alpha和beta有机会加载:

    <script type="text/javascript">
      setTimeout(function(){
               $(document).ready(function() {
                  $('body').alpha().beta();
               });
               }, 5000);
    </script>
    
    
    setTimeout(函数(){
    $(文档).ready(函数(){
    $('body').alpha().beta();
    });
    }, 5000);
    
    谢谢!关于问题的原因,你完全正确。我发现从main.js触发自定义事件比使用setTimeout更好。但是谢谢,你的回答真的很有帮助!是的,setTimeout通常不是一个好的解决方案,但我用它来说明。很高兴有帮助有人能解释一下$('body').alpha().beta()行吗?Alpha和beta似乎是独立的插件,但beta似乎被称为Alpha的成员?或者这是某种特殊的语法?@shim它与实际问题无关。大多数jQuery插件返回jQuery对象实例,以允许方法链接。这就是你在这里看到的。