RequireJS路径根据访问页面的方式而有所不同

时间:2017-05-10 19:49:29

标签: asp.net requirejs

我在使用RequireJS加载网页时遇到问题,具体取决于页面的访问方式。

由于视图控制器的设置方式,可以通过以下链接访问网页

  1. www.mydomain.com正常工作
  2. www.mydomain.com/home正常工作
  3. www.mydomain.com/home/不起作用
  4. www.mydomain.com/home/index不起作用
  5. www.mydomain.com/home/index/不起作用
  6. 如果从前两个链接访问网页,则RequireJS可以在www.mydomain.com/Scripts/main.js

    找到所需的文件

    如果使用3或4访问网页,那么我收到404文件未找到错误,而RequireJS正在www.mydomain.com/home/Scripts/main.js

    查找文件

    如果使用5访问网页,那么它是相同的,但RequireJS正在www.mydomain.com/home/index/Scripts/main.js

    寻找文件

    有没有办法将RequireJS引导到正确的路径,无论页面如何访问,或者Asp.Net中是否有办法禁用路径3-5?

1 个答案:

答案 0 :(得分:0)

我只需要更具体地定义我的baseUrl。我有一个为require定义的配置指定了我所需模块的相对路径,但我也有一个相对baseUrl导致了我的问题。我在解决所有路径时遇到问题,因为该网站将安装在各种根目录上,并具有不同的子应用程序或端点名称。我的解决方案最终是动态计算baseUrl

let port = document.location.port ? ':' + document.location.port : '';
//config is a custom object and endpoint name is the ASP.NET application name.
let endpointName = '//' + config.endpointName;
let root = document.location.protocol + '//' + document.location.hostname + port + endpointName;

var require = {
    baseUrl: root,
    paths: {
        'module': '/Path/to/module',
        ...
    }
};