众所周知,在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
以上就是我的在项目开发中遇到这种问题的解决思路,但愿能够帮到你们,另外若是大神们有更好的解决办法也能够在评论讨论分享。浏览器