问题标签 [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.

0 投票
0 回答
734 浏览

javascript - 使用 Sweet.js 和 Babel

所以我一直试图让 Sweet.js 在我的 ES6 项目上工作,使用 Webpack 来编译它。我已经能够让每个人单独工作,但无论我如何尝试将它们放在一起,它都会产生某种错误......我认为这主要与源地图有关,因为错误通常看起来像像这样:

这是失败的代码:

webpack.config.js:

宏.sjs:

index.js:

反转加载器不起作用,因为 Babel 不知道如何处理宏。移除 Babel 加载器后它可以编译,但随后(发生了更复杂的事情)Webpack 失败了,因为它不知道如何处理 ES6 的东西。

到目前为止,我还没有发现任何关于同时使用 babel 和 sweetjs 加载器的信息......甚至可能吗?

编辑:所以我发现它是 sweetjs-loader 的一个错误:https ://github.com/jlong​​ster/sweetjs-loader/issues/4

将 true 设置为 false 可以解决问题,并创建另一个问题。Sweet.js 似乎将一些垃圾数据放入文件底部,这与 Babel 和 Webpack 的模块加载相混淆。每次构建都会多次出现此错误:

0 投票
1 回答
85 浏览

macros - Sweet.js:可以将 JS 对象扩展为 JS 对象吗?

是否可以使用 Sweet.Js 进行扩展

例如?

我在这里的幼稚尝试不起作用,我在文档中没有看到示例。

谢谢。

0 投票
0 回答
63 浏览

javascript - 在 sweet.js 中连接一个语法对象

我想在 sweet.js 中创建一个宏,允许用户使用类似于张量演算中使用的索引符号的东西在 javascript 中编写 for 循环。如果我为它提供类似的东西:

sweet.js 会将其扩展为:

我有一个不使用liandlj变量的工作副本,即它检查是否i<bar.lengthj<baz.length. 这对大型阵列有性能影响,我想摆脱它。

问题是我需要创建liandlj变量。我想获取iandj标记并将“l”连接到它们以制作新标记。我找不到在 sweet.js 中连接标记的方法,例如,在 cpp 预处理器中使用##运算符。我确实理解 sweet.js 试图与 cpp 预处理器不同的是卫生,所以我不确定这个遗漏是否是有意的。我错过了什么吗?这是 sweet.js 施加的限制吗?如果是,是否有解决方法?

我正在使用最新版本的 sweet.js,2.0 版。这是他们的在线编辑器使用的相同版本

0 投票
0 回答
34 浏览

javascript - 内部宏调用之间的局部变量

我正在尝试创建一对甜蜜的 js 宏,其中内部和外部宏共享一个局部变量:

我想要的是“上下文”宏调用能够分配一个可访问/可分配给内部 cdo 宏调用的局部变量。

这是使用甜蜜的 js 1.0,我已经研究过使用 name() 来访问调用上下文,但是我似乎无法让它工作。这样做的正确方法是什么?

0 投票
1 回答
70 浏览

javascript - sweet.js 无法返回#`else`

main.js

中文宏.js

main.js 应该编译为,else {}但我收到此错误消息:

任何帮助将不胜感激。

0 投票
1 回答
169 浏览

sweet.js - 如何在 sweet.js 中使用宏定义?

我是 sweet.js 的新手。我可以在官方教程中运行示例,但不能在本教程中运行,因为它使用宏定义:

我不确定这段代码是否应该由sjs其他工具处理。sjs给我:

我究竟做错了什么?

节点 v6.9.4 上的 sweet.js v2.2.1

0 投票
1 回答
147 浏览

javascript - 使用 Clojure 向 JavaScript 添加语法

我想像 Sweet.js 一样向我的 JavaScript 文件添加新语法,但使用 Clojure/ClojureScript 进行转换。

这是我想做的事情:

如果我错了,请纠正我,但我认为最好的方法是:

  1. 将 JS 文件解析为 AST
  2. 做转换
  3. 将生成的 AST 打印为 JavaScript

关于如何执行第 1 部分和第 3 部分的任何想法?我在这里有正确的想法吗?

0 投票
1 回答
112 浏览

javascript - 扩展 Javascript 语法以添加打字

我想扩展 javascript 以添加自定义类型检查。

例如

这将编译为:

这样做最直接的方法是什么?

到目前为止,我已经看过:

  • sweet.js(在线文档看起来已经过时了,因为我认为它正在经历某种内部重写)
  • esprima 和 escodegen(不知道从哪里开始)
  • 使用正则表达式手动解析
0 投票
1 回答
38 浏览

javascript - 将任意字符串插入到 sweet.js 输出中

如何将任意字符串插入到 sweet.js 生成的输出中?

这对于以编程方式执行字符串根据各种条件不同的事情非常有用。

例如,在下面代码的第 25 行,我想插入一个字符串作为结果。

sweet.js 代码:

示例输入:

示例输出:

0 投票
1 回答
37 浏览

javascript - 防止 sweet.js 向变量添加数字

Sweet.js 总是在输出的末尾添加数字。在我生成的大多数 javascript 中,这不是必需的。有没有办法配置 sweet.js 不在参数末尾添加数字?