我一直试图解决这个问题好几个小时,并且无法在我自己或互联网上找到解决方案,所以最后我放弃了并决定发布一个问题。
我正在尝试使用RequireJS构建我的新PHP应用程序,其中javascript作为AMD管理。这是我第一次使用这种方法而且我对它感到非常兴奋,但是有一个问题会阻止我的javascript运行。
这是路由完成的好网址。 (我使用Nette Framework作为路由,使用Apache作为webserver)。在我设置requrejs和我的依赖项之后,一切都可以正常使用主页(localhost /),但是当我转到其他页面时,它有一些类似localhost / news的URL,它会停止工作并且需要j抱怨例如不存在的脚本"localhost/testapp/news/js/vendor/jquery/dist/jquery.js"
。它应该在"localhost/testapp/js/vendor/jquery/dist/jquery.js"
中查找,但它会将mod_rewrite重写的参数(在本例中为演示者名称)作为基本URL的一部分。我相信故障在我身边,因为这必须是非常常见的设置,我无法找到simillar问题。
requirejs:
<script src="{$basePath}/js/vendor/requirejs/require.js"></script>
<script>
var absolute_base = {$basePath};
require([absolute_base + '/js/app.js']);
</script>
(在Nette框架中的basePath变量中始终是应用程序的根目录,无论其他参数如何 - 在这种情况下,/testapp
)
app.js
requirejs.config({
baseUrl: 'js/modules',
paths: {
'jquery': '../vendor/jquery/dist/jquery',
'ink': '../vendor/InkJS/dist/js/ink-all',
'ajax': '../vendor/ajax'
}
});
dir结构:
- www
- css
- sass
- graphics
- fonts
- js
- modules
- vendor
- jquery
- requirejs
- ink
- app.js
- index.php
这是我得到的。我已经尝试了很多组合,相对路径,路径前面的点,脚本标签的数据属性等等,并且无法找到解决方案。
非常感谢任何帮助,干杯!
答案 0 :(得分:0)
我终于成功了。我发现,它不能以这种方式完成,因为requirejs 总是使用当前url作为&#34; root&#34;而不是脚本本身的URL(用于&#34;脚本&#34;标签)。至少我还没有办法解决这个问题。
相反,我已经删除了整个app.js文件并将配置直接移动到主模板中,并使用php变量$ basePath,我用它来定义basePath(基本上我定义了绝对路径而不是相对路径)一个)。