-1

我想在我的项目中使用RequireJs,但是我发现我不能写下面的代码

<html>
   <head>
   </head>
   <body>
       <input type="button"  />
       <script>
           // Use the jQuery
           $(function() {
              //some code
             }
           )
       </script>
       <input />
       <input />

       // I had added the jQuery in required shim and jQuery is working in RequireJs.
       <script data-main="scripts/main" src="/scripts/require.js"></script>
   </body>
</html>

$ is undefined加载页面时出现错误。查了很多文章,都解决不了。我该如何处理?我不想将示例 js 函数移动到 .js 文件。

4

5 回答 5

1

正如您在问题中所写:

如果我使用requirejs,所有js函数都需要在.js文件中吗?

并使用 RequireJS 的定义:

RequireJS 是一个 JavaScript 文件和模块加载器。使用像 RequireJS 这样的模块化脚本加载器将提高代码的速度和质量。

所以在你的页面中插入这样的内联<script>标签并不是一个好主意

但是,在回答你的问题时,因为 RequireJS 加载脚本asynchronously,所以你不知道 jQuery 什么时候会加载,而且你不能像老派那样使用内联脚本,你需要使用define或者 require答案George Reith中写的方法。

于 2013-05-18T08:29:27.997 回答
0

First things first$在 JavaScript 中没有任何意义,但被流行的jQuery 库使用。JavaScript !== jQuery.

其次,假设您已经通过 require.js 加载了 jQuery,您需要将初始脚本标记放在后面 <script data-main="scripts/main" src="/scripts/require.js"></script>,因为它在 require.js 之前被调用。

第三, require.js 异步加载文件,因此您必须将代码包装在require()ordefine()标记中,并带有依赖项列表,以便仅在加载后才调用它们。

例如

<html>
   <head>
       <script data-main="scripts/main" src="/scripts/require.js"></script>
   </head>
   <body>
       <input type="button"  />
       <script>
          /* 
             RequireJS is asynchronous so you must wrap your code
             in "require(["jQuery"], ...)" so it only calls it once
             jQuery has been loaded. Each included script is available 
             to you as a parameter in the callback function.
          */
          require(["jQuery"], function($) {
              $(function() {
              });
          });
       </script>
       <input />
       <input />
   </body>
</html>

您的设置应如下所示:

requirejs.config({
    paths: {
        'jQuery': 'path/to/jquery'
    },
    shim: {
        'jQuery': {
            exports: '$'
        }
    }
});
于 2013-05-18T08:26:36.973 回答
0

尝试将您的示例脚本标签移到 requirejs 脚本标签之后。目前,您的示例函数在 requirejs 有机会加载 jQuery 之前执行。

于 2013-05-18T08:16:09.353 回答
0

您还必须包括 jQuery。在 requirejs.org 上有一个完整的手册页,它应该可以帮助你。

也许你想要的也在这里解释。取自那里:

require(["helper/util"], function(util) {
    //This function is called when scripts/helper/util.js is loaded.
    //If util.js calls define(), then this function is not fired until
    //util's dependencies have loaded, and the util argument will hold
    //the module value for "helper/util".
});
于 2013-05-18T08:12:23.917 回答
0

Require.js 甚至没有实现 $。为什么你甚至将你的函数包装在 $(..) 中?

于 2013-05-18T08:12:52.543 回答