ホームページ  >  に質問  >  本文

php - laravelのモジュール化とwebpack+vue.jsソリューションを解決するにはどうすればよいですか?

最近、会社のプロジェクトではバックエンドの開発に vue ファミリーのバケット要素 ui を使用する必要がありますが、元のプロジェクトは requirejs によって書かれているため、すべての laravel モジュールは独立してインストールおよびアンインストールできます。つまり、それらの js とCSS はすべて独立しており、共通のものは themes/backend テーマ ディレクトリに直接配置されます。次に、単一ページ プログラムでこのソリューションをどのように実装するかという疑問が生じます。要件は
## です。 # (注: ここでのモジュールは、js と npm のモジュールではなく、laravel のモジュールです)

  1. 各モジュールは個別にインストールされます。インストール後、モジュール内の

    Resources/Bakcend/assets ディレクトリが public/backend/modules/モジュール名 に自動的に公開されます。 、および themes/bakcend/index.blade.php の下にあるものは自動的に読み込むことができます (solved)

  2. 単一ページのバックエンドは、webpack を使用してパッケージ化ディレクトリ

    public/backend/modules/モジュール名 の下にパッケージ化され、その後 modules/モジュール名/Resources に自動的にコピーされます。 /Bakcend/assets 以下 (解決済み)

  3. 各モジュールは独自のバックエンド メニュー、管理インターフェイスなどを持つことができ、これらはすべて vue、vue-router、element-ui で実装されます。すべてのモジュールのエントリ ページは

    themes にあります。 /backend_default/index.blade.php,(solved)4.各モジュールはさまざまなサードパーティによって開発され、一般モジュール センターに公開されます。ユーザーは次の方法で必要なモジュールをダウンロードできます。それ自体 (
    PHP バックエンドは解決されましたが、フロントエンド JS に問題があります)

問題は、上記の 4 番目の要件のフロントエンドの側面で発生します。個人または内部チームがすべてのモジュールを開発する場合、そのような問題は発生しませんが、異なるサードパーティの開発では Webpack パッケージ化の問題が発生します。

現在、解決策は 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 に抽出され、他の人がモジュールをインストールすると、このモジュールに自動的に publishassets が追加されます。 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 が異なり、読み込むものを選択できないためエラーが発生します

この問題を具体的に解決するにはどうすればよいでしょうか?

phpcn_u1582phpcn_u15822699日前731

全員に返信(1)返信します

  • 阿神

    阿神2017-06-23 09:13:17

    参照: /a/11...
    プラグインを動的にロードする webpack メカニズムに基づく SPA シングルページ Web アプリケーション

    返事
    0
  • キャンセル返事