どのようにnode.jsモジュールとNPM Packageを書きますか?

6847 ワード

あなたはmode.jsモジュールを書く舞台の中央に来ました.自分で自分のnodejsモジュールを書く必要があるかどうか、それともただ好奇心があります.どのような理由であれ、この教程では、どのようにnodejsモジュールを作成するかを示します.
       nodejsモジュールはCommon Js仕様のモジュールに適合しています.全部簡単に実現されます.私を信じて、この文章を読んでから、簡単なnodeモジュールを作ることができます.
       まず、どのようにアプリでNPMを通じてローカルに設置されたnodeモジュールを使うかを見てみましょう.
 
var easyimg = require('easyimage');
      イージーイメージモジュールに定義された方法と属性は、イージーオブジェクトに現れる.これらを使ってもいいです.このようにeasyimg.resize()やeasyimg.crop()など.便利なモジュール化になりたいですか?次にどのようにしてあなたのために一つを作成するかを述べます.
 
       新しいディレクトリを作成し、「modtest」と名付けて、cdはこのディレクトリに入ります.
 
$ mkdir modtest

$ cd modtest
       ファイルを作成します.「converter.js」と名付けて、モジュールファイルとして作ります.
 
 
$ vi converter.js
       converter.jsモジュールには2つの方法があります.一つは入力をバイナリに呼び出し、もう一つは16進数に変換します.「converter.js」の内容は:
 
 
exports.bin = function(input) {

    return input.toString(2);

};



exports.hex = function(input) {

    return input.toString(16);

};

       もう一つのファイルを作成して、「app.js」と名づけて、あなたのnodeアプリケーションとします.
 
 
$ vi app.js
     「app.js」の内容は:
 
 
var converter = require('./converter.js');



var num = 10;



var bin = converter.bin(num);

console.log('BIN:' + bin);



var hex = converter.hex(num);

console.log('HEX: ' + hex);
      このnodeアプリケーションを実行します.
 
 
$ node app.js

BIN: 1010

HEX: a
       これであなたはもうそれを完成しました.あなた自身のnodeモジュール!
 
       上記の例を通して、もしファイルに属性が付いているexportsが含まれていれば、どのアプリでも有効なモジュールとして使用できます.しかし、モジュールファイルのパスを指定しなければなりません.そのように見ると気分が悪いですよね?なぜこのように書いてはいけませんか?
 
var converter = require('converter');
       もちろんいいですが、このモジュールを正しいNPMパッケージに変換してローカルにインストールする必要があります.プロセスは非常に簡単ですが、変更が必要です.私たちのモジュールをきれいにしましょう.    
 
       パスを作成して、「converter」と名付けて、「converter.js」を「index.js」と名前を変えて、「converter」ディレクトリの下に移動します.
 
$ mkdir converter

$ mv converter.js converter/index.js
      モジュールの「converter」ディレクトリのために、まずパッケージ定義ファイルを作成します.
 
 
$ cd converter

$ vi package.json
      「package.json」ファイルの内容は以下の通りです.
 
 
{

  "name": "converter",

  "version": "0.0.1",

  "private": true

}
      このカバンにREADMEファイルを作成します.NPMはそれを解析します.
 
 
$ echo Converts stuff to BIN and HEX! > README.md
      現在のディレクトリでは、NPMパッケージを作成するために設定されています.
 
 
$ npm pack

converter-0.0.1.tgz
      妖怪、そこに行く!私たちのモジュールのNPMカバンが用意されています.「cd」は「modtes」ディレクトリに戻り、「converter」ディレクトリからこのモジュールをインストールします.
 
 
$ cd ..

$ npm install converter/converter-0.0.1.tgz 

[email protected] ../node_modules/converter
      今はこのようにしてもいいです.
 
 
var converter = require('converter.js');



var bin = converter.binary(1337);

console.log(bin);
    大成功ですあなたはすでにローカルのnodeモジュールを作って、NPMを使ってあなたのシステムにインストールしました.これから私たちは何をすればいいですか?
 
   どのようにあなたの創始的なnodeモジュールを発表してオンラインに行って、このようにその他の人はそれをインストールすることができて、それを使って、しかもその魅力に征服されますか?ここはどのようにNPMの登録システムでnodeモジュールをリリースしますか?です.
   nodeモジュールを作成するのは、プロパティをexportオブジェクトに添付するだけではなく、appファイルからモジュールを参照します.彼はこれより少し深いです.どのようにしてそれらのエネルギーを得るかを解析します.
   機能性を定義する2つの方法があります.
   1、添付
    この方法では、方法と属性をexportオブジェクトに付加します.exportオブジェクトはデフォルトで存在します.定義する必要はありません.私たちは例では付加的な方法を使って「converter」モジュールを作成します.
 
exports.bin = function(input) {

    return input.toString(2);

};



exports.hex = function(input) {

    return input.toString(16);

};
 
 
 
  

     如果你需要在模块的内部调用当前模块的方法,你创建一个本地变量并把附加的属性赋值给它:

 

 

var bin = exports.bin = function(input) {

    return input.toString(2);

};
    現在のmoduleファイルでexports.binの代わりに方法binを呼び出すことができます.このようなエラーを煩わさないでください.
 
 
bin = exports.bin = function() ...
    またはこのようにします
 
 
exports.bin = bin = function() ...
 
   bin変数がグローバルコマンド空間に露出します.グローバル変数とnodejsのグローバルコマンド空間についてもっと知りたいなら、Global Varables in Node.jsが好きです.
   2、割当て:
   この方法では、Javascriptオブジェクトをmodule.exportsに割り当てます.これもデフォルトで存在しているのです.参照されているモジュールファイルの中にあります.ここでは、モジュールを作成するための割当方法の例です.
    File: pi.js 
module.exports = 22/7;
   File: app.js 
 
var PI = require('./pi');

console.log(PI);
  どのように「.js」という拡張子で命名されたモジュールを無視できますか?今はあなたがapp.jsを実行する時です.
 
 
$ node app.js

3.142857142857143
      このモジュールの値はどのようにPIですか?方法と属性を含むオブジェクトではありません.赋価方法を使用して、あなたのモジュールは、任意の効果的なjavascriptオブジェクト-Boolean、undefined、Number、Functionなどです.
     function, class :  File: pokemon.js 
module.exports = function(name, age) {



    this.name = name;

    this.age = age;

    

    this.get_name = function() {

        return this.name;

    }

    

    this.get_age = function() {

        return this.age;

    }

};
    File: app.js 
 
var Pokemon = require('./pokemon');

var pokemon = new Pokemon('Piakchu', 99);



// OCD

var age = pokemon.get_age();

console.log(pokemon.get_name() + ' is ' + age + ' year' + (age == 1? '': 's')
  もしあなたのjs と が のレベルに づくならば、あなたは りして を ってモジュールを ることができて、そのため な を り して に くのjavascript を ぶことを して、もしあなたのjavascript はまだ りないならば.
     2 nodejs ? , javascript 。 node.js , javascript , javascript!
   , , :exportvs.module.exportinノード.js
  nodejs 。 , , 。  http://www.hacksparrow.com/how-to-write-node-js-modules.html