最近、会社のプロジェクトではバックエンドの開発に vue ファミリーのバケット要素 ui を使用する必要がありますが、元のプロジェクトは requirejs によって書かれているため、すべての laravel モジュールは独立してインストールおよびアンインストールできます。つまり、それらの js とCSS はすべて独立しており、共通のものはthemes/backend
テーマ ディレクトリに直接配置されます。次に、単一ページ プログラムでこのソリューションをどのように実装するかという疑問が生じます。要件は
## です。 # (注: ここでのモジュールは、js と npm のモジュールではなく、laravel のモジュールです)
Resources/Bakcend/assetsディレクトリが
public/backend/modules/モジュール名に自動的に公開されます。 、および
themes/bakcend/index.blade.phpの下にあるものは自動的に読み込むことができます (
solved)
public/backend/modules/モジュール名の下にパッケージ化され、その後
modules/モジュール名/Resources に自動的にコピーされます。 /Bakcend/assets 以下 (
解決済み)
themes にあります。 /backend_default/index.blade.php,(
solved)4.各モジュールはさまざまなサードパーティによって開発され、一般モジュール センターに公開されます。ユーザーは次の方法で必要なモジュールをダウンロードできます。それ自体 (
PHP バックエンドは解決されましたが、フロントエンド JSに問題があります)
現在、解決策は 2 つありますが、どちらも問題を根本的に解決することはできません。
1つ目は、各laravelモジュールは個別にパッケージ化されています
ですが、単一ページのバックエンドではモジュールごとにvendor.jsを生成して配置することは不可能であるため、パブリッククラスライブラリではそれを処理できません。パブリックに公開するか、パブリックに配置します。クラス ライブラリを app.js に配置して、各モジュール (blog-module、core-module、dashboard-module など) の Vendor.js が全体のthemes/ にロードされるようにします。 backend_default/index.blade.phpと app.js はこれらのパブリック クラス ライブラリを繰り返しロードします
2 つ目は、テーマ/バックエンド テーマの下に統合されたパッケージ化です
各モジュールのリソースは、themes/backend/modules/{module-name}
に自動的に配置されます。パッケージ化後にそれぞれのmodule/Resources/Backend/assets
に抽出され、他の人がモジュールをインストールすると、このモジュールに自動的にpublish
assets
が追加されます。 backend/modules/{module-name} ディレクトリにありますが、これは機能しません。各開発者が異なるモジュールを担当する場合、
webpack.config.jsまたは webpack にパッケージ化されたものがあるためです。 mix.js も異なります。たとえば、私が
blog moduleの app.js を記述し、あなたが
dashboard moduleの app.js を記述した場合、それぞれでパッケージ化されたアセット
vendor.js(パブリック クラス ライブラリに格納されているファイル) の webpack モジュール ID が異なる場合 (すべてのモジュールの app.js のパブリック クラス ライブラリが同じであっても)、アプリ公開後に異なるモジュールの .js が読み込まれる 各モジュールの Vendor.js が異なり、読み込むものを選択できないためエラーが発生します
参照: /a/11...
プラグインを動的にロードする webpack メカニズムに基づく SPA シングルページ Web アプリケーション