需要JS基本路径用于变量URL结构

时间:2015-08-11 09:29:20

标签: javascript requirejs

我在项目构建的任何子页面上难以使用RequireJS。基本URL附加到页面URL,因此导致404错误......这是JS:

require.config({
    "baseUrl": "content/themes/my-theme",
    "paths": {
        "jquery": "bower_components/jquery/dist/jquery.min",
        "foundation": "bower_components/foundation/js/foundation.min"
    },
    "shim": {
        "foundation": ["jquery"]
    }
});

require(['jquery', "foundation"], function($) {

    $(document).foundation();
    $(document).ready(function() {
        console.log('Working!!');
    });
});

一般简单......所以当我在我的网站的根域(例如http://my-domain.com/)上运行它时,一切正常,我得到{{1}的控制台日志如预期的那样。包含的资源(例如jQuery)被调用到正确的URL:

Working!!

问题在于,当我访问内部网页时,http://my-domain.com/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js 会附加到网页网址,因此它会错误地指向,导致文件请求为404. 此处&#39 ; URL的一些例子:

baseURL

正如您所看到的,网页网址扩展程序http://my-domain.com/about-us/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js http://my-domain.com/category/uncategorized/content/themes/my-theme/bower_components/jquery/dist/jquery.min.js /about-us/是问题所在。

我查看了文档并且必须找不到问题的解决方案。请你指点我正确的方向。

1 个答案:

答案 0 :(得分:1)

baseUrl可以留空,并设置合理的默认值。

您可以将baseUrl设置为您网站的网址,例如baseUrl : "http://my-domain.com/content/themes/my-theme/"

也许一个有贡献的问题是路径不是以斜杠开头(参见http://requirejs.org/docs/api.html#config-paths

总之,您可以尝试以下方法:

require.config({
    "paths": {
        "jquery": "/bower_components/jquery/dist/jquery.min",
        "foundation": "/bower_components/foundation/js/foundation.min"
    },
    "shim": {
        "foundation": ["jquery"]
    }
});

require(['jquery', "foundation"], function($) {

    $(document).foundation();
    $(document).ready(function() {
        console.log('Working!!');
    });
});