是否已经有一种首选方法如何在maven项目中使用traceur或Babel(名为6to5)将ECMAScript6代码转换为ECMAScript5?我已经搜索过网络而没有任何成功.
我正在研究的项目将IE8作为一项硬性要求.我们希望使用Traceur开始使用ES6的一些改进语法,但我知道它会产生ES5,而IE8不支持它.鉴于我可以修补IE8与es5shim,这Traceur支持ES6功能使用是安全的?
更具体地说,我想知道哪些特征映射总是直接映射到完全兼容的代码(可能是糖的大部分),由于垫片的限制而导致行为不匹配,并且完全不可用
我正在使用ES6模块转换为带有traceur的 ES5 .
通过grunt + grunt-traceur进行脱毛
Traceur允许您选择要使用的模块处理程序:它自己的,AMD,commonJS或内联.
我尝试了大部分,但似乎没有一个工作.为什么?
TestClass.js
export default class TestClass {
constructor() {
alert('test');
}
}
Run Code Online (Sandbox Code Playgroud)
Main.js
import TestClass from './TestClass';
var test = new TestClass();
Run Code Online (Sandbox Code Playgroud)
Gruntfile.js(摘录)
traceur: {
options: {
experimental: true,
blockBinding: true,
modules: 'amd'
}
}
Run Code Online (Sandbox Code Playgroud)
index.html(提取)
<script src="js/vendor/traceur-runtime.js"></script>
<script src="js/vendor/require.js"></script>
<script defer async src="js/compiled/Main.js"></script>
Run Code Online (Sandbox Code Playgroud)
给出错误
未捕获的错误:匿名的define()模块不匹配:函数($ __ 0){
似乎grunt插件存在问题,但即使使用旧版本似乎也没有帮助.
代码改编自一篇文章.
注意:此帖已在React不支持ES6(v12)时发布.
我有一个ES6课程:
class BaseClass {
getInitialState(){
return {message: 'Hello!'};
}
render() {
return (
<div>
<div>{this.state.message}</div>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用这个表达式在ES6中导出(来源:反应ES6 browserify)
export default React.createClass(BaseClass.prototype)
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我想使用ES6继承来扩展我的BaseClass类:
class ExtendedClass extends BaseClass{
getInitialState(){
return {message: "Hello! I'm an extension"};
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我React.createClass在ExtendedClass课堂上打电话时,我得到以下异常:
Invariant Violation: ReactCompositeComponentInterface: You are attempting to define `constructor` on your component more than once. This conflict may be due to a mixin.
Run Code Online (Sandbox Code Playgroud)
我知道React 0.13应该更符合ES6,但有没有办法解决这个问题?
编辑:
我正在使用Traceur来编译我的ES6类.输出ExtendedClass看起来像:
function ExtendedClass() …Run Code Online (Sandbox Code Playgroud) 我有一个用ES6编写的小型静态项目.每次重新加载时都会动态编译Traceur(用于开发目的):
<script src="lib/traceur/traceur.js" type="text/javascript"></script>
<script src="lib/traceur/bootstrap.js" type="text/javascript"></script>
<script>
traceur.options.experimental = true;
traceur.options.sourceMaps = true;
</script>
<!-- my ES6 code goes here -->
<script type="module" src="main.js"></script>
Run Code Online (Sandbox Code Playgroud)
内容bootstrap.js很简单:
new traceur.WebPageTranscoder(document.location.href).run();
Run Code Online (Sandbox Code Playgroud)
现在,我无法使源地图起作用(Chrome 34).该手册建议该文件应该离线编译并提供适当的标题,但这正是我试图避免的.
有没有办法让源映射完全从客户端工作?
我已经使用npm安装了traceur并且设法编译了一个简单的ES6脚本.我的问题是生成的代码特定于node.js
我知道traceur可以从浏览器运行,但我想进一步优化.有没有办法从命令行(节点)运行traceur,方式与lesscss的工作方式类似?
我现在正在使用 Traceur 来编写一些未来的 javascript,这是我在某个课程中拥有的函数
create() {
this.game.physics.startSystem(Phaser.Physics.ARCADE);
this.segmentcache = new SegmentCache(this.game);
this.segments = new Segments(this.game);
this.segments.cache = this.segmentcache;
this.segments.seek(3);
this.guy = new Guy(this.game, 140 + 8, 80);
this.guy.anchor.set(0.5, 1.0);
this.game.add.existing(this.guy);
this.game.camera.x = 100;
this.ticks = 0;
this.cross = 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,与任何传统的 JavaScript 代码一样,它到处都被 this 关键字覆盖。来自 Java 等,当我引用类内部的字段时,当我不需要指定这个字段时,对我来说这是非常不自然的。
有什么方法可以让 Traceur 像 Java 一样解释类吗?(即在未指定时自动插入此内容等)
我使用 Traceur / babel 将 ES6 转换为 ES5,但是是否可以使用 gulp 插件将 jQuery 转换为纯 JavaScript?感谢您的回答:)
出于某种原因,当我做var sphere = new Core(); 在游戏中,我看到Core未定义,即使我导入它:
Game.js
import Core from 'gameUnits/Core'
export class Game {
constructor() {
Run Code Online (Sandbox Code Playgroud)
Core.js:
export class Core {
constructor(scene) {
}
}
Run Code Online (Sandbox Code Playgroud) 运行jspm bundle-sfx some/input some/output.js不会将我的代码从ES6转换为ES5.这使输出文件不可用.
输入文件的示例内容:
[1,2,3,4].map((i)=>i*i);
Run Code Online (Sandbox Code Playgroud) 您可以配置TypeScript以输出ES5或ES6.只要您想在不本身支持ES6的平台上运行应用程序,就必须使用Traceur等编译器(包括Traceur运行时库)将ES6编译为ES5.
这样做有什么好处而不是简单地告诉TypeScript输出ES5?(我不认为该应用程序将永远只针对本机ES6平台)
据我所知,你不能在TypeScript(1.5)中编写一个无法在ES5上运行的程序(假设程序编译并包含正确的库).我错了吗?
traceur ×11
ecmascript-6 ×8
javascript ×7
babeljs ×3
compilation ×1
ecmascript-5 ×1
gulp ×1
jquery ×1
jspm ×1
maven ×1
maven-plugin ×1
node.js ×1
reactjs ×1
typescript ×1