私はこの問題を何時間も解決しようとしてきましたが、自分でもインターネットでも解決策を見つけることができなかったので、ついにあきらめて質問を投稿することにしました.
RequireJS を使用して、AMD として管理されている JavaScript で新しい PHP アプリを構築しようとしています。このアプローチを使用するのは初めてで、とても興奮していますが、javascript が機能しない問題が 1 つあります。
ルーティングによる素敵なURLです。(ルートには Nette Framework を使用し、Web サーバーには Apache を使用します)。requrejs と依存関係をセットアップした後、すべてがホームページ (localhost/) で正常に動作しますが、localhost/news のような URL を持つ他のページに移動すると、動作が停止し、requirejs はたとえば、存在しないスクリプトについて不平を言います "localhost/testapp/news/js/vendor/jquery/dist/jquery.js"
. 代わりに を検索する必要"localhost/testapp/js/vendor/jquery/dist/jquery.js"
がありますが、ベース URL の一部として mod_rewrite によって書き換えられた引数 (この場合はプレゼンター名) を取ります。これは非常に一般的なセットアップである必要があり、同様の質問を見つけることができなかったため、私の側のどこかに問題があると思います。
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'
}
});
ディレクトリ構造:
- www
- css
- sass
- graphics
- fonts
- js
- modules
- vendor
- jquery
- requirejs
- ink
- app.js
- index.php
これは私が得た限りです。多くの組み合わせ、相対パス、パスの前のドット、スクリプト タグのデータ属性などを試しましたが、解決策を見つけることができませんでした。
どんな助けでも大歓迎です、乾杯!