Я пытался решить эту проблему часами и не смог найти решение самостоятельно или в Интернете, поэтому, в конце концов, я сдался и решил отправить вопрос.RequireJS с PHP и хорошим URL
Я пытаюсь создать свое новое приложение PHP с javascript, управляемым как AMD, используя RequireJS. Я впервые использую этот подход, и я очень взволнован этим, но есть одна проблема, из-за которой работает javascript.
Это хороший URL-адрес, выполненный маршрутизацией. (Я использую Nette Framework для маршрутов и Apache в качестве веб-сервера). После того, как я настроил requrejs и мои зависимости, все работает отлично с домашней страницей (localhost /), но когда я перехожу на другую страницу, у которой есть URL-адрес, похожий на localhost/news, он перестает работать, а requirejs жалуется на несуществующие скрипты, например "localhost/testapp/news/js/vendor/jquery/dist/jquery.js"
. Вместо этого он должен выглядеть в "localhost/testapp/js/vendor/jquery/dist/jquery.js"
, но он принимает аргумент (в данном случае имя ведущего), перезаписываемый mod_rewrite как часть базового url. Я считаю, что ошибка где-то на моей стороне, так как это должно быть очень распространенной установкой, и я не смог найти подобный вопрос.
requirejs в layout.latte (шаблон базы):
<script src="{$basePath}/js/vendor/requirejs/require.js"></script>
<script>
var absolute_base = {$basePath};
require([absolute_base + '/js/app.js']);
</script>
(в переменном BasePath в рамках Nette всегда корень приложения, независимо от дополнительных параметров - в этом случае, /testapp
)
app.js структуры
requirejs.config({
baseUrl: 'js/modules',
paths: {
'jquery': '../vendor/jquery/dist/jquery',
'ink': '../vendor/InkJS/dist/js/ink-all',
'ajax': '../vendor/ajax'
}
});
реж:
- www
- css
- sass
- graphics
- fonts
- js
- modules
- vendor
- jquery
- requirejs
- ink
- app.js
- index.php
Это все, что у меня есть. Я пробовал множество комбинаций, относительных путей, точек перед дорожками, атрибута данных для тега скрипта и т. Д. И не смог найти решение.
Любая помощь с благодарностью приветствует!