序文
nodejsを学ばなければ、年をとるでしょう... HTML5ウェーブがヒットしたとき、多くの先祖がNodejsの旅を始め、その時点で私はまだサーバー側のプログラムに取り組んでいました。
その後、私はフロントエンドに変更し、それとエシェロンの間の距離はすでに非常に大きかった。サーバー側の言語を知っていて長い間働いていたので、nodejsを学び、完全なフロントエンドに向かって移動し始めました。
今回は、nodejsを学ぶ計画は次のとおりです。
speric 1〜2週間で基本的な知識を学びます
②約1週間で簡単なプロジェクトの開発
nodejsを使用して、モバイルデバッグ用のツールのセットを開発する
packaging関連するパッケージング(これは遠くにある可能性があります)
nodejs機能
①非同期
nodejsはすべて、ファイルの読み取りからネットワークリクエストまで非同期に完了し、コールバック関数が重要な役割を果たします。ノードは主要なプログラムモデルです
②イベントコールバック
イベントコールバックはプログラムを軽量にしますが、特異性はプログラマーに依存します。ただし、コールバック関数を実際に読み取るのは非常に困難です。
③シングルスレッド
ノードはシングルスレッドです。マルチスレッドの場合、この言語はより深くなります。プロセスでのコミュニケーションについていくつかの質問をするのは非常に迷惑ですが、スレッドにはデッドロックやその他の問題はありません。
しかし、マルチコアを使用できないため、パフォーマンスの関連性には問題があります。
モジュールメカニズム/CommonJS
サーバー側の開発を行っていました。良い組織コードがなければ、後で維持することは非常に難しいでしょう。そのため、どのMVCと3層アーキテクチャがありますか?
これで、フロントエンドのビジネスロジックは、バックエンドに徐々に近づいています。シングルページアプリケーションに関しては、バックエンドのプログラムロジックを超えています。
ページビューが継続的に増加すると、JSコードの量が急増します。フロントエンドコードをうまく管理する方法が問題になっているため、requirejsが表示されます...
PS:くそーこの期間はnodejsとダイム関係を持っています...
JavaScriptにはモジュラーシステムがないため、JSに大規模なアプリケーションを開発するための基礎を提供することを提案しました。
モジュール参照
数学的計算に関連するようなモジュールを参照したい場合:
var math = require( 'math');
モジュール定義
独自のモジュールを定義したい場合は、これを行うことができます
コードコピーは次のとおりです。
exports.add = function(){
返品額;
}
この関数が数学で定義されている場合、それは使用できます
math.add();
モジュールID
モジュール識別子は、必要に応じて渡されたパラメーターです。ラクダに名前を付けて、ファイルパスを指す必要があります。こちらのrequirejsと非常によく似ています。
モジュールの実装
ノードモジュールの実装は、2つのカテゴリに分割されます。1つはシステムレベルのコアモジュールで、もう1つはユーザーが作成したファイルモジュールです。
コアモジュールは、コンパイルプロセス中にバイナリファイルに変換されます。ノードプロセスが開始された後、一部のコアモジュールはメモリに直接ロードされます(ファイルの場所、コンパイル、実行)
ファイルモジュールは動的にロードする必要があり、速度は比較的遅いです。
ただし、ロードされると、これらのファイルはキャッシュされ、キャッシュされたファイル(コンパイルされたファイル)が再度インポートされると読み取ります(コンパイルされたファイル)
ここでもう少し話しましょう。アンダースコアを使用すると、HTMLをコンパイルしてテンプレート関数を形成します(実際には単なる関数です)。実際、これはキャッシュできます。
プロジェクトを展開する前にコンパイルされた関数を保存し、HTMLテンプレートファイルを削除します(最適化効果はわかりません)
ノードでは、各モジュールはオブジェクトです。
コードコピーは次のとおりです。
関数モジュール(ID、親){
this.id = id;
this.exports = {};
//親はキーワードであり、ランダムに使用しないでください
this.parent = parent;
if(parent && parent.children){
parent.children.push(this);
}
this.fileName = null;
this.loaded = false;
this.children = [];
}
コンピレーションと実行中にファイルモジュールを導入する最後の段階。特定のファイルを見つけた後、ノードは新しいモジュールオブジェクトを作成し、パスに従ってロードしてコンパイルします。
正常にコンパイルされた各モジュールは、モジュールのインデックスとしてファイルパスをキャッシュします。_cache
各モジュールファイルには3つの変数があります。必要、エクスポート、モジュールですが、ファイルでは定義されていません(__FILENAME__および__DIRNAME__変数もあります)。
実際、コンピレーションプロセス中、ノードはJavaScriptファイルヘッドとテールのコンテンツをラップします(カスタム関数をウィンドウに渡すのに相当)
コードコピーは次のとおりです。
(function(exports、require、module、__filename__、__dirname__){
var math = require( 'math');
exports.area = function(radius){
戻る '';
};
});
このようにして、モジュールは分離されており、互いに影響を与えません。それはアンダースコアの編集に多少似ています...
パッケージとNPM
ノードは独自のコアモジュールを整理しているため、サードパーティファイルモジュールを整然と書かれて使用できますが、サードパーティモジュールでは、モジュールはまださまざまな場所でハッシュされています。
互いに直接参照することはできません。モジュールのアウトソーシングとNPMは、接続を確立するメカニズムです。
PS:多くのモジュールがパッケージを形成します。このパッケージの概念は、Javaパッケージの概念に似ています。
パッケージ構造の減圧後、いくつかのファイルが形成されます。
package.json説明ファイル
bin bin実行可能バイナリディレクトリ
rib lib javascriptコードディレクトリ
docドキュメントドキュメント(基本的に眩しいことは存在しません)
⑤テストデモ
上記はCommonJSパッケージの仕様の一部ですが、少し(初心者)を学ぶことができ、NPMは熟練する必要があります。 NPMの助けを借りて、管理パッケージのインストールに習熟することができます。
依存関係パッケージをインストールします
依存関係パッケージのインストールは一般的な方法です。
NPMインストールExpress
実行後、node_modulesディレクトリは現在のディレクトリに作成され、その後Expressディレクトリが作成されます...
PS:ExpressはNodeJSの人気のあるWeb開発フレームワークであり、Webアプリケーションの迅速な開発に役立ちます
インストールが完了したら、次のように呼び出すことができます。
コードコピーは次のとおりです。
var Express = require( 'Express');
結論
このセクションは単純に終了し、プロジェクトの実際の戦闘プロセスが徐々に深まります。