参考?http://blog.csdn.net/bugknightyyp/article/details/8783162,但上面的过程有不少谬误,我亲自试验并作了梳理如下【另也是针对window版的】:
nodejs 模块符合CommonJs规范的模块,都是简单的实现。相信我,通过读完这篇文章,你就能够创建一个简单的node模块。
? ? ? ?首先,让我们看看怎样在一个app使用通过NPM安装在本地的node模块:
?
var easyimg = require('easyimage');
? ? ??定义在easyimage模块中的方法和属性就会出现在easyimg对象中。你可以使用它们,像这样 easyimg.resize(), easyimg.crop()等等。想当方便的模块化,对不对?接下来讲述怎么为你自己创建一个。
?
? ? ? ?创建一个新目录,命名为"modtest",然后cd进入这个目录:【win7右键建目录,命令行cd到目录也一样】
?
$ mkdir modtest $ cd modtest
? ? ? ?创建一个文件,命名为"converter.js",做为你的模块文件:
?
?
$ vi converter.js
? ? ? ?converter.js模块将有2个方法,一个是将输入传唤成二进制,另外一个是转换成十六进制。"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,它就能够在任何app中作为一个有效模块使用。然而,我们必须指定模块文件的的路径。那样看起来很不爽,对不对?为什么不能这样写:
?
var converter = require('converter');
? ? ? ?当然可以,但是我们需要把这个模块转换成正确的 NPM 包文件 并且在本地安装它。过程是非常简单的,但是需要一些改变。让我们的模块变得整洁一点。 ? ??
?
? ? ? ?创建一个路径,命名为"converter",重命名"converter.js"为"index.js",并且它移动到"converter"目录下:
?
$ mkdir converter $ mv converter.js converter/index.js
【以上在win7直接鼠标操作即可,总之就是要把刚才写的converter.js转成index.js并放到当前文件夹的子目录中】
在"converter"目录创建一个包定义文件:
?
?
$ cd converter $ vi package.json
? ? ? "package.json"文件的内容为: