在不了解Javascript的情况下使用Coffeescript有多危险?[关闭]


15

我是一位经验丰富的程序员,致力于学习Web开发。我正在尝试开发一个使用svg或canvas作为图形的客户端Web应用程序。我已经决定要用Coffeescript编写应用程序代码。我不知道Javascript或Coffeescript。

了解Javascript对Coffeescript Web开发有何必要?我是否可能遇到一些麻烦的问题,需要我了解Javascript?我可以愉快地使用Coffeescript中的Javascript API吗?

编辑:我可以轻松地在一周内学习Javascript的基础知识。我更担心Javascript似乎有很多隐藏的尖锐边缘。在StackOverflow上最奇怪的语言功能问题中,Javascript是最常见的语言之一。它具有不同寻常的对象和类模型。它具有非显而易见的名称范围规则。我发现我真的需要一种语言才能花费一周以上的时间。

我将进行一个简单的小项目来学习Web开发。使用Javascript或Coffeescript会更好吗?我认为从长远来看,我会更喜欢Coffeescript,但是如果我需要对Javascript进行透彻了解才能使用Coffeescript,那么我愿意从Javascript开始。


请记住,CoffeeScript只是编译为JavaScript。虽然CS使管理一些JavaScript的细微差别变得更加容易,但它并没有重现它们。它仍然受所有相同的功能和怪癖的约束。例如,classCS中的关键字没有任何神奇的功能;它仅使用JavaScript的原生原型继承机制。因此,我建议至少具有一些JavaScript的辅助知识,这些JavaScript的“功能”比较晦涩。
Michelle Tilley

2
CS并不是让一切变得简单的神奇的灵丹妙药,而是具有不同语法的JS。您是写JS还是CS是一种样式首选项。
雷诺斯

Answers:


12

我想这不是绝对必要的,但从长远来看,如果没有,您会遇到障碍。

您需要了解幕后发生的事情以及CoffeeScript编译器转录的内容,因为这就是浏览器(假设我们正在谈论在浏览器环境中使用CoffeeScript)的含义。这意味着这也是您需要调试的内容,尤其是考虑到CoffeeScript是最近才开始的,我们可能仍会在转录机制上遇到一些粗糙的地方和错误。此外,如果未使用任何定制的调试工具进行调试,则需要跳过生成的JavaScript代码以使用Firebug或Chrome开发工具或您选择的JS控制台进行调试。在某些情况下,您将能够看到JS错误与源CoffeeScript语句如何直接相关。在其他情况下,由于转录是不平凡的,

采取这种方式:您可以很好地用Java和C#开发软件,而无需进行任何底层开发。但是,如果您不了解任何线索并且无法对这些语言的运行时在后台需要为您做些什么做出有根据的猜测,那么您将很难理解发生的事情以及为什么遇到性能瓶颈和内存问题。他们可能会搞错猜测的哪一部分,因为他们根本无法创造奇迹。

此外,如果您学习JavaScript,您将认识到它比最初看起来要困难得多,并且,CoffeeScript简洁简洁的语法将使您更加感激:)


1
否则您会因为不使用JavaScript而对CoffeeScript感到恼火;)。ES5是一门可爱的语言。
雷诺斯2011年

@Raynos:在猪上涂口红,仍然是猪;在山羊,还是山羊等上的燕尾服……:)我同意ECMAScript实际上是一门非常有趣的语言,一旦您了解它,但是它有太多的不一致性,陷阱和陷阱,这给双方都带来了负担新学习者,甚至是高级程序员。尽管如此,它仍然是我们的现代网络通用语言,并且随着时间的流逝而不断完善和成熟。我喜欢CoffeeScript的想法,因为它隐藏了ECMAScript的一些烦人的东西,几乎与使用Java的某些库(甚至是其上的一种语言)使它可以忍受的方式相同。
haylem 2011年

2
嗯,您只需要阅读Good Parts和您的好东西即可。陷阱并不是很难避免的。
雷诺斯2011年

@Raynos:不幸的是,我很难找到高级JS开发人员来雇用。真正好的人很难找到。
haylem 2011年

哦,我同意,JS社区充斥着普通的开发人员。我不在您应该找到它们的地方。我只认识JS chat.SO会议室中的一些优秀开发人员。我想纯粹的事实是,没有优秀的JS开发人员,JS一定很难。我只是认为没有人会打扰要正确地学习它。
雷诺斯

4

你问:

我是否可能遇到一些麻烦的问题,需要我了解Javascript?

我可以肯定地说。通常,如果您正在做一些有趣的事情,那么至少在某个时候,您将需要了解您以下级别中正在发生的事情。(有时Google +剪切+粘贴可以挽救您,但您不想成为那个人。)

然后再选择一种新语言的任何“经验丰富的程序员”都不会花费您很长时间。JavaScript是一种相当简单的语言。它遇到的任何困难都来自它在其中执行的环境:即,几种不同的Web浏览器对如何做事有不同的想法。

您会在网络上找到很多“如何”信息,这些信息都是使用JavaScript编写的,因此,如果您学习如何阅读JavaScript并将其转换为等效的CoffeeScript,则可能会更轻松。

坦白说,除非您有意保持无知,否则您可能会结束学习JavaScript,这是在CoffeeScript中工作的副作用。现在就开始吧。


4

因为“ CoffeeScript的黄金法则是:'这只是JavaScript'”,所以我建议至少对JavaScript有基本的了解。特别值得一看的是Douglas Crockford的小书《JavaScript:The Good Parts》。您也可以观看Crockford自己的精彩介绍

CoffeeScript基本上将JavaScript的好部分包装在一个不同的包中:“ CoffeeScript是一个简单的思想实验,可以想象一种语言,它为构成JavaScript的漂亮对象模型提供了最小的语法。 ”您无需了解所有细节,足以了解JavaScript本身不是基于类的面向对象语言。它根本没有类。相反,它使用“ 原型 ”,这与其他OO语言有所不同。 杰里米·阿什肯纳斯(Jeremy Ashkenas)清除了JavaScript语法的一些不良部分,添加了一些增强功能,并使它更具Python风格。

JavaScript有一些著名的“陷阱”值得关注。否则,这是一种很棒的语言,并且在今天非常普遍。没有它,就不会有AJAX或jQuery。

祝您在CoffeeScript中好运!


购买好零件。不要成为小气鬼!
雷诺斯2011年

@Raynos-我做到了。我不是!:D但我删除了可能不合适的搜索建议。感谢您指出!
John Tobler

3

是。如果不这样做,这不是世界末日,但是是的。

为什么?首先,JavaScript非常容易学习。从字面上看,我花了4天来学习它(嗯,大部分)。另外,我相信它比CoffeeScript更有价值。我真的不认为您甚至不需要CoffeScript。但这仍然是一个很好的工具。


3
我已经学习JavaScript多年了,但我仍然不会说我真正知道它。偶尔我会发现一些令我惊讶的东西。学习如何做“ Hello World”可能很容易,但是学习预测隐式类型转换和闭包的行为却并非如此。
Zach

@Zach您可能对JavaScript Enlightenment一书感兴趣。一篇评论写道:“实际上,我真的找不到任何缺失。如果您曾经想知道JSLint为什么抱怨某些事情,根本原因很可能会在本书中解释。”
Michelle Tilley

1
@Zach闭包并不难,类型转换很麻烦。JS的最大问题是知道IE的较旧版本在做什么。
雷诺斯2011年

@Zach:我知道我不太了解Javascript。我什至没有。但是我确实知道基础知识和一些中间的东西很容易学习。
动态

0

这取决于。

如果CoffeeScript足够抽象JavaScript,以致您不需要了解它(例如C#抽象中间语言),那么是的,您可以在CoffeeScript中做任何您想做的事情而无需学习JavaScript。

但是我的经验告诉我,无论我尝试逃避JavaScript多少,当涉及到客户端时,有时我确实需要动手编写纯JavaScript。

是啊,你说得对。虽然JavaScript语法很简单,并且您可以在较弱的地方学习它,但是要花上几年的时间才能掌握。

恕我直言,如我所见,CoffeeScript还不够成熟,无法完全包装所有JavaScript复杂功能。因此,我不冒险不学习或直接使用JavaScript。


CoffeeScript是非常薄的抽象。您可以直接学习coffeescript,但是调试已编译的js会很麻烦。“让我的手变脏并编写纯JavaScript”。JavaScript并不脏。
雷诺斯2011年

1
@Rayons,我并不是说JavaScript很脏。:)。这是一种表达,意思是您应该深入了解底层。
2011年

就像说“我正在做一些游戏编程,最好弄脏我的手并编写C ++”或“我正在做一些AI,最好弄脏我的手并编写LISP”。浏览器中唯一更深入的底层是NaCl
Raynos

0

coffeescript文档根据等效的javascript定义了coffescript。如果您不了解javascript,那么您也不会了解coffeescript。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.