飞道的博客

高级前端-Babel

448人阅读  评论(0)

Babel是什么?是个编译器,把高版本js代码变成低版本js代码

编译过程,把原代码通过词法分析变成一个个token,举例:a+b则拆成了a,+,b三个token

语法分析器把这些token根据对应的语法生成抽象语法🌲

语义分析器根据目标语法生成新的AST

最后生成目标代码,遍历新的AST,生成目标代码

Babel的工作步骤

为什么要用Babel?

js编译器,

  • 作用1: 把高版本js代码编译成js低版本代码
  • 作用2: polyfill,转译新的API,例如Set, Map, promise等
  • 作用3:源码修改

Babel怎么用?


  
  1. // babel.config.js
  2. const IS_PROD = [ 'production', 'prod'].includes(process.env.NODE_ENV)
  3. const plugins = []
  4. if (IS_PROD) {
  5. plugins.push( 'transform-remove-console')
  6. }
  7. module.exports = {
  8. presets: [
  9. '@vue/cli-plugin-babel/preset'
  10. ],
  11. plugins
  12. }
  13. // presets在plugin之后执行,plugin从前往后执行,presets内的顺序是从后往前

presets:babel的插件集合

preset.env: 根据我们配置的环境,babel自动决定用哪些插件

UseBuiltIns在Vue项目配置中默认使用usage

vue项目的package.json中的


   
  1. "browserslist": [
  2. "> 1%",
  3. "last 2 versions",
  4. "not ie <= 10"
  5. ]

这块代码,会被 @babel/preset-env用来决定使用哪些插件,对应上文中的target

 

常见面试题:

1. Babel的原理

2. 实现一个Babel插件


转载:https://blog.csdn.net/qq_14855277/article/details/116040035
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场