NodeJS旅:module無視できないポイント

4860 ワード

modules
 
モジュールの概要
         ModuleはNode.jsの中で最も重要な部分であり、深度開発前の必修科目でもある.Moduleを把握してこそNodeJSの真髄が理解でき、思考の幅が広がることが分かります. 書くことができるということは、C〓内に類を書くことと開発類型を覚えることと同じです.    
 
すべてはrequireから始まる
nodejsで一番よく使われているのはrequire関数です.requireは私達がC〓〓で使うusingキーワードに相当して、モジュールはある名前空間の下のクラスの倉庫に相当します.我々は明示的に導入するかまたは暗黙的に導入することができます.この2つの方法の違いを先に見てください.
var express=require("express");

var router=require("./routers/index");
明らかに明示的に導入するにはモジュールの名前だけが必要です.この要求はモジュールファイルが現在の実行ディレクトリの下にあるnode_です.modulesサブディレクトリであり、モジュールはpackge.jsonを有する記述ファイルを必要とする.明示的な導入はプロジェクトのどの位置にも存在することができ、導入経路を加えるだけで使用できる.
明示的な導入は、再使用度の高いモジュールコードであり、オープンソースコードであれば、npm上でnpmコマンドラインを介して他の項目にインストールして導入することができます.ローカルにだけ保存してもいいです.copyをnode_に送ることもできます.modules/[モジュール名]のディレクトリに、package.jsonのファイルを追加します.
{

  "name": "[   ]",

  "description": "     ",

  "main": "./[   js   ].js"

},
このようにモジュールを実装する際に暗黙的に呼び出すことができます.package.jsonというファイルは文章があり、npmに発表された重要な説明文書でもあります.プロジェクトの発表会にはとても役に立ちます.ここですはpackge.jsonファイルの詳細な説明です.必要な友達がいれば詳しく知ることができます.
再使用度が高くないコードは相対パスを通してファイルに入ることができます.ここで説明するべき点はパス記号の意味です.
「/」 -> 現在のファイルの場所を指します.
現在のファイルの親ディレクトリ
プロジェクトのルートパス
現在のテンプレートが実行モジュールの場合、__udirnameは、現在のプロジェクトの実行経路の絶対パスを取得します.
 
 
 
どうやって手に入れますか
モジュールの作成は実はとても簡単で、一つのファイルを新規作成します.jsファイルは最後にmodule.exportsを通じて一つのオブジェクトのインスタンスを導出します.あるいは一つのタイプです.
例1:エクスポート例
var mymodule= { 

   save:function(){

     console.log("Save function call");

   },

   setOption:function() {

      ....

   }

}



module.exports=mymdoule;
呼び出し:
var _m=require("./mymodule");

var _m.save();
このような導出方式は直接にmymoduleという実例的な対象を導き出すことである.
 
例2:エクスポートタイプ
var myModule= function() { }



myModule.prototype={

   save:function() {
console.log("Save function call");
},
setOption:
function() { .... }
} 
module.exports
=myMdoule;
呼び出し:
var m=require("./mymodule");

var _m=new m();

_m.save();
タイプを引き出すことによって、対象のスコープをよりよく制御することができます.このように、モジュール間で参照される変数汚染問題を引き起こさないように、変数をできるだけブロック自身のスコープ内に閉じ込めるようにします.
 
Browser端でモジュールを運転します.
多くの場合、サービス端末の業務ロジック処理はクライアントの処理と同じです.これまではクライアントが実行していたのはJavascriptであるため、サービス端末が実行していたのは他のサービス端末言語です.業務ロジックをもう一度書かなければなりません.nodejsはこのすべてを変えて、私達はサービスコードに少しの判断を加えてブラウザの端に置いて運行することができます.
例えば、今は時間のフォーマットの方法があります.クライアントの運行とサービスの運行をサポートする必要があります.module.exportの上に少しの判断を加えるだけでいいです.
var timeUtilty={

   format:function(val) {

     return "Date time format "

  }

}



if (typeof(window)===undefined)

   module.exports=timeUtilty;
このように、私達はappication ofline機能をサポートできるモジュールを開発する時、手間が省けます.コードが一つあれば、二つの端で同時に処理できます.いいです.
 
おすすめの読書
  • Node.jsのモジュール機構に深く入り込む
  • nodejsの中でexportsとmodule.exportsの違い   |   Node.js Module–exportvs module.exports