词条 | CoffeeScript |
释义 |
| name = CoffeeScript | logo = | paradigm = Multi-paradigm: prototype-based, functional, imperative, scripting | released = {{start date and age|2009|12|13|df=yes}} | designer = Jeremy Ashkenas | developer = Jeremy Ashkenas | latest_release_version = 2.4.0 | latest_release_date = {{start date and age|2019|03|29|df=yes}}[1] | influenced_by = Haskell, JavaScript, Perl,{{citation needed|date=January 2016}} Python,[2] Ruby, YAML[3] | influenced = MoonScript, LiveScript, JavaScript | operating_system = Cross-platform | license = MIT License | file_ext = .coffee, .litcoffee | website = {{URL|coffeescript.org}} }} CoffeeScript is a programming language that transcompiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript's brevity and readability.[4] Specific additional features include list comprehension and pattern matching. CoffeeScript support is included in Ruby on Rails version 3.1[5] and Play Framework.[6] In 2011, Brendan Eich referenced CoffeeScript as an influence on his thoughts about the future of JavaScript.[7][8] HistoryOn December 13, 2009, Jeremy Ashkenas made the first Git commit of CoffeeScript with the comment: "initial commit of the mystery language."[9] The compiler was written in Ruby. On December 24, he made the first tagged and documented release, 0.1.0. On February 21, 2010, he committed version 0.5, which replaced the Ruby compiler with a self-hosting version in pure CoffeeScript. By that time the project had attracted several other contributors on GitHub, and was receiving over 300 page hits per day. On December 24, 2010, Ashkenas announced the release of stable 1.0.0 to Hacker News, the site where the project was announced for the first time.[10][11] On September 18, 2017, version 2.0.0 was introduced[12], which "aims to bring CoffeeScript into the modern JavaScript era, closing gaps in compatibility with JavaScript while preserving the clean syntax that is CoffeeScript’s hallmark." SyntaxAlmost everything is an expression in CoffeeScript, for example Many unnecessary parentheses and braces can be omitted; for example, blocks of code can be denoted by indentation instead of braces, function calls are implicit, and object literals are often detected automatically. ExamplesInterval testTo compute the body mass index, one may do (here in JavaScript): With CoffeeScript the interval is directly described: Loops and comprehensionsTo compute the greatest common divisor of two integers with the euclidean algorithm, in JavaScript one usually needs a while loop: Whereas in CoffeeScript one can use Any for loop can be replaced by a list comprehension; so that to compute the squares of the positive odd numbers smaller than ten (i.e. numbers whose remainder modulo 2 is 1), one can do: Alternatively, there is: A linear search can be implemented with a one-liner using the when keyword: The The This would alert "No person" if the variable is Functions and jQueryA common JavaScript snippet using the jQuery library is: Or even just: In CoffeeScript, the Or just: String interpolationRuby-style string interpolation is included in CoffeeScript. Double-quoted strings allow for interpolated values, using #{ ... }, and single-quoted strings are literal.[13] CompilingThe CoffeeScript compiler has been written in CoffeeScript since version 0.5 and is available as a Node.js utility; however, the core compiler does not rely on Node.js and can be run in any JavaScript environment.[14] One alternative to the Node.js utility is the [https://github.com/talios/coffee-maven-plugin Coffee Maven Plugin], a plugin for the popular Apache Maven build system. The plugin uses the Rhino JavaScript engine written in Java. The official site at CoffeeScript.org has a "Try CoffeeScript" button in the menu bar; clicking it opens a modal window in which users can enter CoffeeScript, see the JavaScript output, and run it directly in the browser. The js2coffee[15] site provides bi-directional translation. Latest additions
ExtensionsIced CoffeeScript is a superset of CoffeeScript which adds two new keywords: AdoptionOn September 13, 2012, Dropbox announced that their browser-side code base has been rewritten from JavaScript to CoffeeScript.[17] GitHub's internal style guide once said "write new JS in CoffeeScript", and while it no longer does, all the advice in the style guide references how to write good CoffeeScript,[18] and their Atom text editor is also written in the language.[19]CriticismCoffeeScript has been criticized for its unusual scoping rules[20][21]. In particular, it completely disallows variable shadowing which makes reasoning about code more difficult and error-prone in some basic programming patterns established by and taken for granted since procedural programming principles were defined. For example with the following code snipped in JavaScript one does not have to look outside the sure that no possible incidentally overriden: In CoffeeScript there is no way to tell if the scope of a variable is limited to a block or not without looking outside the block. See also
Other languages that compile to JavaScript{{Portal|Free and open-source software}}(In chronological order, with ones listed in the TIOBE index highlighted in bold.)
References1. ^https://github.com/jashkenas/coffeescript/releases 2. ^http://coffeescript.org/ "CoffeeScript borrows chained comparisons from Python" 3. ^{{cite news|url=http://www.javaworld.com/javaworld/jw-10-2011/111018-coffeescript-vs-dart.html|title=Turn up your nose at Dart and smell the CoffeeScript|last=Heller|first=Martin|date=18 October 2011|work=JavaWorld|publisher=InfoWorld|accessdate=2012-02-09}} 4. ^{{cite book | title=The Little Book on CoffeScript | author=Alex MacCaw | publisher=O'Reilly Media |date=January 2012 | isbn=978-1-4493-2105-5}} 5. ^{{cite web |author=Josh Peek |url=https://twitter.com/joshpeek/status/58184348742074368 |title=Tweet by Rails Core Team Member |date= April 13, 2011}} 6. ^{{Cite web|url=https://www.playframework.com/documentation/2.5.x/AssetsCoffeeScript|title=AssetsCoffeeScript - 2.5.x|website=www.playframework.com|access-date=2016-10-31}} 7. ^Eich, Brendan. "Harmony of My Dreams" 8. ^Eich, Brendan. "My JSConf.US Presentation" 9. ^Github. [https://github.com/jashkenas/coffee-script/commit/8e9d637985d2dc9b44922076ad54ffef7fa8e9c2 'initial commit of the mystery language'] 10. ^Hacker News. [https://news.ycombinator.com/item?id=2037801 CoffeeScript 1.0.0 announcement] posted by Jeremy Ashkenas on Dec 24, 2010 11. ^Hacker News. [https://news.ycombinator.com/item?id=1014080 Original CoffeeScript announcement] posted by Jeremy Ashkenas on Dec 24, 2009 12. ^coffeescript.org Announcing CoffeeScript 2 13. ^{{cite web|title=Official CoffeeScript Page|url=http://coffeescript.org|accessdate=20 November 2013}} 14. ^[https://jashkenas.github.com/coffee-script/#installation CoffeeScript] {{webarchive|url=https://web.archive.org/web/20120427060308/http://jashkenas.github.com/coffee-script/ |date=2012-04-27 }}. Jashkenas.github.com. Retrieved on 2013-07-21. 15. ^{{cite web |url=http://js2.coffee |title=js2coffee|last=Sta Cruz|first= Rico|accessdate=11 May 2014}} 16. ^{{cite web|url=http://maxtaco.github.io/coffee-script/ |title=Official IcedCoffeeScript website |}} 17. ^{{cite web|url=https://tech.dropbox.com/?p=361| title=Dropbox dives into CoffeeScript| date=13 September 2012|last= Wheeler| first=Dan| last2= Mahkovec|first2= Ziga |last3= Varenhorst |first3=Chris|accessdate=11 May 2013}} 18. ^{{cite web|url=https://github.com/styleguide/javascript |title=JavaScript · Styleguide · GitHub |publisher=Github.com |date= |accessdate=2015-11-30|archiveurl=https://web.archive.org/web/20130815075924/https://github.com/styleguide/javascript|archivedate=2013-08-15|deadurl=no}} 19. ^[https://github.com/atom/atom Atom source code]. github.com. Retrieved on 2015-07-22. 20. ^{{cite web|url=http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in-coffeescript/|title=The Problem with Implicit Scoping in CoffeeScript|accessdate=2018-10-13}} 21. ^{{cite web|url=https://donatstudios.com/CoffeeScript-Madness|title=CoffeeScript's Scoping is Madness|accessdate=2018-10-13}} Further reading
External links
9 : Dynamic programming languages|Programming languages created in 2009|JavaScript programming language family|Prototype-based programming languages|Software using the MIT license|Source-to-source compilers|High-level programming languages|2009 software|Free software projects |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。