问题标签 [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 和 Babel
所以我一直试图让 Sweet.js 在我的 ES6 项目上工作,使用 Webpack 来编译它。我已经能够让每个人单独工作,但无论我如何尝试将它们放在一起,它都会产生某种错误......我认为这主要与源地图有关,因为错误通常看起来像像这样:
这是失败的代码:
webpack.config.js:
宏.sjs:
index.js:
反转加载器不起作用,因为 Babel 不知道如何处理宏。移除 Babel 加载器后它可以编译,但随后(发生了更复杂的事情)Webpack 失败了,因为它不知道如何处理 ES6 的东西。
到目前为止,我还没有发现任何关于同时使用 babel 和 sweetjs 加载器的信息......甚至可能吗?
编辑:所以我发现它是 sweetjs-loader 的一个错误:https ://github.com/jlongster/sweetjs-loader/issues/4
将 true 设置为 false 可以解决问题,并创建另一个问题。Sweet.js 似乎将一些垃圾数据放入文件底部,这与 Babel 和 Webpack 的模块加载相混淆。每次构建都会多次出现此错误:
javascript - 在 sweet.js 中连接一个语法对象
我想在 sweet.js 中创建一个宏,允许用户使用类似于张量演算中使用的索引符号的东西在 javascript 中编写 for 循环。如果我为它提供类似的东西:
sweet.js 会将其扩展为:
我有一个不使用li
andlj
变量的工作副本,即它检查是否i<bar.length
和j<baz.length
. 这对大型阵列有性能影响,我想摆脱它。
问题是我需要创建li
andlj
变量。我想获取i
andj
标记并将“l”连接到它们以制作新标记。我找不到在 sweet.js 中连接标记的方法,例如,在 cpp 预处理器中使用##
运算符。我确实理解 sweet.js 试图与 cpp 预处理器不同的是卫生,所以我不确定这个遗漏是否是有意的。我错过了什么吗?这是 sweet.js 施加的限制吗?如果是,是否有解决方法?
我正在使用最新版本的 sweet.js,2.0 版。这是他们的在线编辑器使用的相同版本
javascript - 内部宏调用之间的局部变量
我正在尝试创建一对甜蜜的 js 宏,其中内部和外部宏共享一个局部变量:
我想要的是“上下文”宏调用能够分配一个可访问/可分配给内部 cdo 宏调用的局部变量。
这是使用甜蜜的 js 1.0,我已经研究过使用 name() 来访问调用上下文,但是我似乎无法让它工作。这样做的正确方法是什么?
javascript - sweet.js 无法返回#`else`
main.js
中文宏.js
main.js 应该编译为,else {}
但我收到此错误消息:
任何帮助将不胜感激。
javascript - 使用 Clojure 向 JavaScript 添加语法
我想像 Sweet.js 一样向我的 JavaScript 文件添加新语法,但使用 Clojure/ClojureScript 进行转换。
这是我想做的事情:
如果我错了,请纠正我,但我认为最好的方法是:
- 将 JS 文件解析为 AST
- 做转换
- 将生成的 AST 打印为 JavaScript
关于如何执行第 1 部分和第 3 部分的任何想法?我在这里有正确的想法吗?
javascript - 扩展 Javascript 语法以添加打字
我想扩展 javascript 以添加自定义类型检查。
例如
这将编译为:
这样做最直接的方法是什么?
到目前为止,我已经看过:
- sweet.js(在线文档看起来已经过时了,因为我认为它正在经历某种内部重写)
- esprima 和 escodegen(不知道从哪里开始)
- 使用正则表达式手动解析
javascript - 将任意字符串插入到 sweet.js 输出中
如何将任意字符串插入到 sweet.js 生成的输出中?
这对于以编程方式执行字符串根据各种条件不同的事情非常有用。
例如,在下面代码的第 25 行,我想插入一个字符串作为结果。
sweet.js 代码:
示例输入:
示例输出:
javascript - 防止 sweet.js 向变量添加数字
Sweet.js 总是在输出的末尾添加数字。在我生成的大多数 javascript 中,这不是必需的。有没有办法配置 sweet.js 不在参数末尾添加数字?