小編給大家分享一下如何解決Vue+webpack+Element的兼容問(wèn)題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10年積累的網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有灣里免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。項(xiàng)目中用到了Vue.js和Elenment-UI
Vue官方文檔中給出明確范圍:Vue 不支持 IE8 及以下版本,因?yàn)?Vue 使用了 IE8 無(wú)法模擬的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的瀏覽器。
而且Element-UI支持IE10+及大多數(shù)瀏覽器。由此要用到Babel,主要用于將ECMAScript 2015+代碼轉(zhuǎn)換為舊瀏覽器或環(huán)境中向后兼容的JavaScript版本。在此之前,需要先搞清楚IE6~11是否支持es5:
IE6~IE8:不支持es5的所有語(yǔ)法;
IE9:支持除ECMAScript 5 Strict Mode外的es5語(yǔ)法;
IE10:支持es5的所有語(yǔ)法;
IEÏ11:支持es5所有語(yǔ)法及es6中const和Typed Arrays新語(yǔ)法
babel可以把同種語(yǔ)言的高版本規(guī)則翻譯成低版本規(guī)則,其轉(zhuǎn)譯過(guò)程也分為三個(gè)階段:parsing、transforming、generating。(1)解析步驟接收代碼并輸出 AST(抽象語(yǔ)法樹(shù)),這其中又包含兩個(gè)階段詞法分析和語(yǔ)法分析。詞法分析階段把字符串形式的代碼轉(zhuǎn)換為令牌(tokens)流。語(yǔ)法分析階段會(huì)把一個(gè)令牌流轉(zhuǎn)換成 AST 的形式,方便后續(xù)操作。(2) 利用我們配置好的plugins/presets把Parser生成的AST轉(zhuǎn)變?yōu)樾碌腁ST。(3)代碼生成步驟過(guò)程是深度優(yōu)先遍歷整個(gè) AST,然后構(gòu)建可以表示轉(zhuǎn)換后代碼的字符串。
下面總結(jié)Babel的使用:
1、由于項(xiàng)目使用了webpack打包工具,安裝
npm install --save-dev babel-loader babel-core
2、在webpack.config.js中設(shè)置
module: { rules: [ { test: /\.js$/, loader: "babel-loader", include: [ resolve("src"), resolve("test"), ], },Ï ] }
可以根據(jù)webpack中Module的選項(xiàng)來(lái)配置相應(yīng)內(nèi)容
3、在根目錄下創(chuàng)建.babelrc文件來(lái)添加插件,文件添加成功后,可以開(kāi)始配置內(nèi)容
首先,可以使用evn預(yù)設(shè)置,它支持ES2015+的轉(zhuǎn)換
npm install babel-preset-env --save-dev
在.babelrc文件中
{ "presets":["evn"] }
如果沒(méi)有任何配置選項(xiàng),babel-preset-env的行為與babel-preset-latest(或babel-preset-es2015、babel-preset-es2016和babel-preset-es2017一起)完全相同。
當(dāng)然,還有可選的選項(xiàng)可以配置,例如:
[ "env", { "modules": false, "targets": { "browsers": ["> 1%", "last 2 versions"] } } "stage-2" ],
evn中設(shè)置項(xiàng)所代表的意思:
targets.node 支持到哪個(gè)版本的
node targets.browsers 支持到哪個(gè)版本的瀏覽器
loose 啟動(dòng)寬松模式,配合 webpack 的 loader 使用
modules 使用何種模塊加載機(jī)制
debug 開(kāi)啟調(diào)試模式
include 包含哪些文件
exclude 排除哪些文件
useBuiltIns 是否對(duì) babel-polyfill 進(jìn)行分解,只引入所需的部分
targets.browsers是參考browserslist https://github.com/browserslist/browserslist設(shè)置瀏覽器條件。
設(shè)置了完成后,還需要用babel-polyfill來(lái)實(shí)現(xiàn)瀏覽器不能支持的原生代碼,在瀏覽器引入了相應(yīng)的polyfill后,可以用新的內(nèi)置對(duì)象比如 Promise 或者 WeakMap, 靜態(tài)方法比如 Array.from 或者 Object.assign, 實(shí)例方法比如 Array.prototype.includes。但是因?yàn)閎abel-polyfill是在原型鏈上直接添加方法,會(huì)污染全局變量,項(xiàng)目打包以后體積增大。
npm install --save babel-polyfill
若在應(yīng)用程序的入口頂點(diǎn)引入,則
require("babel-polyfill");
如果在應(yīng)用程序的入口點(diǎn)使用ES6的導(dǎo)入語(yǔ)法,則應(yīng)該在入口點(diǎn)的頂部導(dǎo)入polyfill,以確保首先加載polyfills
import("babel-polyfill");
如果通過(guò)webpack.config.js,在入口處添加:
module.exports = { entry: ["babel-polyfill", "./app/js"] };
為了不污染全局對(duì)象和內(nèi)置的對(duì)象原型,可以用babel-plugin-transform-runtime,在.babelrc文件中
"plugins": [ [ "transform-runtime", { "helpers": false, "polyfill": true, "moduleName": "babel-runtime" } ], ]
插件應(yīng)用于babel的轉(zhuǎn)譯過(guò)程,尤其是第二個(gè)階段transforming,如果這個(gè)階段不使用任何插件,那么babel會(huì)原樣輸出代碼。
如果同時(shí)添加了plugins和presets,注意:插件會(huì)在預(yù)設(shè)項(xiàng)之前運(yùn)行;插件按第一個(gè)到最后一個(gè)正序執(zhí)行;預(yù)設(shè)中設(shè)置從最后一個(gè)到第一個(gè)逆序執(zhí)行,設(shè)置時(shí)注意執(zhí)行順序。
以上是“如何解決Vue+webpack+Element的兼容問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前文章:如何解決Vue+webpack+Element的兼容問(wèn)題-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://muchs.cn/article16/dgccdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作、App開(kāi)發(fā)、網(wǎng)站建設(shè)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容