coffeescript運行原理

4405 ワード

先日、nodejsバージョンでv 0.0.6に更新しました.isaacs. これは今後のCoffee Scriptの発展に大きな影響を与えます.だからこのバージョンが発表されると、みんなは激しい討論を行いました.興味のある読者は以下のいくつかの文章を見られます.典型的で、現在論争の焦点です.
  • nodejs更新説明
  • what are the merrits/demertits of require.extens?
  • module name reolution order insufficiently specified
  • この問題に対して、私は仁者が仁者に会って知者に会うので、みんなはすべて少しの道理があります.この文章の真意は、原理を整理し直して、皆さんに自分の判断をさせることです.
    歴史を発展させる
    wikiの紹介によると、Coffee Scriptの発展は以下の通りです.
    2009年12月3日、Jeremiy Ahkenas. はい、  Git 上でCoffeeScriptに対して最初に提出しました.「これはこの神秘的な言語の最初の提出です.(initial comit of the mystery langer.)」当時のコンパイラはRuby語で書かれていました.同年12月24日にAhkenasは最初の上のラベルとアーカイブのバージョンを作成しました.2010年2月21日に0.5版をリリースしました.このバージョンはRubyによって作成されたコンパイラを純粋なCoffeeScriptに書き換えました.その時、吸引されました.  GitHub 貢献者の多くは、毎日約300人がこの特別案件のページを訪れています.2010年12月24日、Askenasは1.0.0安定版をリリースし、Hacker Newsで発表しました.Hacker Newsも当時、この特別案件が初めて発表されたウェブサイトです.
     原理
    CoffeeScriptのホームページでは、はっきりとお伝えしました.
    「CoffeeScript is a little laggage that comples into JavaScript.」 
    JavaScript上に構築された新しい言語であり、JavaScriptの簡潔性と可読性を強化し、より複雑な機能を追加したという利点がある.欠点もはっきりしています.コードは最終的にJavaScriptにコンパイルされます.常に人種に「余分」を与えます.
    具体的には、CoffeeScriptのコードはNodejs環境でどのように実行されていますか?
    Coffee Scriptをインストールした後、インストール方法は参考できます.http://coffeescript.org/#installation
     私はhellowworld.co.ffeeを書きました.コードは以下の通りです.
    console.log 'hello world jifeng'
     
    このファイルを.jsファイルに変換するコマンド
     coffee -c helloworld.coffee
    以上の命令により、ハロルド.jsを生成できます.コードは以下の通りです.
    // Generated by CoffeeScript 1.4.0
    (function() {
    
      console.log('hello world jifeng');
    
    }).call(this);
    上記の例を通して、Coffee Scriptとは.coffeeファイルをどのように迅速に編集しますか?jsファイルにする過程です.
     
    Nodejs呼び出しCoffee Scriptコード 
    やはり上の例を使って、私がnodejsコードを使ったら、上のhellowworld.co ffeeのコードを呼びたいです.index.jsを書くだけです.
    require('coffee-script');
    var hello = require('./helloworld.coffee');
    それはnodejsのrequire.extensionsの機能に依存しています.具体的なコードは見られます.  coffee-script.js、主なコードはこれです.
      loadFile = function(module, filename) {
        ....
        return module._compile(compile(stripped, {
          filename: filename,
          literate: helpers.isLiterate(filename)
        }), filename);
      };
    
      if (require.extensions) {
        _ref = ['.coffee', '.litcoffee', '.coffee.md'];
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
          ext = _ref[_i];
          require.extensions[ext] = loadFile;
        }
      }
    Coffee Scriptとは、nodejsが持参するrequire.extens拡張機能により、require'.coffee'ファイルの場合、先に変更ファイルをJavaScriptコードにコンパイルしてからロードされるというやり方です.
    これは、なぜrequire.extensionsをキャンセルしたのですか?coffee scriptにこんなに大きな影響を与えた原因です.
    皆さんのためになりたいです. 
     
     
     参考記事:http://zh.wikipedia.org/wiki/CoffeeScript#cite_note-change og-1