18

所以基本上我有一些担心让我远离咖啡脚本:

  1. 我还不是真正的 js 专家,即使我使用它大约 3 年了,我仍然觉得我错过了一些重要的东西。因为它对我来说主要是一种支持性技术,所以我从来没有时间深入研究 js(我承认,这可能是一种错误的态度)。

  2. 如果我开始使用咖啡脚本,我的 js 知识会变得更糟

  3. 我不确定我是否真的可以信任 coffescript,这意味着它编译成的 js 代码

  4. 有时我不明白 js 代码 Coffeescript 编译成什至更糟 - 为什么它会这样编译。

我想知道您对以上几点的看法。关键是:使用coffeescript如何影响你对js的了解?你认为在切换到coffeescript之前完全理解js有多重要?

4

4 回答 4

11

您应该了解 Coffeescript 应该解决的问题。为此,您应该对 javascripts 的“坏部分”有基本的了解。我建议阅读 Douglas Crawford 的相关内容(有一本书,但互联网上也有很多资源。只需谷歌“javascript bad parts”)。基本上,这个想法是“在所有那些笨拙的大括号和分号之下,JavaScript 的核心始终有一个华丽的对象模型。CoffeeScript 试图以一种简单的方式展示 JavaScript 的优点。” (取自咖啡脚本的网站)。

有一个工具可以帮助程序员避免 JavaScript 陷阱,称为 jslint。这个工具分析你的代码并给出关于常见错误的警告,例如全局变量、分号插入、命名空间污染等……

Coffeescript 翻译成 javascript。但它生成的 javascript 是一个规范的子集,与 jslint 高度兼容。更重要的是,它会生成适用于所有浏览器的 javascript 代码。所以它不仅仅是一个很好的语法糖层,它确实有助于生成可靠的代码。

于 2012-04-24T15:02:59.687 回答
6

我想解决你的担忧。

1)如果你已经使用 JS 三年了,你可能对 JS 有相当扎实的了解。如果您还没有获得扎实的理解,也许是时候用一本好的 JS 书籍来补充您的知识了。

2) Coffee-script 可能不会让你对 JS 的了解更差。您设计 Coffee-script 应用程序的方式与您设计 JS 应用程序的方式相同(大部分情况下),因此您获得的设计技能将会转移。在我看来,程序设计是编程最重要的方面。

3)你为什么不相信JS?为什么您信任您使用的任何其他编译器/解释器/其他工具?我怀疑 Coffee-script 没有错误,但很多人将它用于多种目的。这意味着已经测试了大量的行为,通常是在生产环境中,所以您的用例可能已经过尝试和测试。

4) 当然,Coffee-script 生成的 JS 对你来说看起来很陌生,因为生成它的规则没有优先考虑人类可读性。然而,阅读它会增加你对 JS 的了解,因为你会看到特殊编写的程序是如何运行的。这使我们回到第 1 点。

于 2012-04-24T10:58:46.130 回答
1

我认为这里要记住的关键是 Coffeescript 是 javascript。每个 Coffeescript 语句或魔术运算符在 Javascript 中都有不同的具体表示。例如(x) -> x * x在 Coffeescript 中会直接翻译成function (x) { return x * x; }.

如果不知道它将生成的 Javascript,您就无法真正编写 Coffeescript。一方面,生成的 Javascript 是您必须调试的。如果有的话,我相信编写 Coffeescript 可能会提高您对 Javascript 的理解,因为它迫使您做出 Javascript 独有的决定。例如,在 Coffeescript 中,您决定使用=>而不是->实际上您正在决定是否要绑定this- 一个非常真实的 Javascript 问题。

何时(或是否)开始使用 Coffeescript?我认为这个问题的答案或多或少取决于你。试试看,如果你觉得使用 Coffeescript 完成任务更容易,那就坚持下去。如果你发现很难用与运行的语言不同的语言编写代码(因此你必须调试的语言),然后回到 Javascript。

于 2012-04-24T10:56:36.210 回答
1

所以这就是我对这个话题的看法:

  1. JS 不是一种支持性技术(支持什么?)。它是一种主要用于前端的语言,并且有一种在后端使用它的新趋势。由于浏览器本身不支持 CoffeeScript,除非您将其用作后端,所以我认为使用 CoffeeScript 没有意义。虽然学习新语言总是一个好主意。

  2. 一点也不。实际上使用 CoffeeScript 就像使用不同的语言。学习一个不会让你在另一个方面变得更笨。除非你停止学习另一个。

  3. 没有证据表明 CoffeeScript 可以编译为错误或缓慢的代码。实际上我使用 CoffeeScript 有一段时间了,我没有观察到任何性能损失。

  4. 实际上你不需要理解它为什么会这样编译。如果您在后端使用 CoffeeScript,那么您甚至不必查看它编译成的代码(您只需要源代码)。至于使用它来制作浏览器脚本,那么是的 - 使用它可能有点困难(调试)。这就是为什么我总是建议为浏览器编写普通的 JavaScript 并在后端使用 CoffeeScript。

现在至于最后一个问题:我认为 CoffeeScript 根本不会影响我的 JS 知识。我将它们视为不同的语言。此外,除非您想在前端使用 CoffeeScript,否则您无需了解 JS 即可切换到 CoffeeScript(尽管您应该)。

无论如何,掌握 JavaScript总是一个好主意。:)

于 2012-04-24T10:59:44.040 回答