问题标签 [traceur]
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 - 从ECMA6到ECMA5的traceur转换不起作用
为了了解 traceur 编译器如何将 ECMA6 转换为 ECMA5,我遵循了一个教程。
以下是代码。
但是h1
当我在 Firefox 或 chrome 中加载页面时,标签中的内容不会改变。问题是什么?
ecmascript-6 - `traceur-compiler` 如何将 ES-next 转换为 ES-present
我用谷歌搜索找到任何现有的 ES-6 到 ES-5 转译器。在那里我找到了 traceur-compiler。我只是通过嵌入页面来尝试它,发现它工作正常。
然后我很想知道traceur-compiler
引擎盖下的实际工作方式。然后我去了解库的源代码,这花了我很长时间来了解库的内部实现。
我相信如果我得到一些工具或某种机制来理解工作原理,traceur-compiler
这些工具或机制显示了 ES-6 脚本的某些示例输入的等效 ES-5 输出。对我来说理解工作会容易得多。
例如,假设以下是示例 ES-6 代码
我想知道上面代码的 ES-5 等价物。
任何想法是否有 traceur-compiler 的调试模式或其他有助于我的工具。
javascript - 在 DefaultRoute 中反应 0.13.x _classCallCheck() '不能将类作为函数调用'
我将 React 0.13.3 与 Webpack 1.9.5 和 traceur-loader 0.6.3 一起使用(之前尝试过 babel-loader),在 DefaultRoute 'Cannot call a class as a function' 中得到 _classCallCheck() 抛出的 TypeError。我没有看到我在哪里调用一个类作为一个函数。这是我的路线的样子:
以前有人遇到过这个问题吗?
javascript - 动态 ES6 模块范围
所有当前的模块加载器都喜欢AMD,CommonJS,SystemJS
使用变量定义将外部对象加载到当前模块范围内
喜欢:
或者:
如果您不知道需要从外部模块导入什么,或者只需要导入所有内容,这将成为问题,因为无法在运行时定义变量。
我想这是 ES6 翻译器不使用的主要原因
语法,它们不包含在 ES6 规范中。
因此,通过说动态模块范围,我的意思是模块变量可以在运行时定义/加载,这将允许将 ES6 语法扩展到以下内容:
在我看来,这是定义导入的更佳方式,而不是列出所有名称,例如:
现在我真正的问题:
为什么不使用
with
来实现这一点?
这是从 ES6 到 ES5 的简单示例翻译,可以解决问题:
文件:模块/module-1.js
至:
文件:模块/module-1.js
至:
with
即使在转译器/加载器中,真的有必要避免吗?
我会感谢您对这些人的想法,因为我正在考虑编写另一个 ES6to5 翻译器和模块加载器。:)
javascript - Traceur.js 与 Traceur-runtime.js
当我克隆和构建时,traceur
我安装了 2 个文件:traceur.js
和traceur-runtime.js
.
这里的traceur
文档(特别是)不会真正解释 和 之间的traceur.js
区别traceur-runtime.js
。
我知道traceur.js
包含 的内容是traceur-runtime.js
的traceur-runtime.js
一小部分traceur.js
。
我知道NodeJStraceur.js
可以使用,traceur.js
+bootstrap.js(just for initiation)
用于浏览器使用,traceur-runtime.js
Angular2使用。
我的问题:
- 有什么区别?
- 为什么Angular2只需要
traceur-runtime.js
? - 删除了哪些功能
traceur.js
?traceur-runtime.js(28k lines less)
- 两者都填充缺失的功能吗?
- 每个是做什么用的?
typescript - 为什么 Typescript 不需要 typescript-runtime,就像 traceur 需要 traceur-runtime 一样?
Typescript 和 Traceur 都将 ES6 编译为 ES5 对,那么 traceur-runtime 需要什么?其次,为什么没有打字稿运行时?
PS:我读到 traceur-runtime 填充了“缺失”功能,并且还提供了更多功能并提供了某些功能使用的辅助功能,但我不确定这真正意味着什么
yield - ES6 中“yield* undefined”和“yield undefined”的正确(规范)行为是什么?
在尝试了解如何使用 KoaJS 时,我开始意识到yield* undefined
babel 和 traceur 之间的行为不同。Babel 似乎忽略了该语句,而 traceur 抛出了异常。可以在此处查看示例:Babel - Traceur或以下:
我尝试在规范中查找它并且只得到更多的混乱,因为规范yield
看起来不像yield undefined
应该返回{done: false}
(无值属性),但这就是在两个转译器中发生的事情(也在上面的示例中)。至于yield*
,我没有找到为什么 traceur 应该抛出的答案。我还没有用 v8 (node/iojs) 尝试这个。
所以问题是,在这两种情况下正确/预期的行为是什么?
javascript - ECMAScript 6:WeakSet 有什么用?
WeakSet 应该通过弱引用来存储元素。也就是说,如果一个对象没有被其他任何东西引用,则应该从 WeakSet 中清除它。
我写了以下测试:
即使我的[1, 2, 3]
数组没有被任何东西引用,它也不会从 WeakSet 中删除。控制台打印:
这是为什么?
另外,我还有一个问题。直接将对象添加到 WeakSets 有什么意义,如下所示:
是 Traceur 的故障还是我遗漏了什么?
最后,如果我们甚至无法遍历它也无法获得当前大小,那么 WeakSet 的实际用途是什么?
ecmascript-6 - jspm 不会将代码从 ES6 转换为 ES5
运行jspm bundle-sfx some/input some/output.js
不会将我的代码从 ES6 转换为 ES5。这使得输出文件不可用。
输入文件的示例内容:
javascript - 如何在运行中将 await 与 traceur 编译器一起使用?
我需要帮助来配置我的浏览器以使用跟踪编译器。我已经尝试了几种方法来让一个简单的异步代码工作,但还没有成功。代码如下:
traceur 编译器链接显示它应该可以工作在这里。
出现以下错误:
["file:///.../traceur_inline_script_1.js:8:8: 需要分号", "file:///.../traceur_inline_script_1.js:9:9: 需要分号"]
tracerRuntimeOptions 看起来不错:
我尝试了几种变体,但还没有成功。有人可以帮我写一个工作代码吗?
提前致谢。