衆所周知,在webpack和單頁面應用出現以後,前端工程師從開發到打包已是一站式解決方案,由以前繁瑣的不少個js,css,html文件到如今打包成1個或幾個,能夠說是一個進步。可是隨着項目愈來愈大,團隊的人愈來愈多,須要開發的模塊也愈來愈多。這樣傳統的單頁面應用已經知足不了項目需求。
css
1.項目比較大,模塊多,須要多個前端工程師分別開發不一樣的模塊。
2.各模塊上線生產環境的時間不一樣,致使不一樣功能模塊在上線時要隱藏相應未完成的功能
3.有的模塊須要單獨一條線開發,無法和其餘模塊放在一個版本里
html
以webpack的多入口爲主導思路,而後具體問題具體對待。
前端
項目目錄: vue
項目改爲多頁面框架後,打包後每一個頁面都會有一個html頁面和入口js文件,靜態文件能夠在static裏新建一個和入口文件相同名稱的目錄。這樣上線腳本能夠經過正則匹配須要上線的文件。webpack
這樣項目修改後前端工程師能夠按模塊分工,svn代碼上的衝突率也能夠減小。這樣一些須要長期獨立開發並且又與主模塊關聯比較大模塊上線時間能夠不受版本的限制。web
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')>
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')
複製代碼
能夠將webpackChunkName修改爲跟模塊文件名相關的名稱,例如app模塊之後就統一用"app-name"。
PS:這裏有一個細節,就是babel的配置文件.babelrc裏 若是"comments": false,必定是改爲true。個人項目就由於是false因此按組分塊一直不成功。 3. vuex數據共享。
由於多頁面之間跳轉是正常的瀏覽器跳轉,因此保存在vuex的數據可能會丟失。解決這個問題的辦法就是在頁面跳轉前臨時將vuex的數據保存在sessionStorage中,跳轉完成後將sessionStorage的數據初始化到vuex中。具體代碼:
離開頁面時:vue-router
created () {
let that = this;
window.onunload = function () {
sessionStorage.vuexState = JSON.stringify(that.$store.state)
}
}
複製代碼
進入頁面時:
vuex
created () {
if(sessionStorage.vuexState){
for(let i in JSON.parse(sessionStorage.vuexState)){
this.$store.state[i] = JSON.parse(sessionStorage.vuexState)[i]
}
}
}
複製代碼
固然這個地方我爲了方便用的是vuex官方不提倡的方法。有更好的方法你們也能夠交流一下。
segmentfault
以上就是我的在項目開發中遇到這種問題的解決思路,但願能夠幫到你們,另外若是大神們有更好的解決辦法也能夠在評論討論分享。瀏覽器