国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php - laravel模塊化與webpack+vue.js處理方案如何解決?
phpcn_u1582
phpcn_u1582 2017-06-23 09:11:17
0
1
854

最近公司項目硬性要求使用vue全家桶+element-ui的方式來開發(fā)后臺,但是原來的項目是requirejs寫的,所以所有l(wèi)aravel模塊都是可以獨立安裝和卸載的,也就是說他們的js和css都是獨立的,那些公用的直接放在themes/backend主題目錄下,那么問題來了,單頁程序如何實現(xiàn)這種方案,需求
(注意:這里的module是laravel的module,不是js和npm的module)

  1. 每個模塊獨立安裝,安裝后自動publish模塊中的Resources/Bakcend/assets目錄到public/backend/modules/模塊名下面,并且在themes/bakcend/index.blade.php中可以自動加載(已解決)

  2. 單頁的后臺使用webpack打包,打包目錄public/backend/modules/模塊名下面,并在打包后自動復(fù)制一份到modules/模塊名/Resources/Bakcend/assets下面(已解決)

  3. 每個模塊可以有自己的后臺菜單,管理界面等,并且這些全部用vue,vue-router,element-ui實現(xiàn),所有模塊的入口頁面位于themes/backend_default/index.blade.php,(已解決)
    4.每個模塊可以由不同的第三方自行開發(fā),發(fā)布到總的模塊中心,使用者可以自行下載所需模塊(PHP后端方面已解決,前端JS方面就出現(xiàn)問題了)

問題就出現(xiàn)在以上需求的第四條的前端方面,如果個人或者一個內(nèi)部團隊開發(fā)所有模塊就沒有這個問題,但不同的第三方開發(fā)就引起了webpack打包的問題

目前有兩種方案,但是都不能從根本上解決問題

第一種是每個laravel-module單獨打包,但是公共類庫無法處理,因為單頁的后臺不可能每個module的都生成一個vendor.js放置公共或者把公共類庫放入app.js,這樣在總的themes/backend_default/index.blade.php里面加載每個module(blog-module,core-module,dashboard-module等)的vendor.js和app.js就會重復(fù)加載這些公共類庫

第二種是一個themes/backend主題下集成打包
每個module的資源都放在themes/backend/modules/{module-name}里面,打包后自動抽取到各自的module/Resources/Backend/assets中,然后別人安裝module的時候自動publish這個module里面的assetspublic/backend/modules/{module-name}目錄里,但是這樣也不行,因為如果每個開發(fā)者負(fù)責(zé)的module不同,所以在webpack.config.js or webpack.mix.js里打包的東西也是不同的,比如我寫blog module的app.js,你寫 dashboard module的app.js,那么各自打包后的assets生成的vendor.js(公共類庫存放的文件)的webpack module id不同(即使所有的module的app.js的公共類庫都一樣),publish后加載不同的module的app.js就會出錯,因為每個module的vendor.js不一樣,不能選擇任何一個加載

請問具體如何解決這個問題呢?

phpcn_u1582
phpcn_u1582

全部回復(fù)(1)
阿神

參考:/a/11...
基于 webpack 的 SPA 單頁 Web 應(yīng)用 動態(tài)加載插件的機制

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板