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

RequireJS paths are different depending on how page is accessed

我在使用 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/ 无效

如果从前两个链接访问网页,那么 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?

我只需要更具体地定义我的 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',
        ...
    }
};