どのようにnode.jsモジュールとNPM Packageを書きますか?
6847 ワード
あなたはmode.jsモジュールを書く舞台の中央に来ました.自分で自分のnodejsモジュールを書く必要があるかどうか、それともただ好奇心があります.どのような理由であれ、この教程では、どのようにnodejsモジュールを作成するかを示します.
nodejsモジュールはCommon Js仕様のモジュールに適合しています.全部簡単に実現されます.私を信じて、この文章を読んでから、簡単なnodeモジュールを作ることができます.
まず、どのようにアプリでNPMを通じてローカルに設置されたnodeモジュールを使うかを見てみましょう.
新しいディレクトリを作成し、「modtest」と名付けて、cdはこのディレクトリに入ります.
上記の例を通して、もしファイルに属性が付いているexportsが含まれていれば、どのアプリでも有効なモジュールとして使用できます.しかし、モジュールファイルのパスを指定しなければなりません.そのように見ると気分が悪いですよね?なぜこのように書いてはいけませんか?
パスを作成して、「converter」と名付けて、「converter.js」を「index.js」と名前を変えて、「converter」ディレクトリの下に移動します.
どのようにあなたの創始的なnodeモジュールを発表してオンラインに行って、このようにその他の人はそれをインストールすることができて、それを使って、しかもその魅力に征服されますか?ここはどのようにNPMの登録システムでnodeモジュールをリリースしますか?です.
nodeモジュールを作成するのは、プロパティをexportオブジェクトに添付するだけではなく、appファイルからモジュールを参照します.彼はこれより少し深いです.どのようにしてそれらのエネルギーを得るかを解析します.
機能性を定義する2つの方法があります.
1、添付
この方法では、方法と属性をexportオブジェクトに付加します.exportオブジェクトはデフォルトで存在します.定義する必要はありません.私たちは例では付加的な方法を使って「converter」モジュールを作成します.
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);
};
如果你需要在模块的内部调用当前模块的方法,你创建一个本地变量并把附加的属性赋值给它:
現在のmoduleファイルでexports.binの代わりに方法binを呼び出すことができます.このようなエラーを煩わさないでください.var bin = exports.bin = function(input) { return input.toString(2); };
またはこのようにします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
どのように「.js」という拡張子で命名されたモジュールを無視できますか?今はあなたがapp.jsを実行する時です.var PI = require('./pi'); console.log(PI);
このモジュールの値はどのようにPIですか?方法と属性を含むオブジェクトではありません.赋価方法を使用して、あなたのモジュールは、任意の効果的なjavascriptオブジェクト-Boolean、undefined、Number、Functionなどです.$ node app.js 3.142857142857143
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
もしあなたのjs と が のレベルに づくならば、あなたは りして を ってモジュールを ることができて、そのため な を り して に くのjavascript を ぶことを して、もしあなたのjavascript はまだ りないならば.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')
2 nodejs ? , javascript 。 node.js , javascript , javascript!
, , :exportvs.module.exportinノード.jsnodejs 。 , , 。
: http://www.hacksparrow.com/how-to-write-node-js-modules.html