CoffeeScript?TypeScript?仍是JavaScript

  请注意本文只是个人偏见,我努力地理解借助CoffeeScript或TypeScript之类的编译器写JavaScript代码的理由。静态编译、强类型语言和框架,我有着这些流行的、丰富的背景。个人上一份工做就是使用TypeScript,由于我不得不使用。那是一段不快乐的时光,我将所以而离开。javascript

  我很幸运地把本身从这种困境和负担中释放出来,正在彻底地使用JavaScript编写代码,我对此感到格外高兴!若是我对于这种变化的热情还不够明显,请让我向你保证,我如今更开心了。有一点很重要,我不是在暗示静态编译或强类型语言有什么错误,由于它确定没错。它只不过再也不是个人菜了。java

  鉴于JavaScript的动态本性以及缺少静态类型检查,我可能编写着低质量代码,充斥着bug却不能在编译时发现,对吗?答案是绝不含糊的,不对!我历来不能这样有动力、多产、富有表现和高效。我没有编写过最少bug的高质量代码,也不能在发现bug后快速修复。或许你想知道,我是否在编写风格统一的JavaScript,它们遵循最佳实践和风格,却没有编译器?答案是,对的!我不是故意在这里鼓吹本身,而是要指出,静态编译的缺少不必定会致使更多的bug和低质量的代码。web

  的确,有不少方法来确保JavaScript代码被正确地编写、遵循推荐的风格和最佳实践。更不要说编写高质量JavaScript成为了次日性,天然地,你倾向于遵循你学到的、一样优秀的模式。你还应该老是编写合适的单元测试,这是一种最佳实践和另外一种应对bug的防护,有助于确保预期的功能。咱们不要忘了,合适的代码审核也是一种最佳实践,应该去用。typescript

  那么,为何要用这些编译器,好处又是什么呢?答案是,我也不知道。是否是应该有能够编译成Ruby和Python的RubyScript和PythonScript呢?在我看来,若是你不喜欢、或者不想编写JavaScript代码,那么你可能就不该该作一名JavaScript开发人员。它是古怪的、不完美的语言?它绝对是,可是它一直在变得更好。大部分的怪癖和遗漏在ECMAScript Harmony【注1】中提出了,好比:ES.next。数据库

  我认为使用某种编译器只有一个缘由,那就是,若是你是高级专家、JavaScript大拿,不喜欢原生JavaScript,只是想简单快捷地作些东西。若是你不是刚才提到的专家,那么我真地相信你只是在伤害本身而逃避原生JavaScript。你干吗这么问?答案是,JavaScript正变得无处不在,成为庄重的、使人惊叹的语言。它已经融入了全部的web和移动环境、使用Node.js的服务器,还有数据库(好比MongoDB),甚至最近的硬件级别的处理(好比arduino)。浏览器

  我读了不少博客、newsletter、书、文章、论文、文档、MDN等与JavaScript相关的东西。它们都包含了用原生JavaScript编写的代码,我不多看到做者用CoffeeScript或相似语言呈现的代码,在极少场合碰到这些代码时,我会当即中止阅读,由于我只对JavaScript、而不是它的其它版本感兴趣。服务器

  若是你曾经计划、或者有兴趣在工做中用到基于JavaScript的数据库(好比MongoDB),那么你须要知道如何编写JavaScript。你不能用CoffeeScript来查询MongoDB,也不能没有预编译就用CoffeeScript为Node.js编写基于服务器端的JavaScript,即便你有能力,也不能这样作。框架

  在GitHub上,如潮水般涌来的、表面上有数百万种的JavaScript资源库和框架,该怎么样呢?大型的有jQuery、AngularJS、Underscore等等。我强烈推荐深刻学习JavaScript,这样你不只可以阅读和理解源代码,还能够调试它。是的,说到了调试,不论是你是在浏览器,仍是使用Webstorm为Node.js调试JavaScript,都会涉及到原生JavaScript。工具

  我最后想指出的是与其余人的协做(好比GitHub),或者找一份JavaScript工做室的工做。若是顺利的话,掌握原生JavaScript的好处应该比较明显。当你入职第一天走进严肃的JavaScript工做室、提出CoffeeScript编译器的问题,你可以想象获得这是什么情景吗?单元测试

  重申,若是你是高级专家JavaScript大拿,那么编译器可能就是好的吗?尽管如此,我怀疑你会不会成为这样的大拿,若是你由于青睐某种编译器而避免学习、编写原生JavaScript的话。若是你担忧静态检查和风格,能够尝试一些构建工具(好比,Grunt、Gulp、Node、NPM等)。不少插件运行很是不错。对于既定代码,使用CoffeeScript或TypeScript是为了查看编译好的JavaScript,而后模拟原生代码的输出。不管怎样,帮本身一个忙,优先掌握JavaScript。

  注1:ECMAScript Harmony将会以“ECMAScript 6”发布。http://zh.wikipedia.org/wiki/ECMAScript

  原文:http://innoarchitech.com/coffeescript-typescript-javascript/ 翻译:labazhou

相关文章
相关标签/搜索