一、背景
原项目只有一个入口文件app.js,现在需要新增登陆授权的入口文件oAuth.js,打包构建后发现oAuth页面显示正常,而原页面的样式发生丢失的现象。

二、原因
app和oAuth中有关登录功能一致,两个文件同时使用了login组件,但是打包后app.css中并没有有关login的样式。
分析了两个文件的引入方式,发现app是异步加载路由,而oAuth则是同步加载。webpack在打包的时候,将login相关的同步样式打包在了oAuth.css中,但是app由于是异步加载则样式丢失了。
三、解决方式
1、webpack 修改
修改extract-text-webpack-plugin配置为allChunks:true,会将组件中的css抽离至app.css中。
缺点:app.css的体积会变得很大,项目中的css文件从65k增大到229k。
2、oAuth改为异步路由
oAuth.js文件中,引入oAuth文件通过异步方式引入
3、app改为同步路由
app.js中,将login引用有关的路由改为同步引入方式