NodeJS-学習ノート

4609 ワード

知ってるjs
node.jsはJavaScriptアプリケーションではありませんjsはC++言語で作成され、JavaScript実行環境です.Goole ChromeブラウザのV 8エンジンを採用しており、パフォーマンスが優れていると同時に、ファイル操作、ネットワークプログラミングなど、多くのシステムレベルのAPIを提供しています.ブラウザ側のJavaScriptコードは、実行時に様々なセキュリティに制限され、クライアントシステムに対する操作が限られています.それに比べてnode.jsは全面的なバックグラウンド実行時であり、JavaScriptに他の言語で実現できる多くの機能を提供している.
node.jsの特徴
イベント駆動、非同期プログラミングを採用し、ネットワークサービスのためにノードを設計する.jsの設計思想ではイベント駆動を核心とし、提供される多くのAPIはイベントベースの非同期スタイルである.イベント駆動、非同期プログラミング設計の重要な利点は、システムリソースを十分に利用し、実行コードが何らかの操作の完了を待つ必要がなく、限られたリソースが他のタスクに使用できることである.  node.jsのネットワークモジュールは特に多く、HTTP、DNS、NET、UDP、HTTPS、TLSなどが含まれており、これに基づいてWEBサーバを迅速に構築することができます.次に例を示します.
 var http = require('http');
    http.createServer(function (req.res){
        res.writeHead(200,
                {'Content-Type': 'text/plain'});
        res.end('Hello world
'); }).listen(80, "127.0.0.1");

Node.jsのネットワークプログラミングスタイルは比較的に便利で、提供するモジュールは使いやすいAPIの口実を開放して、わずか数行で1つのwebサーバーを構築することができます.イベント駆動、非同期プログラミングを体現しています.createServer関数でコールバック関数を指定しました(JavaScriptの匿名関数で実現)httpリクエストが送信されるとNode.jsはコールバック関数を呼び出してリクエストを処理して応答する.サポートするプログラミング言語はJavaScript 1.JavaScriptがフロントエンドエンジニアの主力言語として技術コミュニティにおいてかなりのアピール力を持つ.またWeb技術の発展に伴い特にフロントエンドの重要性が増す多くのフロントエンドエンジニアが試水「バックグラウンド応用」を開始し、nodeを多く使用している.jsの企業では、JavaScriptに慣れていることを示しています.
2.Javascriptの匿名関数と閉パッケージ特性はイベント駆動、非同期プログラミングに非常に適しており、上記の例からコールバック関数が匿名関数の形式で実現されていることがわかり、便利である.閉包の役割はもっと大きい.
3.Javascriptは動的言語の中で性能が比較的に良く、開発者がJavacript、Python、Rubyなどの動的言語に対して性能分析を行ったところ、Javascriptの性能は他の言語より優れていることが分かった.jsの性能も恩恵を受けている.
node.jsの用途
node.jsの著者は、高性能Webサーバを実現するためにNodejsを創造したと述べ、JSではなくイベントメカニズムと非同期IOモデルの優位性を最初に気に入った.しかし、彼はIO機能を持つことができず、イベントメカニズムを良好にサポートする必要があるプログラミング言語を選択して彼の考えを実現する必要があります.JSはIO機能を持たず、ブラウザ内のDOMイベントを処理するために生まれつき使用され、プログラマーの群れを持っているため、天然の選択となっている.
彼が望むように、NodeJSはサービス側で活躍し、NodeJSベースのWebサービスが大量に現れた.一方、NodeJSはフロントエンドの人々を神器のようにして、やっと自分の能力のカバー範囲をブラウザのウィンドウから飛び出して、もっと多くのフロントエンドのツールは雨後のタケノコのようです.
モジュール
NodeJSでは、通常、コードを異なるJSファイルに合理的に分割します.各ファイルはモジュールであり、ファイルパスはモジュール名です.モジュールの作成には、require、exports、moduleの3つの事前定義された変数が使用できます.
require
require関数は、現在のモジュールに別のモジュールをロードして使用し、モジュール名を入力し、モジュールエクスポートオブジェクトを返します.モジュール名は、相対パス(./で始まる)または絶対パス(/またはC:などのディスクで始まる)を使用できます.また、モジュール名の.js拡張子は省略できます.以下は例です.
    var foo1 = require('./foo');
    var foo2 = require('./foo.js');
    var foo3 = require('/home/user/foo');
    var foo4 = require('/home/user/foo.js');

1つのJSONファイルをロードして使用する場合、後の.json拡張子は省略できません.
exports
exportsオブジェクトは、現在のモジュールのエクスポートオブジェクトであり、モジュール共通のメソッドと属性をエクスポートします.他のモジュールがrequire関数で現在のモジュールを使用する場合に得られるのが、現在のモジュールのexportsオブジェクトです.次の例では、共通の方法を導出します.
exports.hello=function(){
  console.log('Hello World!');
};

module
moduleオブジェクトを使用すると、現在のモジュールに関する情報にアクセスできますが、最も多くの用途は、現在のモジュールのエクスポートオブジェクトを置き換えることです.たとえば、モジュールエクスポートオブジェクトのデフォルトは通常のオブジェクトですが、関数に変更する場合は、次の方法を使用します.
module.exports=function(){
  console.log('Hello World!');
};

上記のコードでは、デフォルトのエクスポートオブジェクトが関数に置き換えられます.
モジュール初期化
1つのモジュールのJSコードは、モジュールが初めて使用されたときにのみ実行され、実行中にモジュールのエクスポートオブジェクトが初期化されます.その後、キャッシュされたエクスポートオブジェクトが再利用される.
マスタモジュール
コマンドラインパラメータを介してNodeJSに渡され、プログラムを起動するモジュールをメインモジュールと呼ぶ.メインモジュールは、プログラム全体を構成する他のモジュールの完了をスケジュールします.例えば以下のコマンドでプログラムmainを起動する.jsはメインモジュールです.
$node main.js

バイナリモジュール
一般的にJS記述モジュールを使用していますが、NodeJSではC/C++記述バイナリモジュールもサポートされています.コンパイルされたバイナリモジュールはファイル拡張子を除く.Node以外は、JSモジュールと同じ使い方です.バイナリモジュールはオペレーティングシステムが提供するすべての機能を使用することができ、無限の潜在能力を持っているが、フロントエンドの学生にとって作成が難しく、プラットフォームをまたいで使用することが難しい.
NPM
NPMはNodeJSとともにインストールされたパッケージ管理ツールであり、NodeJSコードの導入上の多くの問題を解決することができ、一般的な使用シーンは以下の通りである.
-NPMサーバから他者が作成したサードパーティ製パッケージをローカルで使用できるようにします.-ユーザーがNPMサーバーから他のユーザーが作成したコマンドラインプログラムをダウンロードしてインストールしてローカルで使用できるようにします.-ユーザーが自分で作成したパッケージまたはコマンドラインプログラムをNPMサーバにアップロードして他のユーザーが使用できるようにします.
NPMはNodeJS生態圏を構築し、NodeJS開発者とユーザーはその中で有無を交換することができることが明らかになった.多くの機能を提供していますjsonにも他に役に立つフィールドがたくさんあります.npmjs以外はorg/doc/公式ドキュメントのほか、NPMの一般的なコマンドについて説明します.NPMではinstallやpublishなど多くのコマンドが提供されており、npm helpを使用してすべてのコマンドを表示できます.npm helpを使用して、npm help installなどのコマンドの詳細なヘルプを表示します.packageでjsonが存在するディレクトリの下でnpm installを使用します.-g現在のコマンドラインプログラムをローカルにインストールし、パブリッシュ前のローカルテストに使用できます.npm updateを使用して、現在のディレクトリの下にnode_を置くことができます.modulesサブディレクトリの対応するモジュールを最新バージョンに更新します.npm update-gを使用すると、グローバルにインストールされている対応するコマンドラインプログラムを最新版に更新できます.npm cache clearを使用すると、同じバージョン番号で新しいバージョンコードを発行する人に対処するためにNPMローカルキャッシュを空にすることができます.npm unpublish@を使用すると、自分がパブリッシュしたバージョンコードのパブリッシュを取り消すことができます.