【问题标题】:requirejs path issue even when module is loaded and refering to itselfrequirejs 路径问题,即使模块已加载并引用自身
【发布时间】:2014-09-28 06:28:13
【问题描述】:

问题是如何解决控制台日志中提到的 module1 的路径问题?

基本信息 - 最新版本的 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;
});  

控制台日志

完成 main require.js 的加载(第 1531 行) 从 //ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js 加载 jquery require.js(第 1650 行) 从 templates/scripts//jquery.alpha.js require.js 加载 scripts/jquery.alpha(第 1650 行) 从 templates/scripts//jquery.beta.js require.js 加载 scripts/jquery.beta(第 1650 行) 从 templates/default/js/lib.js require.js 加载库(第 1650 行) 已完成脚本/jquery.alpha require.js 的加载(第 1531 行) 完成脚本/jquery.beta require.js 的加载(第 1531 行) 已完成库 require.js 的加载(第 1531 行) 从 templates/default/js/module1.js 加载 default/js/module1 require.js(第 1650 行) 从templates/scripts//calendar/module2.js 加载scripts/calendar/module2 require.js(第1650行) 完成加载 default/js/module1 require.js(第 1531 行) 初始化 default/js/module1 require.js(第 1662 行) 完成脚本/日历/模块2 require.js 的加载(第 1531 行) 从 templates/module1.js 加载 module1 require.js(第 1650 行) 已完成 jquery require.js 的加载(第 1531 行) 初始化 jquery require.js(第 1662 行) 初始化脚本/jquery.alpha require.js(第 1662 行) 初始化脚本/jquery.beta require.js(第 1662 行) 初始化 main require.js(第 1662 行) “网络错误:404 未找到 - http://local:81/mygsd/templates/module1.js”module1.js

【问题讨论】:

    标签: path requirejs config


    【解决方案1】:

    由于 module1 的路径在 module2 中不正确,所以我得到了默认/备份路径。 应该是:

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

    顺便说一句,感谢那些花时间对问题进行-1而不是回答的傻瓜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2014-12-15
      相关资源
      最近更新 更多