要求基于ROOT URL+baseUrl+模块路径修复模块的JS加载
RequireJS loading of modules to be fixed based on ROOT URL + baseUrl + module path
嗨,我正在使用requirejs将我的javascript代码组织到AMD模块中,我现在正在使用codeigner构建一个非单页网站,我所做的是我有一个默认的布局html文件,我总是调用它来呈现主体的动态内容,所以我的脚本(调用requirejs并具有数据主属性)被编码在我的布局html页面上。
<script data-main="<?=base_url('assets/js/main.js');?>" src="<?=base_url('assets/js/require.js');?>"></script>
我的main.js是这样的。
requirejs.config({
baseUrl: "assets/js",
paths: {
jquery: 'vendor/jquery',
bootstrap: 'vendor/bootstrap',
datatables: 'vendor/jquery.dataTables'
},
shim: {
jquery: { exports: '$' },
datatables: { deps: ['jquery'] }
}
});
requirejs(['bootstrap','datatables'], function(){
})
因此,当我在url上键入"localhost/ci-project/"时,它将加载布局页面和动态主体。在这种情况下,它运行良好。sicne requirejs将正确呈现路径"localhost/ci-project/assets/js/vender/[js-file/module]"
但当我将URL更改为"localhost/ci-project/webre/admin"时。加载模块所需的操作是将baseUrl+模块路径连接到当前URL,在本例中为"localhost/ci-project/webre/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>
在加载RequireJS之前创建require
对象可以定义将自动拾取的配置选项。
从main.js
内部再次调用require.config()
是可以的,它只会添加额外的配置选项,但一定要从中删除baseUrl
。
Simon上面的回答在我导航到带参数的路线时起到了帮助作用-到基本url的相对路径出错。我使用的是asp.net mvc,但解决方案完全相同:(_Layout.cs.html)
<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>
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- Node.js正在更改应用程序以使用集群模块
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何在Mocha/Chai中测试JS原型(非模块)
- 如何定义一个模块并使用它来分离js文件
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 如何引用HTML中节点模块中的js文件
- 使用Ampersand.js路由模块化应用程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- module.js在运行iron节点时找不到模块
- 尝试从命令行将android平台添加到ionic时,模块.js:341处出现错误
- 节点抛出模块.js:340错误
- 在 ejs 中使用节点模块/.js函数
- 用于节点的FTP模块.js可以同步文件
- 从 Drupal 7 中的模块.js文件调用全局 JS 函数
- 使用 Socket.io 将套接字传递到 Node 中的模块.js
- JavaScript - 如何注入不同的函数实现,例如 alert(与 web 和 Node 共享模块.js服务器端)
- JavaScript 中有没有办法在原型私有(使用模块 JS 模式)方法中提供对变量的访问
- NODE的捆绑模块.JS