RequireJS with PHP和漂亮的URL

时间:2015-01-19 09:18:53

标签: javascript php requirejs amd nette

我一直试图解决这个问题好几个小时,并且无法在我自己或互联网上找到解决方案,所以最后我放弃了并决定发布一个问题。

我正在尝试使用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问题。

layout.latte(基本模板)中的

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

这是我得到的。我已经尝试了很多组合,相对路径,路径前面的点,脚本标签的数据属性等等,并且无法找到解决方案。

非常感谢任何帮助,干杯!

1 个答案:

答案 0 :(得分:0)

我终于成功了。我发现,它不能以这种方式完成,因为requirejs 总是使用当前url作为&#34; root&#34;而不是脚本本身的URL(用于&#34;脚本&#34;标签)。至少我还没有办法解决这个问题。

相反,我已经删除了整个app.js文件并将配置直接移动到主模板中,并使用php变量$ basePath,我用它来定义basePath(基本上我定义了绝对路径而不是相对路径)一个)。