php - Comment résoudre la modularisation Laravel et la solution Webpack+vue.js?
phpcn_u1582
phpcn_u1582 2017-06-23 09:11:17
0
1
736

Récemment, le projet de l'entreprise nécessite l'utilisation de vue family bucket + element-ui pour développer le backend, mais le projet original a été écrit par requirejs, donc tous les modules laravel peuvent être installés et désinstallés indépendamment, ce qui signifie que leurs js et css sont tous indépendants, et ceux publics sont placés directement dans le répertoire du thème. Alors la question se pose, comment un programme d'une seule page implémente-t-il cette solution ? Les exigences sont themes/backend
(Remarque : le module ici est le module de Laravel, pas le module ? module de js et npm)

  1. Chaque module est installé indépendamment. Après l'installation, le

    dans le module de publication automatique peut être automatiquement chargé (Resources/Bakcend/assets目录到public/backend/modules/模块名下面,并且在themes/bakcend/index.blade.phprésolu)

  2. Le backend d'une seule page est empaqueté à l'aide de webpack, et le répertoire d'empaquetage

    s est ci-dessous (public/backend/modules/模块名下面,并在打包后自动复制一份到modules/模块名/Resources/Bakcend/assetrésolu)

  3. Chaque module peut avoir son propre menu backend, son interface de gestion, etc., et ceux-ci sont tous implémentés avec vue, vue-router, element-ui. Les pages d'entrée de tous les modules se trouvent à l'adresse

    , (themes/backend_default/index.blade.phprésolu). 4. Chaque module peut être développé par différents tiers et publié dans le centre de modules général. Les utilisateurs peuvent télécharger eux-mêmes les modules requis (
    Le backend PHP a été résolu, mais le JS frontal a des problèmes)

Le problème se pose dans l'aspect frontal de la quatrième exigence ci-dessus. Si un individu ou une équipe interne développe tous les modules, il n'y aura pas de problème de ce type, mais différents développements tiers entraîneront des problèmes d'empaquetage du webpack

Il existe actuellement deux solutions, mais aucune ne peut résoudre fondamentalement le problème

Le premier est

chaque module laravel est emballé séparément, mais la bibliothèque de classes publique ne peut pas être traitée, car il est impossible pour un backend d'une seule page de générer un supplier.js pour chaque module et de le rendre public ou de mettre le bibliothèque de classes publiques dans l'application.js, de sorte que supplier.js et app.js de chaque module (module de blog, module principal, module de tableau de bord, etc.) chargés au total chargeront à plusieurs reprises ces bibliothèques de classes publiques themes/backend_default/index.blade.php

Le second est empaquetage intégré sous un thème thèmes/backend
Les ressources de chaque module sont placées themes/backend/modules/{module-name}里面,打包后自动抽取到各自的module/Resources/Backend/assets中,然后别人安装module的时候自动publish这个module里面的assetspublic/backend/modules/{module-name}目录里,但是这样也不行,因为如果每个开发者负责的module不同,所以在webpack.config.js or webpack.mix.js里打包的东西也是不同的,比如我写blog module的app.js,你写 dashboard module的app.js,那么各自打包后的assets生成的vendor.js(fichiers stockés dans la bibliothèque de classes publique) avec différents identifiants de module webpack (même si les classes publiques d'app.js de tous les modules les bibliothèques sont les mêmes), après la publication, le chargement des app.js de différents modules provoquera une erreur, car le supplier.js de chaque module est différent et vous ne pouvez en choisir aucun à charger

Comment résoudre ce problème spécifiquement ?

phpcn_u1582
phpcn_u1582

répondre à tous(1)
阿神

Référence : /a/11...
Application Web SPA d'une seule page basée sur webpack Mécanisme pour charger dynamiquement des plug-ins

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal