热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

babel的学习

babel主要用于将ECMAScript2015代码转换为当前和较老的浏览器,从而在现有的环境做兼容的javascript版本。配置文件.babelrc(放在项目的根目录)
  1. babel主要用于将ECMAScript2015+代码转换为当前和较老的浏览器,从而在现有的环境做兼容的Javascript版本。
  2. 配置文件.babelrc(放在项目的根目录):
在项目中有个.babelrc文件或者可以在package.json文件中配置"babel":{};
配置的参数参考网址: www.babeljs.cn/docs/core-p…

主要配置预设(presets)和插件(plugins)。

  1. presets:需要加载和使用的presets(一组插件)列表(设定转码规则); || presets(env/stage-0/stage-1/stage-2/stage-3/flow/react/minify/typescript...):
  • env 可以配置兼容(Example environments: chrome, opera, edge, firefox, safari, ie, ios, android, node, electron.)

npm i -D @babel/preset-env

{ "presets": [ [ "@babel/preset-env", { "targets": { "chrome": "58", "ie": "11" } } ] ] };
/* browserslist 支持的写法有 :"last 1 version", "> 1%", "maintained node versions", "not dead";比如: "targets": "> 0.25%, not dead" */

  • stage-0 ~ stage-3 四个阶段(stage-0包含stage1-2-3 ,stage1包含stage2-3) "presets": ["@babel/preset-stage-1"]
  • flow (一个Javascript静态类型检查器)

npm i -D @babel/preset-flow

{ "presets":['@babel/preset-flow'] }

  • react
    npm i -D @babel/preset-react
    { "presets": ["@babel/preset-react"] }

带参数
{ "presets": [ ["@babel/preset-react", { "pragma": "dom", // default pragma is React.createElement "pragmaFrag": "DomFrag", // default is React.Fragment "throwIfNamespace": false, // defaults to true "development": process.env.BABEL_ENV === "development", }] ] }

  • typescript
    npm install --save-dev @babel/preset-typescript
    { "presets": ["@babel/preset-typescript"] }

  1. 相关依赖:
  1. Polyfill(需要在源码之前运行); Babel默认只转换新的Javascript语法,而不转换新的API(比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。) npm i -S babel-ployfill
  1. plugins插件
  • 1.ES3
  • 2.ES5
  • 3.ES2015
  • 4.ES2016
  • 5.ES2017
  • 6.ES2018
  • 7.Modules
  1. modules-amd
  2. modules-commonjs
  3. modules-systemjs
  4. modules-umd
  • 8.React
  • 9.other
  1. flow-strip-types;
  2. runtime
    npm i -D @babel/plugin-transform-runtime
    或者npm i -S @babel/runtime { "plugins":["@babel/plugin-transform-runtime"] }
    携带options
    { "plugins":[ ["@babel/plugin-transform-runtime",{ "corejs":false, "helpers":true, "regenerator": true, "useESModules": false }] ] }
  1. Plugin/Preset 排序
  • 1.Plugin会运行在Preset之前;
  • 2.Plugin会从第一个开始顺序执行;
  • 3.Preset从最后一个开始执行与Plugin相反;

参考文献:

  1. www.ruanyifeng.com/blog/2016/0…
  2. babeljs.io/docs/en/



推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 如何高效利用Hackbar插件提升网页调试效率
    通过合理利用Hackbar插件,可以显著提升网页调试的效率。本文介绍了如何获取并使用未包含收费功能的2.1.3版本,以确保在不升级到最新2.2.2版本的情况下,依然能够高效进行网页调试。此外,文章还提供了详细的使用技巧和常见问题解决方案,帮助开发者更好地掌握这一工具。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
author-avatar
卖火柴的冰枫_939
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有