最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Vue+webpack+Element 兼容问题总结(小结)

来源:动视网 责编:小采 时间:2020-11-27 22:09:46
文档

Vue+webpack+Element 兼容问题总结(小结)

Vue+webpack+Element 兼容问题总结(小结):项目中用到了Vue.js和Elenment-UI Vue官方文档中给出明确范围:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。 而且Element-UI支持IE10+及大多数浏览器。由此
推荐度:
导读Vue+webpack+Element 兼容问题总结(小结):项目中用到了Vue.js和Elenment-UI Vue官方文档中给出明确范围:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。 而且Element-UI支持IE10+及大多数浏览器。由此


项目中用到了Vue.js和Elenment-UI

Vue官方文档中给出明确范围:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。

而且Element-UI支持IE10+及大多数浏览器。由此要用到Babel,主要用于将ECMAScript 2015+代码转换为旧浏览器或环境中向后兼容的JavaScript版本。在此之前,需要先搞清楚IE6~11是否支持es5:

  • IE6~IE8:不支持es5的所有语法;
  • IE9:支持除ECMAScript 5 Strict Mode外的es5语法;
  • IE10:支持es5的所有语法;
  • IEÏ11:支持es5所有语法及es6中const和Typed Arrays新语法
  • babel可以把同种语言的高版本规则翻译成低版本规则,其转译过程也分为三个阶段:parsing、transforming、generating。(1)解析步骤接收代码并输出 AST(抽象语法树),这其中又包含两个阶段词法分析和语法分析。词法分析阶段把字符串形式的代码转换为令牌(tokens)流。语法分析阶段会把一个令牌流转换成 AST 的形式,方便后续操作。(2) 利用我们配置好的plugins/presets把Parser生成的AST转变为新的AST。(3)代码生成步骤过程是深度优先遍历整个 AST,然后构建可以表示转换后代码的字符串。

    下面总结Babel的使用:

    1、由于项目使用了webpack打包工具,安装

    npm install --save-dev babel-loader babel-core

    2、在webpack.config.js中设置

    module: {
     rules: [
     {
     test: /\.js$/,
     loader: "babel-loader",
     include: [
     resolve("src"),
     resolve("test"),
     ],
     },Ï
     ]
    }
    

    可以根据webpack中Module的选项来配置相应内容

    3、在根目录下创建.babelrc文件来添加插件,文件添加成功后,可以开始配置内容

    首先,可以使用evn预设置,它支持ES2015+的转换

    npm install babel-preset-env --save-dev

    在.babelrc文件中

    {
    "presets":["evn"]
    
    }

    如果没有任何配置选项,babel-preset-env的行为与babel-preset-latest(或babel-preset-es2015、babel-preset-es2016和babel-preset-es2017一起)完全相同。

    当然,还有可选的选项可以配置,例如:

     [
     "env",
     {
     "modules": false,
     "targets": {
     "browsers": ["> 1%", "last 2 versions"]
     }
     }
     "stage-2"
     ],
    

    evn中设置项所代表的意思:

  • targets.node 支持到哪个版本的
  • node targets.browsers 支持到哪个版本的浏览器
  • loose 启动宽松模式,配合 webpack 的 loader 使用
  • modules 使用何种模块加载机制
  • debug 开启调试模式
  • include 包含哪些文件
  • exclude 排除哪些文件
  • useBuiltIns 是否对 babel-polyfill 进行分解,只引入所需的部分
  • targets.browsers是参考browserslist https://github.com/browserslist/browserslist设置浏览器条件。

    设置了完成后,还需要用babel-polyfill来实现浏览器不能支持的原生代码,在浏览器引入了相应的polyfill后,可以用新的内置对象比如 Promise 或者 WeakMap, 静态方法比如 Array.from 或者 Object.assign, 实例方法比如 Array.prototype.includes。但是因为babel-polyfill是在原型链上直接添加方法,会污染全局变量,项目打包以后体积增大。

    npm install --save babel-polyfill

    若在应用程序的入口顶点引入,则

    require("babel-polyfill");

    如果在应用程序的入口点使用ES6的导入语法,则应该在入口点的顶部导入polyfill,以确保首先加载polyfills

    import("babel-polyfill");

    如果通过webpack.config.js,在入口处添加:

    module.exports = { entry: ["babel-polyfill", "./app/js"] };

    为了不污染全局对象和内置的对象原型,可以用babel-plugin-transform-runtime,在.babelrc文件中

    "plugins": [
     [
     "transform-runtime",
     {
     "helpers": false,
     "polyfill": true,
     "moduleName": "babel-runtime"
     }
     ],
     ]
    

    插件应用于babel的转译过程,尤其是第二个阶段transforming,如果这个阶段不使用任何插件,那么babel会原样输出代码。
    如果同时添加了plugins和presets,注意:插件会在预设项之前运行;插件按第一个到最后一个正序执行;预设中设置从最后一个到第一个逆序执行,设置时注意执行顺序。

    文档

    Vue+webpack+Element 兼容问题总结(小结)

    Vue+webpack+Element 兼容问题总结(小结):项目中用到了Vue.js和Elenment-UI Vue官方文档中给出明确范围:Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。 而且Element-UI支持IE10+及大多数浏览器。由此
    推荐度:
    标签: VUE 支持 兼容
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top