Node実践の二

6285 ワード

まず簡単なdemoから言えば、cmdでコマンドプロンプトを開き、echo Helloを入力すると、端末にHelloの文字が表示されているのを見て、実際には簡単なイベントです.
本題に戻ってnodeに言及すると信じています.jsは、非ブロック、コールバック、イベントループ、同時、ネットワークプログラミングなどを思い出させる.(ここでは合併を強調します:多くの人が同じことを同時に試しています)、以下は主にnodeを紹介します.jsの特色ある機能!

コールバック


コールバックはよく知られていると思いますが、簡単に言えば、関数はパラメータとして別の関数に渡され、呼び出されます.見てみましょうjsはどのようにコールバックを使って、例で話します!(ハハ)
var fs = require('fs');
fs.readFile('somefile.txt', 'utf8', function (err, data) {
    if (err) {
        throw err;
    }
    console.log(data);
});

コールバック関数の最初のパラメータerrは、ファイルの読み出し時に返されるエラーを保存するために使用されます.
コールバック関数の最初のパラメータerrは、読み取りファイルから返されたデータを保存するために使用されます.
 
Node.jsは、ネットワークアプリケーションを作成するプラットフォームを提供することを目標とし、コールバックはNodeである.jsは、コールバックによってコードがイベントが発生したときに実行されるため、ネットワークプログラミングを実現する重要な方法です.ネットワークベースのI/Oは予測不可能であり、イベント駆動プログラミングは予測不可能性を処理する最良の方法であり、コールバック発生は予測不可能性を解決する方法であり、同時処理の効率的な方法でもある.

コールバック関連Demo


1、appを作成する.js、コードは以下の通りです
var http = require('http'),
    urls = ['shapeshed.com', 'www.bbc.co.uk', 'edition.cnn.com'];

function fetchPage(url) {
    var start = new Date();
    http.get({ host: url }, function (res) {
        console.log('Got response from:' + url);
        console.log('Request took:' + (new Date() - start) + 'ms');
    });
}

for (var i = 0; i < urls.length; i++) {
    fetchPage(urls[i]);
}

2、nodeを実行する.appは何度も実行して結果をよく見ると、この例から私はあなたがネットワークベースのI/Oが予測不可能であることを体得できると信じています.イベント駆動プログラミングは予測不可能性を処理する最良の方法であり、コールバック発生は予測不可能性を解決する方法であり、同時処理の効率的な方法でもあります.

イベントループ


Node.jsは単一のプロセスで実行され、開発者に非同期符号化スタイルを使用するように要求される.(同期と非同期の概念はここでは後述しない)
ネットワークは常に開発者が制御できるものではありません.リモート・サーバからコードを取得して処理する必要はありません.非同期スタイルを使用することで、スクリプトをネットワーク・イベントが戻ったときに応答させることができます.
イベントループにより、システムはコールバック関数を保存してから、イベントが将来発生したときに実行できます.
イベントループの重要な考え方は、期待される入力順序ではなく、コードをイベントの周りにフレームワークすることです.イベントループは単一のプロセスに基づいているため、高性能を確保するためには、次のルールに従う必要があります.
  • 関数は、
  • に迅速に戻る必要があります.
  • 関数は
  • をブロックしてはならない.
  • 長時間実行する操作は、別のプロセスの
  • に移動する必要があります.

    HTTP


    ネットワークプログラミングはHTTPを理解することが避けられないが、実際にはサーバとクライアントが通信する際にどのようにデータを送信し、受信すべきかを定義している.HTTPモジュールを用いた低レベルアプリケーションプログラミングインターフェース、Node.jsでは、サーバの作成もクライアントの作成もできます.
    httpと言えば、皆さんは自然とURLを思い浮かべます.コードを見てください.
    var http = require('http'),
        url = require('url');
    
    http.createServer(function (request, response) {
        var pathname = url.parse(request.url).pathname;
        
        if (pathname === '/') {
            response.writeHead(200, { 'Content-Type': 'text/plain' });
            response.end('Home Page !  ');
        } else {
            if (pathname === '/about') {
                response.writeHead(200, { 'Content-Type': 'text/plain' });
                response.end('About Us !  ');
            } else {
                if (pathname === '/redirect') {
                    response.writeHead(301, { 'Location': '/' });
                    response.end();
                } else {
                    response.writeHead(404, { 'Content-Type': 'text/plain' });
                    response.end('Page not found !  ');
                }
            }
        }
    
    }).listen(3000, '127.0.0.1');
    
    console.log(' change!');

    実行後、ブラウザアクセスを開くhttp://127.0.0.1:3000
                http://127.0.0.1:3000/about
                http://127.0.0.1:3000/redirect
                http://127.0.0.1:3000/hello
    見た結果はそれぞれ異なり、これがルーティングの効果です.
    皆さんの目には、HTMLクライアントはブラウザのように見えますが、実際にはHTMLクライアントはサーバリクエストに応答するものであってもいいです.
    上のコードを見て戸惑うかもしれませんが、私はNodeを使います.jsはHTTPの詳細をたくさん知る必要がありますが、面倒ではないでしょうか.次はExpressピンクで登場します.

    Express


    簡単な一言で紹介するExpressはNodeです.jsのWebフレームワークです.
    npm install-g expressコマンドを使用してExpressをインストールします(友情ヒント:ここで-gを使用したのは、グローバルインストールを使用しているためです)

    ベースのExpressサイトの作成


    1、端末を開き、express[siteName](siteName)を入力します(ここのsiteNameはあなたのカスタマイズしたウェブサイト名であることに注意してください)
    2、cd siteName && npm install
    3、node app
    4、Webブラウザを開き、入力http://127.0.0.1:3000/