gpt4 book ai didi

babeljs - 如何使用 babel 转译 *表达式 *?

转载 作者:行者123 更新时间:2023-12-04 15:19:28 34 4
gpt4 key购买 nike

鉴于以下情况:

require('babel-core').transform('3').code

有没有办法让它返回 3 (一个表达式)而不是 3; (一份声明)?

我试过了:
  • 在网络和各种站点上搜索“babel expression”、“babel transpile expression”等。
  • 路过(3) ,但这也被转化为 3; .
  • 戳 babel 内部来弄清楚发生了什么,但我不太了解它是如何解决这个问题的。
  • 传递选项 minified: true ,它声称删除了尾随分号,但实际上似乎没有做任何事情。

  • 现在我正在使用 .replace(/;$/, '') ,这有效但似乎荒谬且容易出错。

    最佳答案

    @loganfsmyth 在 BabelJS.slack 上提供了缺失的链接-- parserOpts.allowReturnOutsideFunction .这是我想出的代码:

    const babel = require('babel-core');

    let script = 'return ((selector, callback) => Array.prototype.map.call(document.querySelectorAll(selector), callback))("#main table a.companylist",a => a.innerText)';

    let transform = babel.transform(script, {
    ast: false,
    code: true,
    comments: false,
    compact: true,
    minified: true,
    presets: [
    ['env', {
    targets: {
    browsers: ['> 1%', 'last 2 Firefox versions', 'last 2 Chrome versions', 'last 2 Edge versions', 'last 2 Safari versions', 'Firefox ESR', 'IE >= 8'],
    }
    }]
    ],
    parserOpts: {
    allowReturnOutsideFunction: true,
    }
    });

    let code = `return function(){${transform.code}}()`;

    输出:
    return function(){"use strict";return function(selector,callback){return Array.prototype.map.call(document.querySelectorAll(selector),callback)}("#main table a.companylist",function(a){return a.innerText});}()

    我的输入脚本看起来有点滑稽,因为我是如何生成它的,但是你可以看到它把这些箭头表达式转换成常规函数,整个事情仍然是一个表达式。

    注意您可能希望将最后一行修改为
    let code = `(function(){${transform.code}})()`;

    取决于您的需求。我需要我的是 return编。

    关于babeljs - 如何使用 babel 转译 *表达式 *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41493148/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com