陈香吟,叶咲梦,电影想要网
项目中用到了vue.js和elenment-ui
vue官方文档中给出明确范围:vue 不支持 ie8 及以下版本,因为 vue 使用了 ie8 无法模拟的 ecmascript 5 特性。但它支持所有兼容 ecmascript 5 的浏览器。
而且element-ui支持ie10+及大多数浏览器。由此要用到babel,主要用于将ecmascript 2015+代码转换为旧浏览器或环境中向后兼容的javascript版本。在此之前,需要先搞清楚ie6~11是否支持es5:
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.browsers是参考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+elementui组件在table-cell单元格中绘制微型echarts图
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
vue 路由懒加载中给 Webpack Chunks 命名的方法
网友评论