VueCli3中兼容IE11配置的艰苦历程

目录
  • 当前项目前端版本
  • 解决步骤

由于目前项目是采用VueCli3 搭建的项目,对google,火狐、eage 、360等浏览器兼容不错,但是对IE确出现了问题,目前项目要上线,那个着急啊,花了将近两天的时间从网上那个度娘,必应啊,但还好最终还是完美解决了。

现在对自己这两天的辛苦做个总结,也当是记录一下自己的感悟。

当前项目前端版本

package.json

{
  "name": "vue-antd-pro",
  "version": "1.2.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "test:unit": "vue-cli-service test:unit"
  },
  "dependencies": {
    "@antv/data-set": "^0.10.1",
    "@fortawesome/fontawesome-svg-core": "^1.2.25",
    "@fortawesome/free-solid-svg-icons": "^5.11.2",
    "@fortawesome/vue-fontawesome": "^0.1.8",
    "ant-design-vue": "^1.6.2",
    "axios": "^0.18.0",
    "babel-polyfill": "^6.26.0",
    "browserslist": "^4.12.0",
    "caniuse-lite": "^1.0.30001062",
    "core-js": "^2.6.11",
    "echarts": "^4.6.0",
    "enquire.js": "^2.1.6",
    "js-cookie": "^2.2.0",
    "lodash.get": "^4.4.2",
    "lodash.pick": "^4.4.0",
    "md5": "^2.2.1",
    "moment": "^2.24.0",
    "nprogress": "^0.2.0",
    "viser-vue": "^2.3.3",
    "vue": "^2.6.11",
    "vue-baidu-map": "^0.21.22",
    "vue-clipboard2": "^0.2.1",
    "vue-cropper": "^0.4.4",
    "vue-echarts": "^5.0.0-beta.0",
    "vue-json-excel": "^0.2.98",
    "vue-ls": "^3.2.0",
    "vue-router": "^3.0.1",
    "vuex": "^3.1.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.3.0",
    "@vue/cli-plugin-eslint": "^3.3.0",
    "@vue/cli-plugin-unit-jest": "^3.3.0",
    "@vue/cli-service": "^3.3.0",
    "@vue/eslint-config-standard": "^4.0.0",
    "@vue/test-utils": "^1.0.0-beta.20",
    "babel-core": "7.0.0-bridge.0",
    "babel-eslint": "^10.0.1",
    "babel-jest": "^23.6.0",
    "eslint": "^5.8.0",
    "eslint-plugin-html": "^5.0.0",
    "eslint-plugin-vue": "^5.0.0",
    "less": "^3.8.1",
    "less-loader": "^4.1.0",
    "vue-template-compiler": "^2.6.11",
    "webpack-bundle-analyzer": "^3.1.0"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/strongly-recommended",
      "@vue/standard"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {
      "generator-star-spacing": "off",
      "no-mixed-operators": 0,
      "vue/max-attributes-per-line": [
        2,
        {
          "singleline": 5,
          "multiline": {
            "max": 1,
            "allowFirstLine": false
          }
        }
      ],
      "vue/attribute-hyphenation": 0,
      "vue/html-self-closing": 0,
      "vue/component-name-in-template-casing": 0,
      "vue/html-closing-bracket-spacing": 0,
      "vue/singleline-html-element-content-newline": 0,
      "vue/no-unused-components": 0,
      "vue/multiline-html-element-content-newline": 0,
      "vue/no-use-v-if-with-v-for": 0,
      "vue/html-closing-bracket-newline": 0,
      "vue/no-parsing-error": 0,
      "no-console": 0,
      "no-tabs": 0,
      "quotes": [
        2,
        "single",
        {
          "avoidEscape": true,
          "allowTemplateLiterals": true
        }
      ],
      "semi": [
        2,
        "never",
        {
          "beforeStatementContinuationChars": "never"
        }
      ],
      "no-delete-var": 2,
      "prefer-const": [
        2,
        {
          "ignoreReadBeforeAssign": false
        }
      ]
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

目前可以做到兼容到>=IE9

解决步骤

1.安装 bable-polyfill

yarn install babel-polifill --save

2.vue.config.js 里配置

const path = require('path')
const webpack = require('webpack')
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
function resolve (dir) {
  return path.join(__dirname, dir)
}
// vue.config.js
module.exports = {
  /*
    Vue-cli3:
    Crashed when using Webpack `import()` #2463
    https://github.com/vuejs/vue-cli/issues/2463
   */
  /*
  pages: {
    index: {
      entry: 'src/main.js',
      chunks: ['chunk-vendors', 'chunk-common', 'index']
    }
  },
  */
  configureWebpack: {
    // 关闭webpack 的性能提示
    performance: {
      hints: false
    },
    plugins: [
      // Ignore all locale files of moment.js
      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
      // new BundleAnalyzerPlugin()
    ],
    externals: {
      'vue': 'Vue',
      'ant-design-vue': 'antd',
      'BMap': 'BMap'
    }
  },
  chainWebpack: (config) => {
    config.resolve.alias
      .set('@$', resolve('src'))
      .set('@api', resolve('src/api'))
      .set('@assets', resolve('src/assets'))
      .set('@comp', resolve('src/components'))
      .set('@views', resolve('src/views'))
      .set('@layout', resolve('src/layout'))
      .set('@static', resolve('src/static'))
    config.entry('main').add('babel-polyfill')
  },
  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          /* less 变量覆盖,用于自定义 ant design 主题 */
          /*
          'primary-color': '#F5222D',
          'link-color': '#F5222D',
          'border-radius-base': '4px',
          */
          'font-size-base': '13px'
        },
        javascriptEnabled: true
      }
    }
  },
  devServer: {
    disableHostCheck: true,
    port: 8082,
    proxy: {
      '/api': {
        // target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro',
        target: 'http://localhost:8080/omsdc',
        ws: false,
        changeOrigin: true
      },
      '/proxy2': {
        target: 'http://localhost:8080/omsdc',
        ws: false,
        changeOrigin: true
      }
    }
  },
  lintOnSave: undefined,
  productionSourceMap: false,
  transpileDependencies: [
    'resize-detector'
  ]
}

重点是

config.entry(‘main').add(‘babel-polyfill'),表示引入到main.js中;transpileDependencies: [
‘resize-detector'
] 

表示node_modules 里没有被转换行成es5的模块,可以从这个数组里面配置,进行转换

3.main.js 中引入 import ‘core-js’

4.重启服务,刷新IE浏览器,完美解决!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue+iview 兼容IE11浏览器的实现方法

    最近在搞一个基于vue的后台管理系统兼容IE浏览器,眼泪都要掉下来.后来和产品说了,同意兼容IE11,感动得我眼泪啊 这里也就是记录一下我遇到的超级烦的bug 首先是'babel-polyfill' 和 "autoprefixer-loader" 这个不用多说,资源一大堆 然后 打包之后一直  const  去不掉,查了之后是 webpack 有 webpack-dev 不支持IE低版本了,要把 webpack 版本往下调,我是拒绝的 1.IE  new Date() 失败 new D

  • 详解Vue Cli浏览器兼容性实践

    浏览器市场占有率 在处理浏览器兼容性问题之前,我们先来看一下现在的浏览器市场份额是怎样的,

  • 快速解决vue2+vue-cli3项目ie兼容的问题

    刚写好的项目在谷歌能打开,ie打不开,需要处理兼容问题 先根据这篇文章修改 详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决 如果没有其他问题是可以了的,下面是我代码中出现的其他问题导致页面无法显示或者报错 sockjs报错 控制台会一直报这个错,sockjs-node 是一个JavaScript库,提供跨浏览器JavaScript的API,创建了一个低延迟.全双工的浏览器和web服务器之间通信通道. 服务端:sockjs-node(https://github.com/sockj

  • VueCli3中兼容IE11配置的艰苦历程

    目录 当前项目前端版本 解决步骤 由于目前项目是采用VueCli3 搭建的项目,对google,火狐.eage .360等浏览器兼容不错,但是对IE确出现了问题,目前项目要上线,那个着急啊,花了将近两天的时间从网上那个度娘,必应啊,但还好最终还是完美解决了. 现在对自己这两天的辛苦做个总结,也当是记录一下自己的感悟. 当前项目前端版本 package.json { "name": "vue-antd-pro", "version": "

  • vue-cli3中vue.config.js配置教程详解

    前言 vue-cli3推崇零配置,其图形化项目管理也很高大上. 但是vue-cli3推崇零配置的话,导致了跟之前vue-cli2的配置方式都不一样了. 别名设置,sourcemap控制,输入文件位置和输出文件位置和输出的方式,压缩js控制,打包webapck日志分析,externals忽略配置(外部引入),调试的端口配置,proxy接口配置等等的. 有时候还需要我们配置的,因为官方推荐的,并不适用于我们平时的开发所用的. 所以,我的vue.config.js配置是下面这样的.还有一个改hash的

  • vue-cli3中配置alias和打包加hash值操作

    1.之前在项目测试环境打包的时候,js文件打包出来没有hash值,但是生产环境打包出来却又hash值 当时只配置了 filenameHashing: true,这样是不够的 后来在chainWebpack中配置config.output.filename('[name].[hash].js').end(),解决了该问题 2.配置alias可以在引入文件的时候不用写很长的相对路径 步骤: 先引入path模块 const path = require('path') function resolve

  • vue项目兼容ie11的实现方法

    目录 前情提要 经过(一) 经过(二) 经过(三) 经过(四) 最后 附加 总结 前情提要 事情的起因是项目在设计之初要求兼容IE11,也在开发之初对此做了处理,但在经过两年的多的迭代后,经过大几十个人的手之后,该项目被引入了大量的插件,又由于不经常使用IE浏览器导致不知道什么时候项目就已经不兼容IE11了.但是领导是使用IE浏览器的,突然哪天翻看项目网页的时候,打不开了.于是从上头被骂了,我们被要求将手上所有的项目都对IE11以及其他市面上的浏览器做兼容处理. 经过(一) 对于Chrome浏览

  • 详解vue-cli3多环境打包配置

    最近下载了vue-cli3,研究了下vue-cli3下多环境的配置. 首先,安装vue-cli3. npm install -g @vue/cli 安装好之后的项目是这样的,见下图: 相比较vue-cli2的项目,缺少了build和config目录,另外static目录也没了,多了个public目录. 配置文件需要自己写一个vue.config.js,可以参考官方文档文档写,网址 https://cli.vuejs.org/zh/config/ 现在说重点,怎么配置多环境.打开package.j

  • 浅析webpack-bundle-analyzer在vue-cli3中的使用

    正常的使用方法 安装 npm install webpack-bundle-analyzer -D webpack.config.js: vue-cli3的配置方法 根目录的vue.config.js(没有则自己创建) module.exports = { chainWebpack: config => { config .plugin('webpack-bundle-analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyze

  • Pycharm中Python环境配置常见问题解析

    本文实例讲述了Pycharm中Python环境配置常见问题.分享给大家供大家参考,具体如下: 1.问题的发现 最近在用Pycharm下的命令行工具安装.运行jupyter notebook时kernal一直报错,报错最下面两行如下所示 import win32api ImportError: DLL load failed: 找不到指定的模块. 经过网络搜索发现是无法正确解析python的路径,可能是python解释器的路径可能冲突,后来我发现有"两个"python路径,一个是我之前安

  • 解决vuecli3中img src 的引入问题

    最近公司要做一个在线ps 的项目 但是后台没写完, 我在用本地图片上传预览的时候 发现图片不能显示, 解决的办法 是 //页面的结构 <div class="workspace" > <img :src='img'> </div> export default { data() { return { img:require('../../assets/fapiao.jpeg'), //这里只能使用require的方式去使用 如果img 是数组, 就用

  • vue-cli4使用全局less文件中的变量配置操作

    目录结构如下: 需求: 在Navgation.vue中使用global.less中的变量 vue-cli3的配置方法如下:传送门 vue-cli4的配置方法如下: 安装 style-resources-loader npm i style-resources-loader -D 在 vue.config.js 中加上如下配置,没有则创建该文件,文件名不能改,如下: // vue.config.js const path = require('path') module.exports = { l

随机推荐