如何让jquery-mobile和依赖插件与require.js一起使用?

时间:2012-04-23 21:18:44

标签: jquery jquery-mobile asynchronous requirejs

我正在尝试实施Require.js,虽然我正在尝试遵循这两个教程(herehere),但我还是不能让它工作。这就是我到目前为止所做的:

在我的索引文件

<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};
   });

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

有人能说些什么吗?非常感谢!

修改
这是我sample setup

的链接

1 个答案:

答案 0 :(得分:6)

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

在第一次加载jquery的主js中,比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};
  });

请告诉我它是否无效并在某处上传您的来源。 问候。