【发布时间】:2018-06-29 21:49:10
【问题描述】:
作为一名刚接触 JavaScript 编程的资深程序员,尽管阅读了很多文章,但我仍然有以下问题尚不清楚。
- 看ES6 (ECMAScript 2015) support by browsers,可以看出支持水平远不如Node.js,所以问题来了,
- 如果Node.js和浏览器都在使用modern V8 engine,为什么支持级别如此不同?
- 查看ES6 support in Node.js,我可以看到现在确实很少有 ES6 功能不受支持。但是,supported 在图表中究竟是什么意思?即,
- 这是否意味着即使我使用支持 ES6 功能编写,我仍然需要 use the Babel compiler to compile ES6 code to ES5 才能让 Node.js 使用它?
- 对于为 Node.js 运行的 TypeScript ES6 风格的 JavaScript 代码,它们仍然需要为 transpiled into an ES5 compatible form,尽管 Node.js 几乎涵盖了所有 ES6 功能,对吧?即,
对于以下代码,
class Animal {
constructor(public name) { }
move(meters) {
console.log(this.name + " moved " + meters + "m.");
}
}
class Snake extends Animal {
move() {
console.log("Slithering...");
super.move(5);
}
}
class Horse extends Animal {
move() {
console.log("Galloping...");
super.move(45);
}
var sam = new Snake("Sammy the Python")
var tom: Animal = new Horse("Tommy the Palomino")
sam.move()
tom.move(34)
是否需要将其转译成与 ES5 兼容的形式才能与 Node.js 一起运行?
最后,我可以尝试使用上面的 TypeScript/ES6 代码玩的任何在线网站吗?
- 我将它复制到我的 chrome 控制台,并收到一个我不明白的错误 -
Unexpected strict mode reserved word,并且 - 我在http://www.typescriptlang.org/play/index.html 上尝试过,但
console的输出在那里不起作用。
请帮忙。谢谢。
【问题讨论】:
-
所有浏览器不使用V8引擎
-
你的 Snake 类中有一堆语法错误。
-
为了增加获得答案的机会,请提出 1 个问题,而不是 5 个问题。
-
"supported" 在 node.js ES6 图表中意味着您可以在没有转译器的情况下使用本机 ES6 功能。你可以用 Javascript 编写那个 ES6 特性,它就可以工作。
-
TypeScript 必须转译成 Javascript,因为没有浏览器或 node.js 引擎直接运行 TypeScript。当你转译你的 TypeScript 时,你可以选择你想要它生成的目标 Javascript 是什么(ES5 或 ES6)。
标签: javascript node.js typescript