`

win7里怎么样写一个 node.js模块以及NPM Package

 
阅读更多

参考 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"文件的内容为:

 

 

{
  "name": "converter",
  "version": "0.0.1",
  "private": true
}

      给这个包,创建一个 README 文件,NPM将会解析它:

$ echo Converts stuff to BIN and HEX! > README.md

【这个就手动在"converter"目录建个README.md文件,README.md内容写上Converts stuff to BIN and HEX!】

现在,你所有的设置都是为了创建一个NPM包,执行"pack"命令在当前目录:

 

 

$ npm pack

这样会自动生成一个 converter-0.0.1.tgz

"cd"返回到"modtest"目录下,并且从"converter"目录下安装该模块:

$ cd ..
$ npm install converter/converter-0.0.1.tgz 

提示 converter@0.0.1 node_modules/converter 后就安装成功了

现在你应该可以这样做:

 

 

var converter = require('converter.js');【注意,已经没有 ./ 了】
var bin = converter.bin(1337); console.log(bin);

 

 非常成功!你已经创建一个本地node模块 并且使用NPM安装到了你的系统里。那么接下来我们该做什么呢?

 

   怎样发布你开创性的 node模块到线上,这样其他人就可以安装它了,使用它了,并且被它的魅力所征服?这儿是怎么在NPM的注册系统发布一个node模块

   创建一个node模块不仅仅是将属性附件到 exports对象上,然后在app文件里引用该模块。他比这稍微有点深度,我现在将解析一个模块怎么样获得它们的能量。

   有2种方法来定义功能性的模块:

   1、附加

    在这个方法里,我把方法和属性附加到 exports对象上。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);
};

    现在你能够调用方法bin()来代替exports.bin()在当前module 文件里。不要烦这样的错误:

 

 

bin = exports.bin = function() ...

    或这样:

 

 

exports.bin = bin = function() ...

 

   bin变量暴露到全局命令空间里!如果你想知道更多的关于全局变量和nodejs的全局命令空间,你将会喜欢Global Variables 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!
  噢,顺便说下,你可能会喜欢我提交的这篇文章:exports vs. module.exports in Node.js

  我希望你从这篇教程里学会了你想创建nodejs模块的所有知识。如果说我错过了什么,我一直是允许评论的,所以请留言给我。

 原文: http://www.hacksparrow.com/how-to-write-node-js-modules.html

 

 

 

分享到:
评论

相关推荐

    node.js win7版本12.8.0

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者在服务器端使用 JavaScript 进行编程。Node.js 提供了一个丰富的生态系统,包含了大量的开源库和工具,使得开发网络应用变得更加便捷。在...

    node-v16.14.0-win-x64

    Node.js的模块化系统使得开发者能够轻松地重用代码,NPM(Node Package Manager)作为其生态系统的一部分,拥有海量的开源库,极大丰富了开发者的工具箱。例如,Gulp、Webpack等构建工具,Express框架用于快速搭建...

    win7支持的nodejs版本node-v12.8.0-x64

    5. NPM:Node.js自带了npm(Node Package Manager),它是用于管理和安装Node.js模块的工具,可以用来安装和管理项目依赖。 总的来说,这个压缩包提供了一个在Windows 7环境下运行Node.js开发工作所需的基础环境,...

    node-v13.14.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 ...

    node-v9.11.2-win-x64-安装文件.zip

    标题 "node-v9.11.2-win-x64-安装文件.zip" 指的是一个包含 Node.js 安装程序的压缩包,版本号为 9.11.2,适用于 Windows 操作系统(x64 架构)。Node.js 是一个开源的、跨平台的 JavaScript 运行环境,它允许开发者...

    最新版windows node-v14.16.0-x64.zip

    Node.js,一个基于Chrome V8引擎的JavaScript运行环境,自2009年诞生以来,因其高效的非阻塞I/O模型和强大的开源生态系统,迅速成为Web开发领域的热门工具。在Windows平台上,Node.js提供了专门针对64位系统的版本,...

    node-v12.19.0-x64.rar _ node win7能支持的最高版本

    在使用Node.js时,开发者可以利用npm(Node Package Manager)来管理项目依赖,npm是随Node.js一起附带的包管理工具,它允许开发者安装、更新和卸载第三方模块,极大地提高了开发效率。例如,如果你需要使用Express...

    node-v16.14.0-win-x86.zip

    总结起来,"node-v16.14.0-win-x86.zip"提供的Node.js环境,对于前端和后端开发者来说,是一个强大的工具。无论是快速搭建服务器,还是构建复杂的应用,都能体现出其高效、灵活的特点。通过深入理解和熟练运用Node....

    win7,win10,macOS的node.js安装包

    这个压缩包包含了适用于Windows 7、Windows 10以及macOS操作系统的Node.js安装包,使得用户可以在不同的操作系统上方便地搭建和运行JavaScript应用程序。 在Windows 7和Windows 10上安装Node.js: 1. 下载:首先,...

    nodejs(node-v16.13.2-x64.msi)-(node-v18.12.1-x64.msi)

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地扩展了 JavaScript 的应用范围。Node.js 的设计思想是事件驱动、非阻塞I/O模型,这使得它在...

    node-v16.15.1-win-x64.zip

    总结来说,Node.js v16.15.1-win-x64是一个强大的服务器端JavaScript运行环境,通过V8引擎、非阻塞I/O和事件驱动模型,为开发高性能、高并发的网络应用提供了坚实的基础。无论你是新手还是经验丰富的开发者,都可以...

    node-v16.13.2最新版本

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 编程,打破了 JavaScript 原本只能在浏览器中运行的限制。Node.js v16.13.2 是这个开源项目的一个稳定版本,...

    node.js适用于win7和win10

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,打破了传统的客户端脚本语言限制。在Windows 7和Windows 10操作系统上安装和使用Node.js,可以实现高效的网络...

    node-v20.7.0-win-x64.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 ...

    node-v10.16.0-win-x64.zip

    压缩包内的文件名称列表“node-v10.16.0-win-x64”表明解压后会得到一个包含Node.js运行环境的文件夹,其中包括以下几个关键组件和文件: 1. **bin** 目录:包含了可执行文件,如`node.exe`,这是Node.js的主执行...

    node-v18.20.5-win-x64.zip

    5. package.json:这是一个JSON格式的文件,描述了Node.js项目的信息,包括项目名称、版本、依赖等。 6. package-lock.json:这个文件用于锁定项目依赖版本,确保不同的安装环境能生成相同的依赖树。 7. lib目录:...

    node-v14.18.1-x64.rar

    Node.js的核心特性包括一个内置的模块系统、一个强大的包管理器npm(Node Package Manager)以及一个对异步编程的良好支持。 标签中提到的“vue”是Vue.js的简写,它是一个用于构建用户界面的渐进式框架。Vue.js...

    node.js-v6.11.3-64位操作系统

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程。Node.js 使用了一个事件驱动、非阻塞 I/O 模型,使其轻量又高效,非常适合处理并发连接,广泛应用于...

    node-v14.15.1-win-x64.7z

    标题中的"node-v14.15.1-win-x64.7z"是指Node.js的一个特定版本,14.15.1,为Windows 64位系统的压缩包文件,采用7-Zip的压缩格式。Node.js是一个开源、跨平台的JavaScript运行环境,它允许开发者在服务器端执行...

    node v10.16.0安装包.zip

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了前后端一体化的发展。Node.js 的 v10.16.0 版本是其历史上的一个重要版本,为开发者...

Global site tag (gtag.js) - Google Analytics