vue 项目兼容 IE 浏览器

Posted 小童姥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 项目兼容 IE 浏览器相关的知识,希望对你有一定的参考价值。

前言 : 网上 找了很多关于 vue项目兼容 IE 浏览器的 教程步骤 , 写的 非常详细 , 但根据我自己的项目,怎么找 都没有找到 webpack.base.conf.js 这个文件 ,就没办法配置
因为 vue-cli最新版本原因 , 隐藏了配置文件, 所有的 都在 vue.config.js中配置
可以根据自己的 vue-cli 版本来搜索 配置教程 !!!

进入正题:
1: 安装babel/polyfill

npm install --save @babel/polyfill

2:在main.js里面引入

import '@babel/polyfill' //(一定要在最上面,第一行)

3:安装完成后会有babel.config.js文件 手动修改下

   module.exports = 
   	  presets: [
   	    // '@vue/cli-plugin-babel/preset',
   	    ['@vue/app', 
   	      useBuiltIns: 'entry',
   	  ]
   	  ]
   	

4:在package.json文件browserslist配置

	"browserslist": [
	    "> 1%",
	    "last 2 versions",
	    "not ie <= 11"
	  ]

5:在vue.config.js中

   module.exports = 
   	transpileDependencies:['*'] //最开始这里的值为 true,查到的改成 * , 
   	//应该是 转成es5,大佬知道的话,可留言解答!
   

这5步完成之后 , 给 IE11 上运行会报 ’ SCRIPT445: 对象不支持此操

解决: (具体是干嘛的 我还没弄明白,大神如果知道可留言解答 !!)
1: 安装core-js 和 regenerator-runtime

 npm install --save core-js regenerator-runtime

2:main.js 引入

import 'core-js/stable';
import 'regenerator-runtime/runtime';


到这 就完美结束 , IE 就能完美运行 起来了, 希望对你有所帮助 , 欢迎留言, 共同进步 !!!

vue项目系统兼容IE浏览器问题以及解决方案

系统兼容IE浏览器问题以及解决方案

问题

vue项目在IE浏览器上运行时会出现兼容性问题:JavaScript语法报错,css样式错乱。原因是在IE(以IE11为例)浏览器下,部分js的写法需要改变,部分样式在IE浏览器上不支持,以及一些IE浏览器特有的问题。

  1. vue 只兼容ie8以上版本;

  2. IE 不兼容 axios的promiss对象;

  3. IE 不兼容es6语法;

解决方案

下载对应插件包解决js兼容性问题:babel-polyfill,es6-promise以及 babel-plugin-transform-es2015-modules-commonjs

一、关于babel-polyfill

1、说明:This will emulate a full ES2015+ environment and is intended to be used in an application rather than a library/tool. This polyfill is automatically loaded when using babel-node.(模拟ES2015以上的环境,主要用于对ES6新语法不支持的浏览器);

2、安装:npm install --save babel-polyfill;

3、配置:module.exports = entry: [“babel-polyfill”, “./src/main.js”] ;

4、main.js中配置:import ‘babel-polyfill’ //放在最顶部,确保全面加载

二、关于es6-promise

1、说明:若在项目中使用了ES6 promise对象,它在Chrome、Safari浏览器下可以正常运行,但在360兼容模式、IE内核中不支持;

2、安装:npm install es6-promise;

3、配置:在main.js中加入require(‘es6-promise’).polyfill(),用于在node或浏览器中支持ES6 与CommonJS。

因为项目中require和import混用的原因,在做了IE兼容之后打包会出现问题,会报以下错误:

Cannot assign to read only property 'exports' of object '#<Object>'

此时就需要安装babel-plugin-transform-es2015-modules-commonjs插件来解决报错

先安装:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

然后再 .babelrc 中添加该插件

 "plugins": ["transform-es2015-modules-commonjs"]

安装完以上插件之后,还需要做相关配置的修改,具体操作如下:

vue.config.js文件chainWebpack方法中添加

config.entry.app = ["babel-polyfill", "./src/main.js"];
config.module.rule('compile')
      .test(/\\.js$/)
      .include
      .add(resolve('src'))
      .add(resolve('test'))
      .add(resolve('node_modules/webpack-dev-server/client'))
      .add(resolve('node_modules'))
      .end()
      .use('babel')
      .loader('babel-loader')
      .options(
        presets: [
          ['@babel/preset-env', 
            modules: false
          ]
        ]
      ); 

babel.config.js中对应修改,添加sourceType和useBuiltIns:

module.exports = 
  presets: [
    // '@vue/cli-plugin-babel/preset', //文件原始内容
    ['@vue/app', 
      useBuiltIns: 'entry',             //添加的内容
    ]
  ],
  sourceType: 'unambiguous'

main.js中代码顶部加入对应引用:

import 'babel-polyfill'
import Es6Promise from 'es6-promise'
require('es6-promise').polyfill()
Es6Promise.polyfill()Plain Text

以上就是处理IE浏览器js兼容问题,至于css样式兼容,则需要对应修改对应文件样式,在IE浏览和chrome浏览器上分别测试,两边都适配才可以。

以上是关于vue 项目兼容 IE 浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Vue搭建一个项目

node创建一个Vue项目

初识Vue.js

Vue.js安装

Vue.js进阶之路1

Vue.js进阶之路1