2

我正在第一次尝试实现 Require.js,虽然我正在尝试遵循这两个教程(这里这里),但我并没有完全让它发挥作用。这是我到目前为止所拥有的:

在我的索引文件中

<script type="text/javascript" data-main="../js/main" src="../js/libs/require/require.js"></script>

main.js内部

require.config({ baseUrl: "../js/",
  paths: {       
   "jq-loader":    "libs/jquery/jquery",
   "jqm-loader":   "libs/jquery-mobile/jquery-mobile",
   "someplug":     "libs/someplug/somplug",
   }
 });
// define app and dependencies??? - not sure what goes here? All plugins I'm using?
require(['app','order!libs/jquery/jquery', 'order!libs/jquery-mobile/jquery-mobile'], 

function(App){
    App.start();
    });

jquery.js内部

 define([ 'order!libs/jquery/jquery.min' ], function(){ return $; });

jquery.js内部(取决于 Jquery)

 // ERROR here in "mobile" being undefined
 define(['order!libs/jquery-mobile/jquery-mobile.min'], function(){ return mobile; });

app.js

define([ 'jq-loader', 'jqm-loader'], function($, mobile){
    var start = function() {
    $(document).ready(function() {
        alert("Hello world!");
        })
      }
     return {"start":start};
   });

到目前为止,我很高兴我做到了,但我真的很想看到一切都在点击。现在,我收到一个错误mobile is not defined在我的 jquery-mobile.js 文件中。我猜是因为 Jquery-Mobile 并不真正属于它所在的地方......

有人可以阐明一下吗?非常感谢!

编辑:
这是我的示例设置的链接

4

1 回答 1

6

在我看来,那一刻 jqm 对 jquery 一无所知。所以你得到一个错误。如果要使用这样的加载器,可能需要在一个 require 块中加载 jquery。比在回调加载 jqm 中使用多一个要求。但是你不需要这些 wrappers-loaders 来用 jqm 加载 jquery。

在主js中首先加载jquery,而不是jqm。那就足够了。此外,您不必在 app.js 中定义它们。

Main.js 应该类似于:

require.config({ baseUrl: "../js/",
  paths: {  
   "app": "path to app",
   "jquery":    "path to jquery",
   "jqm":   "path to jqueryMobile",
   "someplug":     "libs/someplug/somplug",
   }
});
require(['order!jquery', 'order!jqm', 'app'], 

function(jquery, jqm, App){
    App.start();
    });

还有你的 app.js:

define([], function(){
  var start = function() {
  $(document).ready(function() {
    alert("Hello world!");
  })
  }
  return {"start":start};
  });

请让我知道它是否无济于事,并将您的资源上传到某处。问候。

于 2012-04-23T22:00:07.340 回答