【NodeJS学習ノート01】勉強しないと老けてしまう
4891 ワード
前言
これ以上nodeJsを学ばないと、私たちは年を取ってしまいます.HTML 5の大波が襲ってきた時、多くの先輩がNodeJsの旅を始めましたが、その時私はまだサーバー側のプログラムをしていましたが、その後フロントエンドに変わり、階段隊との距離が大きくなりました.サーバー側の言語ができて、まだ長い間働いていたので、今になってやっとNodeJsを勉強し始めました.完全な先端へ進む今回のNodeJs学習計画は、①1-2週間基礎知識を学ぶ②1週間程度で簡単なプロジェクトを開発する③NodeJsを利用してモバイルエンドデバッグ用のツールを開発する④パッケージ関連(これは遠いかもしれません)
NodeJsの特徴
①非同期ファイルからネットワーク要求までを読み取るNodeJsはすべて非同期で完成し、コールバック関数は重要な役割を占め、プログラミングモデルではNodeがリードしている
②イベントコールバックイベントコールバックはプログラムを軽くしますが、具体的にはプログラマー次第です.しかし、コールバック関数は読む上では難しいです.
③単一スレッドNodeは単一スレッドで、マルチスレッドであれば、この言語の水はまた深くなり、いくつかのプロセスの通信を聞くときは嫌だが、スレッドにもデッドロックなどの問題はないが、性能に関連して問題がある.マルチコアを利用できないからだ.
モジュール機構/CommonJs
私たちはもともとサーバー側の開発をしていましたが、コードをうまく組織していないと、後期のメンテナンスが非常に困難なので、MVCや三層アーキテクチャがあり、現在のフロントエンドのビジネスロジックがバックエンドに近づくにつれて、単ページアプリケーションではバックエンドを超えたプログラムロジックページviewが増加し続けるとjsコード量の急増をもたらします.フロントエンドコードをどのようにうまく管理するかが問題になっているので、requireJsが現れました.PS:ニマこの間はnodeJsとお金の関係がありますね......JAvascriptはモジュール化されたシステムがないので、CommonJsの提案があり、jsに大規模なアプリケーションを開発する基礎を備えさせる.
モジュールリファレンス
数学計算関連などのモジュールを参照するには、次のようにします.
モジュール定義
自分のモジュールを定義するには
この関数をmathで定義すれば、使えます.
モジュールID
モジュールIDはrequireに渡されるパラメータで、アルパカの名前を付ける必要があります.ファイルパスを指しています.ここではrequireJSと似ています.
モジュール実装
Nodeのモジュール実装は2種類に分けられ、1つはシステムレベルのコアモジュールであり、1つはユーザーが作成したファイルモジュールコアモジュールがコンパイル過程でバイナリファイルに翻訳され、Nodeプロセスが起動すると、一部のコアモジュールが直接メモリ(ファイルの位置決め、コンパイル実行)ファイルモジュールにロードされ、動的にロードする必要があり、速度は比較的遅いが、ロード後、それらのファイルはキャッシュされ、二次導入時にキャッシュファイル(コンパイルされたファイル)が読み込まれます.ここではunderscoreを使用する過程で、Htmlをコンパイルしてテンプレート関数(彼は本当に1つの関数です)を形成します.実はこれは、プロジェクトを配置する前にコンパイルされた関数を保存し、htmlテンプレートファイルを削除することができます(最適化効果はわかりません)
Nodeでは、各モジュールはオブジェクトです.
コンパイルと実行時にファイルモジュールの最後の段階を導入し、特定のファイルにナビゲートすると、nodeはモジュールオブジェクトを新規作成し、パスに基づいてコンパイルに成功したモジュールごとにファイルパスをインデックスとしてModule.Cache上
各モジュールファイルにはrequire、exports、moduleの3つの変数が存在しますが、ファイルでは定義されていません(_filename_、_dirname__変数も)実際にコンパイル中にjavascriptファイルの内容を先頭に詰めました(カスタム関数がwindowに転送されるのと同じです)
このように、モジュールとモジュールの間は隔離されており、互いに影響を与えません.ここではunderscoreのコンパイルと似ています.
パッケージとNPM
Nodeは自身のコアモジュールを組織しているので、サードパーティファイルモジュールは秩序正しく作成して使用することができますが、サードパーティモジュールでは、モジュールとモジュールの間には依然として各地で相互に分散して直接参照することはできません.モジュールのアウトソーシングとNPMでは、関連を構築するメカニズムPSです.多くのモジュールはパッケージを形成し、このパッケージの概念とjavaパッケージの概念を形成します.才#プログラムセットの概念は似ているはずだ.
1つのパッケージ構造を解凍すると、いくつかのファイルが形成されます:1 package.json記述ファイル②bin実行可能バイナリディレクトリ③lib javascriptコードディレクトリ④docドキュメント(ニマはほとんどありません)⑤test demo
以上はすべてCommonJSパッケージの仕様のいくつかですが、私たちは少し理解することができます(初心者)、NPMは熟練した掌握が必要で、NPMを借りて私たちは熟練して管理パッケージをインストールすることができます
依存パッケージのインストール依存パッケージのインストールは、一般的な方法です.
実行すると、現在のディレクトリの下にnode_が作成されます.modulesディレクトリ、次にexpressディレクトリを作成します.PS:expressはNodeJsで流行しているweb開発フレームワークで、Webアプリケーションのインストールが完了すると呼び出すことができます.
締めくくり
この簡単な終わりは、後で私たちのプロジェクトの実戦過程が徐々に深化していく.
これ以上nodeJsを学ばないと、私たちは年を取ってしまいます.HTML 5の大波が襲ってきた時、多くの先輩がNodeJsの旅を始めましたが、その時私はまだサーバー側のプログラムをしていましたが、その後フロントエンドに変わり、階段隊との距離が大きくなりました.サーバー側の言語ができて、まだ長い間働いていたので、今になってやっとNodeJsを勉強し始めました.完全な先端へ進む今回のNodeJs学習計画は、①1-2週間基礎知識を学ぶ②1週間程度で簡単なプロジェクトを開発する③NodeJsを利用してモバイルエンドデバッグ用のツールを開発する④パッケージ関連(これは遠いかもしれません)
NodeJsの特徴
①非同期ファイルからネットワーク要求までを読み取るNodeJsはすべて非同期で完成し、コールバック関数は重要な役割を占め、プログラミングモデルではNodeがリードしている
②イベントコールバックイベントコールバックはプログラムを軽くしますが、具体的にはプログラマー次第です.しかし、コールバック関数は読む上では難しいです.
③単一スレッドNodeは単一スレッドで、マルチスレッドであれば、この言語の水はまた深くなり、いくつかのプロセスの通信を聞くときは嫌だが、スレッドにもデッドロックなどの問題はないが、性能に関連して問題がある.マルチコアを利用できないからだ.
モジュール機構/CommonJs
私たちはもともとサーバー側の開発をしていましたが、コードをうまく組織していないと、後期のメンテナンスが非常に困難なので、MVCや三層アーキテクチャがあり、現在のフロントエンドのビジネスロジックがバックエンドに近づくにつれて、単ページアプリケーションではバックエンドを超えたプログラムロジックページviewが増加し続けるとjsコード量の急増をもたらします.フロントエンドコードをどのようにうまく管理するかが問題になっているので、requireJsが現れました.PS:ニマこの間はnodeJsとお金の関係がありますね......JAvascriptはモジュール化されたシステムがないので、CommonJsの提案があり、jsに大規模なアプリケーションを開発する基礎を備えさせる.
モジュールリファレンス
数学計算関連などのモジュールを参照するには、次のようにします.
var math = require('math');
モジュール定義
自分のモジュールを定義するには
exports.add = function () {
return sum;
}
この関数をmathで定義すれば、使えます.
math.add();
モジュールID
モジュールIDはrequireに渡されるパラメータで、アルパカの名前を付ける必要があります.ファイルパスを指しています.ここではrequireJSと似ています.
モジュール実装
Nodeのモジュール実装は2種類に分けられ、1つはシステムレベルのコアモジュールであり、1つはユーザーが作成したファイルモジュールコアモジュールがコンパイル過程でバイナリファイルに翻訳され、Nodeプロセスが起動すると、一部のコアモジュールが直接メモリ(ファイルの位置決め、コンパイル実行)ファイルモジュールにロードされ、動的にロードする必要があり、速度は比較的遅いが、ロード後、それらのファイルはキャッシュされ、二次導入時にキャッシュファイル(コンパイルされたファイル)が読み込まれます.ここではunderscoreを使用する過程で、Htmlをコンパイルしてテンプレート関数(彼は本当に1つの関数です)を形成します.実はこれは、プロジェクトを配置する前にコンパイルされた関数を保存し、htmlテンプレートファイルを削除することができます(最適化効果はわかりません)
Nodeでは、各モジュールはオブジェクトです.
function Module(id, parent) {
this.id = id;
this.exports = {};
//parent ,
this.parent = parent;
if (parent && parent.children) {
parent.children.push(this);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
コンパイルと実行時にファイルモジュールの最後の段階を導入し、特定のファイルにナビゲートすると、nodeはモジュールオブジェクトを新規作成し、パスに基づいてコンパイルに成功したモジュールごとにファイルパスをインデックスとしてModule.Cache上
各モジュールファイルにはrequire、exports、moduleの3つの変数が存在しますが、ファイルでは定義されていません(_filename_、_dirname__変数も)実際にコンパイル中にjavascriptファイルの内容を先頭に詰めました(カスタム関数がwindowに転送されるのと同じです)
(function (exports, require, module, __filename__, __dirname__) {
var math = require('math');
exports.area = function (radius) {
return '';
};
});
このように、モジュールとモジュールの間は隔離されており、互いに影響を与えません.ここではunderscoreのコンパイルと似ています.
パッケージとNPM
Nodeは自身のコアモジュールを組織しているので、サードパーティファイルモジュールは秩序正しく作成して使用することができますが、サードパーティモジュールでは、モジュールとモジュールの間には依然として各地で相互に分散して直接参照することはできません.モジュールのアウトソーシングとNPMでは、関連を構築するメカニズムPSです.多くのモジュールはパッケージを形成し、このパッケージの概念とjavaパッケージの概念を形成します.才#プログラムセットの概念は似ているはずだ.
1つのパッケージ構造を解凍すると、いくつかのファイルが形成されます:1 package.json記述ファイル②bin実行可能バイナリディレクトリ③lib javascriptコードディレクトリ④docドキュメント(ニマはほとんどありません)⑤test demo
以上はすべてCommonJSパッケージの仕様のいくつかですが、私たちは少し理解することができます(初心者)、NPMは熟練した掌握が必要で、NPMを借りて私たちは熟練して管理パッケージをインストールすることができます
依存パッケージのインストール依存パッケージのインストールは、一般的な方法です.
npm install express
実行すると、現在のディレクトリの下にnode_が作成されます.modulesディレクトリ、次にexpressディレクトリを作成します.PS:expressはNodeJsで流行しているweb開発フレームワークで、Webアプリケーションのインストールが完了すると呼び出すことができます.
var express = require('express');
締めくくり
この簡単な終わりは、後で私たちのプロジェクトの実戦過程が徐々に深化していく.