使用 JavaScript,你可以编写应用让它运行在:
你的浏览器上(几乎所有浏览器)。
你的手机和平板电脑(比如 React Native,Cordova)
你的桌面软件(比如 electron 运行在 mac、linux 以及 windows)。
你的服务器上即 node。
甚至在你的数据库中(比如 mongo db)。
使用 JavaScript,你不需要下载一个 4GB 大小的 IDE 来创建一个 hello world 程序,你不需要等待 30 秒来编译然后才能执行你的 app,你所需要的一切只是一个文本编辑器。
的确 JavaScript 有缺陷,但是,其他任何语言在适用性和灵活性方面都与 JavaScript 相距甚远。
我对 JavaScript 工具、框架和库的革新(和爆发)感到喜悦。我知道它可能让学习者心累,但是这些新东西很好玩,而且,你没必要学全所有的新东西啊。
我希望说,我们能停止在 JavaScript 之上创造“语言”,也停止在你的项目中使用这些新语言。我们已经有足够多这些语言了:TypeScript、Elm、CoffeeScript 以及其他。我强烈推荐你不要在你的项目中使用这些新语言。
我将描述为什么不要使用它们,但是首先,我想表达的是,我很欣赏这些创造,它们为我们的开发提供了多样性的选择,而且尤为重要的是,我非常感谢那些创造了伟大工具和“语言”的人。
我曾经是一名坚定的 CoffeeScript 粉。几年前我决定在一个项目里使用它,而随着项目发展我很快意识到这是一个我曾经做出的最糟糕的选择,随后我花费了六个月的时间深入项目,把整个项目完全用 JavaScript 重写了一遍。
以下是为什么使用 CoffeeScript 是个坏选择的一些理由:
我需要额外的构建步骤来“编译”它到 JavaScript,不是什么大问题但有时候很烦。
它难以调试,因为你在浏览器中看到的是编译后的代码,与你的 CoffeeScript 源文件中的内容不同 —— 大部分情况下,它的可读性也很好,但是你还是需要在脑中转换一下。
目前最大的问题是对任何加入团队的新成员来说存在比较陡峭的学习曲线,因为他们必须要学习一门新的语言。
大部分在线的例子(99%)都是用 JavaScript 写的。
团队开始丧失一部分 JavaScript 技能。慢慢地,JavaScript 代码开始读起来像是另一种语言,我们希望所见的一切都是 CoffeeScript 的。
我们不能完全跟上 JavaScript 的发展脚步,比如 ES6 —— 箭头函数、解构等等。
我们不能直接将几行代码放在 script 标签里运行来做一些简单的测试,而如果我们要做测试,我们还得先用 JavaScript 来测,然后在测试之后将它“翻译”回 CoffeeScript。
虽然我没有深入使用 TypeScript 或 Elm,但我想它们应该也有类似的问题。
RE: TypeScript —— 非常酷的概念,我理解使用它的一些好处,但我们为什么要强迫一个动态语言“表现得”像静态语言那样?C# 正绞尽脑汁地想要表现得更动态一些,而现在我们又在绞尽脑子地让 JavaScript 表现得更静态一些。搞什么呀!!!
长话短说(TL;DR)。
别再黑 JavaScript,开始喜欢 JavaScript。
别在 JavaScript 之上搞其他语言。
拥抱 JavaScript 的动态特性。