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获取radio值实例
Oct 16 Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
angularjs客户端实现压缩图片文件并上传实例
Jul 06 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 Javascript
Javascript之图片的延迟加载的实例详解
Jul 24 Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 Javascript
Node.js文件编码格式的转换的方法
Apr 27 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
深入了解JavaScript 私有化
May 30 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 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/07/17 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
php实现登录页面的简单实例
2019/09/29 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
Python生成随机数的方法
2014/01/14 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
保险专业大专生求职信
2013/10/26 职场文书
开展创先争优活动总结
2014/08/28 职场文书
商标侵权律师函
2015/05/27 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python