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)
dans le module de publication automatique peut être automatiquement chargé (Resources/Bakcend/assets
目录到public/backend/modules/模块名
下面,并且在themes/bakcend/index.blade.php
résolu)
s est ci-dessous (public/backend/modules/模块名
下面,并在打包后自动复制一份到modules/模块名/Resources/Bakcend/asset
résolu)
, (themes/backend_default/index.blade.php
ré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)
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里面的assets
到public/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 ?
Référence : /a/11...
Application Web SPA d'une seule page basée sur webpack Mécanisme pour charger dynamiquement des plug-ins