日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue导入非es6 js文件_Vue项目兼容IE11

發布時間:2025/3/19 vue 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue导入非es6 js文件_Vue项目兼容IE11 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Vue 不支持 IE8 及以下版本,因為 Vue 使用了 IE8 無法模擬的 ECMAScript 5 特性。但對于 IE9+,Vue 底層是支持。

由于開發過程中,我們經常會使用一些第三方插件或組件,對于這些組件,有時我們需要做一些處理。下述主要闡述如何使用 vue-cli3 腳手架搭建的工程支持 IE11。

現象

IE11 打開 Vue 工程(Vue CLI)構建而來出現空白頁,控制臺告警、報錯。

如:

  • DOM7011: 此頁上的代碼禁用了反向和正向緩存
  • HTML1300:進行了導航
  • app.js 各種語法錯誤

browserslist

項目中 package.json 文件里的 browserslist 字段 (或一個單獨的 .browserslistrc 文件),指定了項目的目標瀏覽器的范圍。這個值會被 @babel/preset-env 和 Autoprefixer 用來確定需要轉譯的 JavaScript 特性和需要添加的 CSS 瀏覽器前綴。

  • @babel/preset-env:將你使用最新 JavaScript 語法,靈活的轉化為目標瀏覽器所支持的 polyfill。
  • Autoprefixer:PostCSS 插件,為瀏覽器增加前綴。

.browserslistrc

> 1% last 2 versions not ie < 11

Polyfill

默認的 Vue CLI 項目會使用 @vue/babel-preset-app,它通過 @babel/preset-env 和 browserslist 配置來決定項目需要的 polyfill。

默認情況下,它會把 useBuiltIns: 'usage' 傳遞給 @babel/preset-env,這樣它會根據源代碼中出現的語言特性自動檢測需要的 polyfill。這確保了最終包里 polyfill 數量的最小化。然而,這也意味著如果其中一個依賴需要特殊的 polyfill,默認情況下 Babel 無法將其檢測出來。

Vue CLI 文檔 中,提供了三種方式:

  • 如果該依賴基于一個目標環境不支持的 ES 版本撰寫: 將其添加到 vue.config.js 中的 transpileDependencies 選項。這會為該依賴同時開啟語法轉換和根據使用情況檢測 polyfill。
  • 如果該依賴交付了 ES5 代碼并顯式地列出了需要的 polyfill: 你可以使用 @vue/babel-preset-app 的 polyfills 選項預包含所需要的 polyfill。注意 es6.promise 將被默認包含,因為現在的庫依賴 Promise 是非常普遍的。
// babel.config.js module.exports = {presets: [['@vue/app', {polyfills: ['es6.promise','es6.symbol']}]] }

提示:我們推薦以這種方式添加 polyfill 而不是在源代碼中直接導入它們,因為如果這里列出的 polyfill 在 browserslist 的目標中不需要,則它會被自動排除

  • 如果該依賴交付 ES5 代碼,但使用了 ES6+ 特性且沒有顯式地列出需要的 polyfill (例如 Vuetify):請使用 useBuiltIns: 'entry' 然后在入口文件添加 import '@babel/polyfill'。這會根據 browserslist 目標導入所有 polyfill,這樣你就不用再擔心依賴的 polyfill 問題了,但是因為包含了一些沒有用到的 polyfill 所以最終的包大小可能會增加。

我們采用了最簡單最直接(但是性能不是最好)的第 3 種方式!

第一步: 在 babel 的相關配置文件(babel.config.js、.babelrc 或 package.json 的 babel 字段任一)中,增加 "useBuiltIns": "entry" 信息。babel 7 版本以后,會有差異 -- Here

babel.config.js

{"presets": [["@babel/preset-env",{"useBuiltIns": "entry"}]] }
  • If useBuiltIns: 'usage' is specified in .babelrc then do not include @babel/polyfill in either webpack.config.js entry array nor source. Note, @babel/polyfill still needs to be installed.
  • If useBuiltIns: 'entry' is specified in .babelrc then include @babel/polyfill at the top of the entry point to your application via require or import as discussed above.
  • If useBuiltIns key is not specified or it is explicitly set with useBuiltIns: false in your .babelrc, add @babel/polyfill directly to the entry array in your webpack.config.js.
{"presets": [["@babel/preset-env",{"useBuiltIns": "entry"}]] }

!!! 網上信息比較混亂,經常出現幾種方式混用,并不合理!

第二步: 安裝 '@babel/polyfill' ,并在入口文件添加 import '@babel/polyfill'

$ npm install --save @babel/polyfill

main.js

import '@babel/polyfill'

注意,Babel 7.4.0 以后,該包已被棄用(deprecated)。官方推薦使用 core-js/stable 和 regenerator-runtime/runtime 替代。 -- @babel/polyfill


至此,我們已按照官方要求做了配置,重新啟動項目,發現依然不行!!

transpileDependencies

默認情況下 babel-loader 會忽略所有 node_modules 中的文件。如果你想要通過 Babel 顯式轉譯一個依賴,可以在 transpileDependencies 選項中列出來。

下一步:使用 babel 對 elementUI、vuex(需要 Promise polyfill -- Here) 進行轉換。

按照 Vue CLI 提供的 3 種方案的第 1種:

如果該依賴基于一個目標環境不支持的 ES 版本撰寫: 將其添加到 vue.config.js 中的 transpileDependencies 選項。這會為該依賴同時開啟語法轉換和根據使用情況檢測 polyfill。

vue.config.js

transpileDependencies: [/node_modules[/](element-ui|vuex|)[/]/],

根據你的項目實際情況,此處 element-ui 可能不需要

proxy

針對 Proxy 對象進行 polyfill。

下一步: 在 index.html 文件中引入 es6-proxy-polyfill.js

<script src = "https://cdn.jsdelivr.net/npm/proxy-polyfill@0.3.0/proxy.min.js"></script>

根據項目實際情況,看是否有必要引入。如果引入,建議下載到本地,再引入。


至此,項目終于不是空白頁了!!

但是,出現了大量排版錯誤!

css polyfill

由于我們項目中,大量使用了 CSS var() ,IE11 不兼容導致,思路相同,尋找相應的 polyfill 即可。這里我們使用了 css-vars-ponyfill

$ npm install --save css-vars-ponyfill

main.js

import cssVars from 'css-vars-ponyfill' cssVars({})

大功告成!

總結

總之,所有的處理都是圍繞轉換成 IE11 可以兼容的方式去處理。對于 JavaScript 語法,即是對 babel 的控制;對于 CSS 語法,需要特定分析。

IE 微軟已不再維護,也希望我們所有的前端小伙伴可以早日脫離這苦海!

歡迎關注 「 Super 前端 」微信公眾號

版權聲明:
本文原創自我的博客:李剛的學習專欄

總結

以上是生活随笔為你收集整理的vue导入非es6 js文件_Vue项目兼容IE11的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 不卡视频在线观看 | 爱情岛论坛自拍亚洲品质极速最新章 | www.色呦呦 | 蜜美杏av | 天美视频在线观看 | 一区二区三区四区精品视频 | 日韩成人精品一区二区 | 日韩成人黄色片 | 国产精品国产三级国产三级人妇 | x88av在线| 日韩欧美亚洲 | 伊人96| 含羞草一区二区 | 秘密爱大尺度做爰呻吟 | 伊人黄色 | 亚洲一级片 | 亚洲日本中文 | 国产99久久久欧美黑人 | 日韩综合精品 | 中文字幕电影一区二区 | 久久免费偷拍视频 | 干干干操操操 | av网站免费看 | 欧美日韩免费高清 | 亚洲女同二女同志 | 丁香伊人 | 国产精品zjzjzj在线观看 | 9色91| 激情瑟瑟 | 一本久道综合色婷婷五月 | 亚洲最大的网站 | 精品人妻无码一区二区三区 | 久久一二 | 久久久午夜影院 | 无码人妻少妇伦在线电影 | 污污视频免费看 | 黑人与日本少妇 | 无码人妻aⅴ一区二区三区有奶水 | 中文字幕视频 | 超污网站在线观看 | 久久久久亚洲AV成人网人人小说 | 疯狂伦交| 超碰神马 | 伊人啪啪 | 99在线观看免费 | 潘金莲裸体一级淫片视频 | 久久久中文字幕 | 国产剧情一区在线 | 国产中文在线视频 | 婷婷综合视频 | 亚洲人成人一区二区在线观看 | 波多野结衣中文在线 | 国产99对白在线播放 | 日本人妻不卡一区二区三区中文字幕 | 九九这里只有精品视频 | 欧美丰满美乳xxⅹ高潮www | 国产精品白丝喷水在线观看 | 国产在线123 | 国产午夜精品一区二区理论影院 | 友田真希一区二区 | 欧美黑人精品 | 操穴网站 | 在线免费成人 | 婷婷tv| 国产精品剧情 | 国产精品视频福利 | 亚洲色图综合 | 国产免费一区二区三区网站免费 | 在线精品视频免费观看 | 五月激情六月 | 波多野结衣视频一区 | 国产又色又爽 | 中文字幕亚洲综合 | 日韩色吧 | 久久成人久久爱 | 91红桃视频 | 国产无遮挡aaa片爽爽 | 国产亚洲精品久久久久婷婷瑜伽 | 久久人人添人人爽添人人片 | 91久久精品国产91久久性色tv | 狠狠干中文字幕 | 久草视频播放 | 久久午夜电影网 | 午夜精品久久久内射近拍高清 | 午夜丁香婷婷 | 福利社午夜 | 成人午夜黄色 | 高潮网| 中文字幕在线观看第二页 | 欧美综合网 | 超碰人人人人人人人 | 亚洲国产一区二区三区a毛片 | 激情在线视频 | 久久精品无码Av中文字幕 | 久草福利资源在线观看 | 欧美一区二 | 黄色在线不卡 | 第一色综合 | 男人的天堂久久久 |