作家
登录

JavaScript语法树与代码转化实践

作者: 来源: 2017-07-27 09:55:49 阅读 我要评论

  •   const { types: t } = babel; 
  •  
  •   return { 
  •     name"ast-transform", // not required 
  •     visitor: { 
  •       Identifier(path) { 
  •         path.node.name = `_${path.node.name}`; 
  •       }, 
  •       ArrowFunctionExpression(path: NodePath<BabelNodeArrowFunctionExpression>, state: Object) { 
  •         // In some conversion cases, it may have already been converted to a function while this callback 
  •         // was queued up. 
  •         if (!path.isArrowFunctionExpression()) return
  •  
  •         path.arrowFunctionToExpression({ 
  •           // While other utils may be fine inserting other arrows to make more transforms possible, 
  •           // the arrow transform itself absolutely cannot insert new arrow functions. 
  •           allowInsertArrow: false
  •           specCompliant: !!state.opts.spec 
  •         }); 
  •       } 
  •     } 
  •   }; 
  •  
  • // babel.js 应用插件 
  • var babel = require('babel-core'); 
  • var plugin= require('./plugin'); 
  •  
  • var out = babel.transform(src, { 
  •   plugins: [plugin] 
  • });  
  • 常用转化操作

    遍历

    • 获取子节点路径
    1. // the BinaryExpression AST node has properties: `left`, `right`, `operator` 
    2. BinaryExpression(path) { 
    3.   path.node.left
    4.   path.node.right
    5.   path.node.operator; 
    6.  

    我们也可以应用某个路径对象的 get 办法,经由过程传入子路径的字符串表示来拜访某个属性:

    1. BinaryExpression(path) { 
    2.   path.get('left'); 
    3. Program(path) { 

        推荐阅读

        海南常见罪名量刑细则实施 人工智能助力司法改革

      2009年6月,我省开端量刑规范化改革,是全国第二批试点省份。据介绍,海南最新版的量刑细则涵盖了23个常见着绫躯和罚金刑、缓刑实用,所涉的刑事犯法案件占到我省刑事案件的95%以上。此次>>>详细阅读


      本文标题:JavaScript语法树与代码转化实践

      地址:http://www.17bianji.com/lsqh/36429.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)