最近,在重構公司官網,須要兼容ie9/10/11,使用vue-cli構建項目。html
在查詢如何兼容ie時,首先是查看vue cli
官網,瀏覽器兼容性,感受官網說的不是太明晰(小白一枚,實在不太懂),而後就直接百度了,網上方法基本相似,都是用 browserslist
,babel-polyfill
等,只是具體步驟有差別,不過 都沒有解決本人問題。通過層層查詢,逐步對vue-cli 原理了解後,網上查詢方法結合本人理解,將問題解決,在此記錄下。vue
先說步驟,而後說一些本身淺顯理解。node
browserslist
配置這一項,有兩個途徑,一是 在 package.json
文件中,添加browserslist
字段;二是 在項目根目錄,建立一個.browserslistrc
文件,兩種途徑。這兩種方法不能同時配置,否則運行serve
命令會報錯。webpack
先說package.json
中配置,網上不少以下方法:es6
"browserslist": [ "> 1%", "last 4 versions" ]
本人依此配置,報錯!而後按照另一種配置,以下:web
"browserslist": [ "ie 11" ]
成功!vue-cli
額外貼出.browserslistrc
方法配置方式(只是列出書寫方式,代碼有效性,按上面來):npm
> 1% last 4 versions
babel-polyfill
依賴這個簡單,直接 npm i babel-polyfill --save-dev
便可json
3.引入babel-polyfill
依賴瀏覽器
這一步是關鍵,網上查詢不少,在main.js
中,import babel-polyfill
引入,本人測試後無效。
具體引入是在vue.config.js
中configureWebpack
字段中,具體:
configureWebpack: config => { config.entry.app = ["babel-polyfill", "./src/main.js"]; }
即在webpack入口配置中,加入babel-polyfill
。至此,在ie下,兼容es6就解決了!
上面把問題解決了,再將本身解決過程當中的理解梳理下。
1.首先上面的解決步驟,僅僅適用於源碼(/src),對依賴包無效。當須要對依賴包作兼容轉譯時,就須要用到官網中Polyfill部份內容了
2.vue-cli中webpack配置文件是在node_modules中的,沒有直接在根目錄,要想配置webpack,須要在vue.config.js中configureWebpack
字段或者chainWebpack
配置。具體以下:
module.exports = { configureWebpack: { resolve: { alias: { querystring: 'querystring-browser' } } } }
module.exports = { chainWebpack: config => { config.resolve.alias.set('querystring', 'querystring-browser') } }
解決過程當中,查詢的相關資料
1.Vue 兼容 ie9 的全面解決方案
2.Vue CLI 3 瀏覽器兼容性配置
3.Editing webpack.config.js when using vue-cli 3