Javascript 根据根URL+;baseUrl+;模块路径

Javascript 根据根URL+;baseUrl+;模块路径,javascript,requirejs,amd,Javascript,Requirejs,Amd,嗨,我正在使用requirejs将我的javascript代码组织到AMD模块中,我正在使用codeigniter构建一个非单页网站,我要做的是,我有一个默认的布局html文件,我总是调用它来呈现主体的动态内容,因此我的脚本调用requirejs并具有数据主属性,在我的布局html页面上进行编码 <script data-main="<?=base_url('assets/js/main.js');?>" src="<?=base_url('assets/js/requi

嗨,我正在使用requirejs将我的javascript代码组织到AMD模块中,我正在使用codeigniter构建一个非单页网站,我要做的是,我有一个默认的布局html文件,我总是调用它来呈现主体的动态内容,因此我的脚本调用requirejs并具有数据主属性,在我的布局html页面上进行编码

<script data-main="<?=base_url('assets/js/main.js');?>" src="<?=base_url('assets/js/require.js');?>"></script>
因此,当我在url上键入“localhost/ci project/”时,它将与动态主体一起加载布局页面。在这种情况下,它可以正常工作。sicne requirejs将正确呈现路径“localhost/ci project/assets/js/vendor/[js file/module]”

但当我将URL改为“localhost/ci-project/welcome/admin”时。requirejs加载模块所做的是将baseUrl+模块路径连接到当前URL,在本例中为“localhost/ci project/welcome/admin”,最终结果如下:

“localhost/ci project/welcome/admin/assets/js/vendor/[module]”这是错误的


那么,我如何配置requirejs以始终从根url加载,然后将baseUrl值与每个模块的路径连接在一起

解决这个问题的方法是从服务器端变量输出
baseUrl

在PHP页面中:

<script>
var require = {
    baseUrl: '<?= base_url(); ?>' // Or whatever outputs the full path to your site root
};
</script>
<script data-main="<?=base_url('assets/js/main.js');?>" src="<?=base_url('assets/js/require.js');?>"></script>

var require={
baseUrl:“”//或任何输出站点根目录的完整路径的内容
};

当我在导航到带有参数的路由时遇到问题时,Simon上面的回答很有帮助——基本url的相对路径出错。我正在使用asp.net mvc,但解决方案完全相同: (_Layout.cshtml)


var require={
//默认情况下,从加载任何模块ID
baseUrl:“@Url.Content(“~/Scripts/lib”)”
}
<script>
var require = {
    baseUrl: '<?= base_url(); ?>' // Or whatever outputs the full path to your site root
};
</script>
<script data-main="<?=base_url('assets/js/main.js');?>" src="<?=base_url('assets/js/require.js');?>"></script>
<script>
    var require = {
        // by default, load any module IDs from
        baseUrl: '@Url.Content("~/Scripts/lib")'
}
</script>
<script data-main="@Url.Content("~/Scripts/application/app.js")" src="@Url.Content("~/Scripts/lib/require.js")"></script>