@babel/traverse

官网: https://babeljs.io/docs/en/babel-traverse

github:https://github.com/babel/babel/blob/master/packages/babel-traverse/test/traverse.js

了解一个东西最直接的方法就是看官网了解怎么用,看github源码Test模块代码的使用和测试。

@babel/traverse 可以用来遍历更新@babel/parser生成的AST

  • 对语法树中特定的节点进行操作(特殊节点的函数)
  • 进入节点(enter)
  • 退出节点  (exit)
traverse(ast, {
CallExpression(p) {
// 对语法树中特定的节点进行操作 参考@babel/types (特定节点类型)
// CallExpression 特定节点
},
FunctionDeclaration: function(path) {
// 对语法树中特定的节点进行操作 参考@babel/types (特定节点类型)
// FunctionDeclaration 特定节点
}
// ..... enter(path) {
// 进入节点
if (path.node.type === "ThisExpression") {
// 对所有的操作
};
}
exit(path) {
// 退出节点
console.log(` exit ${path.type}(${path.key})`)
}
})

@babel/traverse 使用方法小记的更多相关文章

  1. 在IIS7.5中ASP.NET调用cmd程序拒绝访问决绝方法小记

    前言 昨天利用Github的Webhook实现自动部署站点,其中要调用命令行(cmd.exe)程序执行shell脚本. 在本地测试没有任何问题,部署到服务器之后,发现错误信息:访问拒绝. 问题 没有权 ...

  2. java subList方法小记

    在java中,我们有时候需要对一个list进行拆分处理,这个时候就需要用到list的切割方法subList. 我们知道list里面的序号起始是从0开始的,所以一个含有23条数据的list,它的序号是从 ...

  3. UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout

    1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  4. JavaScript中字符串转Json方法小记

    例如: JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }'; JS ...

  5. Spring Security Oauth2 permitAll()方法小记

    黄鼠狼在养鸡场山崖边立了块碑,写道:"不勇敢地飞下去,你怎么知道自己原来是一只搏击长空的鹰?!" 从此以后 黄鼠狼每天都能在崖底吃到那些摔死的鸡! 前言 上周五有网友问道,在使用s ...

  6. .netcore 堆栈调用方法小记

    背景 上午临近午饭时,公司同事反馈验证码被攻击灌水.我们匆忙查询验证码明细,对已频繁出现的IP插入黑名单,但IP仍然隔断时间频繁变动,不得已之下只能先封禁对应公司id的验证码发送功能.年初时候,专门对 ...

  7. String中concat方法小记

    介绍String中的concat方法使用: 日常开发中,经常对字符串进行处理,之前碰到多个字符串拼接,要么使用stringBuilder,要么使用StringBuffer,再或者是直接多个String ...

  8. jQuery.getJSON()方法小记

    今天看了下jQquery中的getJSON()方法,做点小结: 原型: jQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR ...

  9. hashcode和equals方法小记

    在正确的逻辑下,两个对象的hashcode一样,不代表两个对象equals:两个对象equals,则hashcode一定一样 在HashSet集合中,是不允许有重复的元素的,那么,set怎么才知道元素 ...

随机推荐

  1. mysql密码忘记更改

    忘记mysql的密码是一件不好的事,通常我们会把密码记住,或者是存在文档中,避免忘记,如果忘记了密码可以参照下方方法来更改,这个操作需要重启mysql. 首先我们在my.cnf文件中的[mysqld] ...

  2. 解决Mysql无法导入存在null数据的问题

    其实很简单,在mysql的控制台输入 SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 然后重 ...

  3. Window Position

    IE, Safari, Opera, and Chrome all provide screenLeft and screenTop properties that indicate the wind ...

  4. oslo_db.sqlalchemy.engines连库

    _ mysql -uroot -pc1234 oslo_db.sqlalchemy.engines root@devstack2019:/etc/keystone# more keystone.con ...

  5. ceph添加/删除OSD

    一.添加osd: 当前ceph集群中有如下osd,现在准备新添加osd: (1)选择一个osd节点,添加好新的硬盘: (2)显示osd节点中的硬盘,并重置新的osd硬盘: 列出节点磁盘:ceph-de ...

  6. python数据存储--JSON

    HTML正文存储为两种格式:JSON和CSV. 存储为JSON: 首先利用Requests访问http://seputu.com获取HTML文档: #!coding:utf-8 import requ ...

  7. RDD实例

    实例一: teacher.log http://bigdata.baidu.cn/zhangsan http://bigdata.baidu.cn/zhangsan http://bigdata.ba ...

  8. 对js原型对象、实例化对象及prototype属性的一些见解

    什么是原型对象? 请看下面的代码,我们以各种姿势,创建了几个方法! function fn1() { } var fn2 = function () { } var fn3 = new Functio ...

  9. Android开发 发布相关知识

    1 三种BuildSystem简介 注意:ADT不要用了,在2017版本已经没有了.而且这就是一个巨坑,以前打包cocos的时候,学习的时候用这个,ADT是eclipse中的一个集成的东东,已经绝版, ...

  10. jmeter-JDBC 连接池设置