问题标签 [sweet.js]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何使用 sweet.js 编译多个文件?
如何使用 sweet.js 二进制文件编译多个文件?
所以这样的事情:sjs -o out *.js
......
...在目录中生成单独的编译文件out
:
这适用于包含require()
多个内部文件的 npm 模块。
编辑:我有动力在一次调用中执行此操作,sjs
因为我正在导入一个-m lambda-chop/macros
速度很慢的 sweetjs 模块。sjs -m lambda-chop/macros
为每个源文件运行单独的命令会导致不必要的缓慢构建过程。
javascript - 在 sweet.js 案例中使用全局变量
我正在尝试创建一个宏,每次调用时都会将递增值扩展到输出中。到目前为止,我已经得到了这个,但它每次都将值重新初始化为 0:
产量:
当我想要的是:
如何定义n
为全局变量,以便我可以在宏之外递增和保留其值?
更新:
我可以通过将分配更改n
为 eval 来使其工作,但这真的感觉像是在作弊:
sweet.js - 将参数的文字值获取到 sweet.js 宏
我已经定义了一个宏,我正在尝试测试作为参数传递的值之一以确定如何发出代码。但是,当我尝试使用该值时,我不断收到错误。这是一个说明问题的简单测试:
我得到的错误是:
我通过调用 makeIdent、syntaxUnwrap 等进行了各种尝试,但没有任何运气。如何测试通过的值?
更新:在玩了一些东西之后,我发现我可以使用这个构造来获取值:
但后来我发现这个页面建议在某一时刻token.value.raw
使用而不是token.value
,这进一步表明,由于我没有通过官方记录的 API,我可能正在访问可能会更改的未记录的内部结构。
javascript - 访问 sweet.js 中的嵌套范围
我正在尝试定义一些宏,这些宏允许为真正异步的函数声明一系列函数调用。宏将这些调用序列转换为延续;即一个函数,它接受两个参数:函数中要继续的位置和函数的本地状态。
所以,这个想法是:
=>
为此,我定义了两个宏,function
并且f
. 然而,在一般情况下,将有一个完整的函数列表,除此之外f
可以任意使用并与函数定义中的其他(非宏)代码混合。 这个问题似乎是在问一个更狭窄的问题,我不确定接受的答案(命名模式)是否有效(我不知道如何使它工作),因为需要允许从多种选择中选择任意数量的顺序子宏。
问题是,这需要对嵌套的匿名函数起作用,所以我需要一些方法来在与当前函数相关的 case 语句中分配这些顺序语句编号。我该怎么做呢?
我这里有一个例子。
对于第一种情况,一切正常:每个 case 语句在回调函数中传递下一个 case 语句的编号。但是对于第二种情况,这会失败,例如,第一个 case 语句试图访问嵌套函数中第一个 case 语句的编号。这是因为我们使用全局变量来跟踪案例编号,但我不知道如何相对于当前范围来跟踪这个变量。使用 console.log 我跟踪了评估,发现各个宏没有以嵌套方式评估。如何在一个宏中建立一个值,然后从作为该宏的词法子级的任何宏访问该值?
sweet.js - Sweet.js 为模板中的匹配添加前缀
鉴于此宏
我试图得到这个输出:
但我得到的是
在绑定值之间添加任何非字母数字字符some
并$attr
正确输出绑定值。
javascript - 无法在 sweetjs 中创建类似宏的 haskell
我想创建一个这样的宏
应该像这样扩展:
SweetJS 代码:
仅当我更改 $guards:(h) 和 $lastGuard:(h) 而不是 $guards:(|) 和 $lastGuard:(|) 以及类似的实际代码时才有效
原因是我无法阻止 sweetjs 解析相邻的“|”(管道)分隔符。谁能建议我该怎么做?
javascript - Sweet.js 不输出任何东西
我有一个非常简单的 sweet.js 文件,我正在尝试编译:
...使用此命令:
但是没有任何输出;out.js 文件已创建,但它不包含任何内容。起初我认为这可能是 sweet.js 文件本身的问题,但是当我使用 sweet.js 在线编辑器对其进行测试时,它可以正常工作。
我没有正确使用“sjs”命令吗?还有什么我忽略的吗?
javascript - sweet.js 替换这个。和 @
我想this.
用@
咖啡脚本中的符号替换。我写了宏:
但是得到了
如何解决这个问题?
sweet.js - sweet.js:转换重复标记的出现
我想定义一个可以转换的甜蜜宏
进入
我目前的尝试是
然而,这给了我
我怀疑我并不真正了解它是如何...
工作的,并且可能需要以某种方式循环每个值$prop
并为每个对象构建语法对象并以某种方式将它们连接起来,但我不知道如何做到这一点。
webpack - babel-plugin-macros 与 Sweet.js 的用例是什么?
我对 JavaScript 中的宏很好奇,对babel-plugin-macros和Sweet.js 之间的比较有点困惑。他们都解决同一个问题吗?它们都适合同一个工具链吗?
特别是,我希望将这些工具中的一个与 ES2015 代码一起使用,这些代码将使用 Webpack 和 Babel 转换为 ES5,并且不确定这些工具中的任何一个如何与转换交互。