vue-cli脚手架的.babelrc文件用法说明


Posted in Javascript onSeptember 11, 2020

虽然es6还没被浏览器全部支持,但是使用es6是大势所趋,所以babel应运而生将es6代码转换成浏览器能够识别的代码

什么是.babelrc文件呢? 熟悉linux的同学一定知道,rc结尾的文件通常代表运行时自动加载的文件,配置等等,类似bashrc,zshrc

这个文件是用来设置转码的规则和插件

vue-cli脚手架的.babelrc文件

{
 // 此项指明,转码的规则
 "presets": [
 // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并且设置amd,commonjs这样的模块化文件,不进行转码
 ["env", {
  "modules": false ,
  "targets": {//需要支持的环境
  "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
  }
 }],
 // 下面这个是不同阶段出现的es语法,包含不同的转码插件
 // stage-x和es2015等有些类似,但是它是按照JavaScript的提案阶段区分的,一共有5个阶段。
 //而数字越小,阶段越靠后,存在依赖关系。也就是说stage-0是包括stage-1的,以此类推。
 "stage-2"
 ],
 // 下面这个选项是引用插件来处理代码的转换,transform-runtime用来处理全局函数和优化babel编译,强烈推荐使用transform-runtime
 "plugins": ["transform-runtime"],
 // 下面指的是在生成的文件中,不产生注释
 "comments": false,
 // 下面这段是在特定的环境中所执行的转码规则,当环境变量是下面的test就会覆盖上面的设置
 "env": {
 // test 是提前设置的环境变量,如果没有设置BABEL_ENV则使用NODE_ENV,如果都没有设置默认就是development
 "test": {
  "presets": ["env", "stage-2"],
  // instanbul是一个用来测试转码后代码的工具
  "plugins": ["istanbul"]
 }
 }
}

browserslist: Library to share supported browsers list between different front-end tools. It is used in:

Autoprefixer

babel-preset-env

eslint-plugin-compat

stylelint-no-unsupported-browser-features

postcss-normalize

补充知识:vue cli3 element-ui懒加载 按需加载ui组件

前言

vue cli3.x + UI框架 开发时,经常实际只用到的 UI框架 提供的几个组件,而每次我们是全部引入,这会照成程序需要消耗更多的资源,尤其是在移动端(例如使用 mint ui),在性能上会有更大的影响,照成不好的用户体验。

接下来记录以 vue cli3.x +element ui 为例实现按需加载组件。

未引入 element 插件时

vue-cli脚手架的.babelrc文件用法说明

引入 element ui(npm i element-ui -S)

如下图,可见 app.js 增加了 5M 的数据。

// main.js
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)

vue-cli脚手架的.babelrc文件用法说明

只引入 element 的部分组件

如下图,可见虽然我们只引用了两个组件,但是 app.js 的大小几乎不变,这样没有实现按需加载的效果。

import { Button, Select } from 'element-ui'
// 此时的样式必须要引入,否则组件将没有样式
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(Button)
Vue.use(Select)

vue-cli脚手架的.babelrc文件用法说明

实现按需加载

1.安装插件 npm i babel-plugin-component -D

2.配置 babel.config.js

module.exports = {
 presets: [
  '@vue/app',
  ['@babel/preset-env', // 添加 babel-preset-env 配置
   {
    'modules': false
   }
  ]
 ],
 plugins: [
  [
   'component',
   {
    'libraryName': 'element-ui', // 按需引入的组件库
    'styleLibraryName': 'theme-chalk' // 按需引入的样式
   }
  ]
 ]
}

把 main.js 也修改下:

import { Button, Select } from 'element-ui'
// 此时的样式不需要引入了,样式自动按需来引入
// import 'element-ui/lib/theme-chalk/index.css'
Vue.use(Button)
Vue.use(Select)

Vue.config.productionTip = false

new Vue({
 router,
 render: h => h(App)
}).$mount('#app')

配置好后重新 npm run serve 下,此时的 app.js 相对于没有引入插件时只增加了几百 k 的大小,这样就实现了按需加载。

vue-cli脚手架的.babelrc文件用法说明

以上这篇vue-cli脚手架的.babelrc文件用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
浅析jquery的js图表组件highcharts
Mar 06 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 #Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 #Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 #Javascript
vue界面发送表情的实现代码
Sep 11 #Javascript
在vue中配置不同的代理同时访问不同的后台操作
Sep 11 #Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 #Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 #Javascript
You might like
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP echo()函数讲解
2019/02/15 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
Python 爬虫性能相关总结
2020/08/03 Python
谈谈python垃圾回收机制
2020/09/27 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS