2014-09-28 75 views
-1

问题是如何解决模块1的路径问题,如控制台日志所述?requirejs路径问题,即使当模块被加载并引用自身

基本信息 - 最新requirejs的版本,下划线和jQuery和位于库

目录布局

library 
templates 
-default 
--js 
---lib.js 
---module1.js 

-scripts 
--calendar 
---module2.js 
--jquery.alpha.js 
--jquery.beta.js 

-main.js 
index.php 

的index.php

<script>var Template="default/"</script> //todo convert to session 
<script>var Domain="mygsd"</script> //todo convert to session 
<script src="library/require.js/require.js" data-main="templates/main"> 

main.js

var templatejs = Template+'js/'; 
var scripts = 'scripts/'; 
require.config({ 
    baseUrl:"templates/", 
    catchError: true, 
    paths: {  
     jquery: '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min', 
     underscore: 'library/underscore', 
     libs:templatejs+'lib', 
     scripts: scripts, 

    }, 
    shim: { 
     'jQuery': { 
      exports: '$' 
     }, 
     'underscore': { 
      exports: '_' 
     } 
    } 
}); 

require(['libs']); 
define(["jquery", "scripts/jquery.alpha", "scripts/jquery.beta"], function($) { 
    $(function() { 
     $('body').alpha().beta(); 
    }); 
}); 

libs.js

define([templatejs+'module1', scripts+"calendar/module2"], function(module1ref, module2ref){ 
var module1 = new module1ref(), 
     module2 = new module2ref(); 
console.log(module1.getName() === module2.getModule1Name()); 
}); 

module1.js

define([], function() { 
    var returnedModule = function() { 
     var _name = 'module1 name'; 
     this.getName = function() { 
      return _name; 
     }; 
    }; 
    return returnedModule; 
}); 

module2.js

define(['module1'], function (module1ref) { 
    var module1 = new module1ref(); 
    var returnedModule = function() { 
     this.getModule1Name = function() { 
      return module1.getName(); 
     }; 
    }; 
    return returnedModule; 
}); 

控制台日志

 
Completed load of main                require.js (line 1531) 
Loading jquery from //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js  require.js (line 1650) 
Loading scripts/jquery.alpha from templates/scripts//jquery.alpha.js    require.js (line 1650) 
Loading scripts/jquery.beta from templates/scripts//jquery.beta.js     require.js (line 1650) 
Loading libs from templates/default/js/lib.js          require.js (line 1650) 
Completed load of scripts/jquery.alpha            require.js (line 1531) 
Completed load of scripts/jquery.beta            require.js (line 1531) 
Completed load of libs                require.js (line 1531) 
Loading default/js/module1 from templates/default/js/module1.js      require.js (line 1650) 
Loading scripts/calendar/module2 from templates/scripts//calendar/module2.js  require.js (line 1650) 
Completed load of default/js/module1            require.js (line 1531) 
Initializing default/js/module1              require.js (line 1662) 
Completed load of scripts/calendar/module2           require.js (line 1531) 
Loading module1 from templates/module1.js           require.js (line 1650) 
Completed load of jquery               require.js (line 1531) 
Initializing jquery                 require.js (line 1662) 
Initializing scripts/jquery.alpha             require.js (line 1662) 
Initializing scripts/jquery.beta             require.js (line 1662) 
Initializing main                 require.js (line 1662) 
"NetworkError: 404 Not Found - http://local:81/mygsd/templates/module1.js"      module1.js 

回答

0

由于模块1的路径是不正确的模块2,我获得了默认/备份路径。 它应该是:

define([templatejs + 'module1'], function (module1ref){ var module1 = new module1ref(); var returnedModule = function(){ this.getModule1Name = function(){ return module1.getName(); }; }; return returnedModule; });

顺便说一句感谢谁花时间为-1的问题,而不是回答它的笨蛋。