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 相关文章推荐
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
requireJS使用指南
Apr 27 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
解决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汉字转换拼音的类
2013/06/18 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
php实现telnet功能示例
2014/04/08 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
税务干部鉴定材料
2014/02/11 职场文书
学生个人评语大全
2015/01/04 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python