NodeJs入門デモ

4185 ワード

1.ダウンロードインストールnodejs
node-vを利用できます  バージョンを見ると、nodeコマンドでjsファイルを実行できます.
2.サービス端末のjsファイルを作成する.内容は以下の通りである.
'use strict'
//  require http       
var http = require('http');
//    HTTP   
var server = http.createServer();
//  request     request  
server.on('request',function(req, res){
    res.writeHead(200, {'Content-Type':'text/plain'});
    res.end('Hell World
'); }); server.listen('8899'); console.log('Server running!');
jsファイルを実行して、以下のように出力します.
hanruikaideMacBook-Pro:nodejs hanruikai$ node helloworld.js 
Server running!
8899ポートで傍受し、ブラウザを開き、local host:8899を入力し、ハローワールドに戻ります.
3.なぜnodejsを使うのですか?
a.  イベントドリブン、非同期非ブロック
b  jsはシングルスレッドですが、nodejsはコールバック関数により非ブロッキングを実現し、高合併アクセスをサポートします.
c  前後の端はすべてnodejsで実現することができます.
4.重点を置く
requiredモジュールを導入します.私達は使えます. require コマンドをNode.jsモジュールにロードします.サーバーを作成します.サーバはクライアントの要求を監視します.Apache、NginxなどのHTTPサーバと似ています.受信要求と応答要求 サーバは簡単に作成できます.クライアントはブラウザや端末を使ってHTTP要求を送信し、サーバは要求を受信して応答データを返します.As an asynchronous event driven JavaScript runtime、Node is designed to build scalable network apple network appications.In the following“hellowed world”example、mancontions can handed carred concurrently.Upon therech thelfick
Node is simiar in design to,and influend by,systems like Ruby's Event Machine or Python's Twisted.Node tares the event model a bit further.It presents an イベントloop as a runtime construct instead of as a library
In other systems there is always a blocking call to start the event-loop.Tylially behavior is defined through calbacks the beginning of a script and the end starts a server through blockink cal cal call  EventMachine::run().In Node there isのsuch start-the-event-loop call.Node simply enters the evers the event loop after executing the input script.Node exits the event loop when there re re re no more carelbackto perform.Thebript the have the the the frever theript the the frever
5.  ブロックなしでファイルを読み込む
var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("      !");
渋滞の仕方は次の通りです
var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("      !");
nodeの関数は、ブロックとブロック以外の方法を提供します.
6.nodeのイベントモデル


http://www.runoob.com/wp-content/uploads/2015/09/event_loop.jpg
Node.jsはイベント駆動モデルを使用して、web serverが要求を受信すると、それを閉じて処理し、次のwebリクエストにサービスします.
この要求が完了すると、処理キューに戻され、キューの先頭に到達すると、この結果はユーザに返される.
このモデルは非常に高い効率の拡張可能性があり、webserverは任意の読み書き操作を待たずに要求を受け入れているからです.(非閉塞式IOまたはイベント駆動IOとも呼ばれる)
イベント駆動モデルでは、イベントが検出されたときにコールバック関数をトリガするメインループが生成されます.
Node.jsのすべての非同期I/O操作は、完了時にイベントをイベントキューに送信します.
Node.jsの中の多くのオブジェクトはイベントを配布します.net.Serverオブジェクトは新しい接続があるたびにイベントを配信します.fs.readStreamオブジェクトはファイルが開かれる時にイベントを送信します.これらのイベントの対象はすべてevents.EventEmitterの例です.
var events = require('events');
var eventEmitter = new events.EventEmitter();

//     #1
var listener1 = function listener1() {
   console.log('    listener1   。');
}

//     #2
var listener2 = function listener2() {
  console.log('    listener2   。');
}

//    connection   ,      listener1 
eventEmitter.addListener('connection', listener1);

//    connection   ,      listener2
eventEmitter.on('connection', listener2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + "           。");

//    connection    
eventEmitter.emit('connection');

//        listener1   
eventEmitter.removeListener('connection', listener1);
console.log("listener1      。");

//       
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + "           。");

console.log("      。");