最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 今日一学:Babel知多少?

    正文概述 掘金(JSTina)   2021-02-07   569

    临近放假,需求已经完成的差不多,利用闲暇之余,学习一下大佬的知识大纲,这个时候才发现自己跟大佬的距离不是一星半点,只能一点一点积累,毕竟从0到1,也是有一个过程的

    文章大纲

    1. 基础知识:
      • 原理
      • 工具
      • 核心
    2. 实现

    关于babel

    原理

    babel实现过程大概分为三部分

    • 解析:将代码转换成 AST
      • 词法分析:将代码(字符串)分割为 token 流,即语法单元成的数组
      • 语法分析:分析 token 流(上面生成的数组)并生成 AST
    • 转换:访问 AST 的节点进行变换操作生产新的 AST
      • Taro 就是利用 babel 完成的小程序语法转换
    • 生成:以新的 AST 为基础生成代码

    关于工具

    今日一学:Babel知多少?

    实现

    访问者是一个用于 AST 遍历的跨语言的模式。 简单的说它们就是一个对象,定义了用于在一个树状结构中获取具体节点的方法。 接下来让我们实现一个去除console的例子 opts获取我们的其他配置属性,打印path.node.expression.calle出来是这样的

    今日一学:Babel知多少?

    判断是否输入的语句包含console,不包括直接return 包括的话执行判断ignore属性,不要ignore的话直接remove

      module.exports = function ({ types: t }) {
        return {
          visitor: {
            ExpressionStatement(path, { opts }) {
              const { object, property } = path.node.expression.callee
              if (object.name !== 'console') return
              if (!(opts.ignore || []).find(ele => ele === property.name)) path.remove()
            }
          }
        }
      }
    

    在项目新建babel配置,具体如下,忽略ignore的内容

    {
    "plugins": [
         [
        "./babel-plugin-console-clear.js",
        {
          "ignore": [
            "time",
          ]
        },
    
      ],
    ]
    }
    

    命令配置

    下载babel命令,后面直接使用npx babel XXX就可以了

    例如:新建一个index.js页面

        console.log('张三')
        console.time('李四')
        console.error('隔壁老王')
    

    执行结果

    今日一学:Babel知多少?

    可以看到,已经过滤了log和error 如果不了解babel插件的,可以去参考the-super-tiny-compiler

    参考

    深入浅出 Babel 上篇:架构和原理 + 实战

    Babel手册


    起源地下载网 » 今日一学:Babel知多少?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元