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 相关文章推荐
js解决select下拉选不中问题
Oct 14 Javascript
javascript面向对象之对象的深入理解
Jan 13 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
Nov 17 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
Dec 04 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
elementui实现预览图片组件二次封装
Dec 29 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
Syphon 秘笈
2021/03/03 冲泡冲煮
学习js所必须要知道的一些
2007/03/07 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
总结Python中逻辑运算符的使用
2015/05/13 Python
python字典的常用操作方法小结
2016/05/16 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python连接PostgreSQL过程解析
2020/02/09 Python
django model object序列化实例
2020/03/13 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
个人求职信范文分享
2014/01/31 职场文书