Node.js:包

概要:本篇博客主要介绍了node.js中的包

  包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的库函数或者Java/.Net的类库。它将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制。Node.js的包是一个目录,其中包含一个JSON格式的包说明文件package.json。严格符合CommonJS规范的包应该具备以下特征:

  ● package.json必须在包的顶层目录下;

  ● 二进制文件应该在bin目录下;

  ● JavaScript代码应该在lib目录下;

  ● 文档应该在doc目录下;

  ● 单元测试应该在test目录下。

1.作为文件夹的模块

  模块与文件是一一对应的。文件不仅可以是JavaScript代码或二进制代码,还可以是一个文件夹。最简单的包,就是作为一个文件夹的模块。下面我们来看一个例子:建立一个叫somepackage的文件夹,在其中创建index.js,内容如下:

exports.hello = function(){
    console.log(‘Hello‘);
};

然后在somepackage之外建立getpackage.js,内容如下:

var somepackage = require(‘./somepackage‘);
somepackage.hello();

运行getpackage.js 控制台将输出结果:Hello.

  我们使用这种方法可以把文件夹封装为一个模块,即所谓的包。通过定制package.json,我们可以创建更复杂、更完善、更符合规范的包:

在前面例子中的somepackage文件夹下,我们创建一个叫做package.json的文件,内容如下所示:

{
    "main" : "./lib/interface.js"
}

然后将index.js重命名为interface.js并放入lib子文件夹下。以同样的方式再次调用这个包,依然可以正常使用。

  Node.js在调用某个包时,会首先检查包中package.json文件的main字段,将其作为包的借口模块,如果package.json或main字段不存在,会尝试寻找index.js或index.node作为包的接口。

  完全符合规范的package.json文件应该有以下字段:

  ● name : 包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。

  ● description : 包的简要说明。

  ● version : 符合语义化版本识别规范的版本字符串。

  ● keywords : 关键字数组,通常用于搜索。

  ● maintainers : 维护者数组,每个元素要包含name、email(可选)、web(可选)字段。

  ● contributors : 贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一个元素。

  ● bugs : 提交bug的地址,可以是网址或者电子邮件地址。

  ● licenses : 许可证数组,每个元素要包含type(许可证名称)和URL(链接到许可证文本的地址)字段。

  ● repositories : 仓库托管地址数组,每个元素要包含type(仓库的类型,如git)、url(仓库的地址)和path(相对于仓库的路径,可选)字段。

  ● dependencies : 包的依赖,一个关联数组,由包名称和版本号组成。

下面是一个完全符合CommonJS规范的package.json示例:

{
    "name": "mypackage",
    "description": "Sample package for CommonJS. This package demonstrates the required
    elements of a CommonJS package.",
    "version": "0.7.0",
    "keywords": [
        "package",
        "example"
    ],
    "maintainers": [
        {
            "name": "Bill Smith",
            "email": "[email protected]",
        }
    ],
    "contributors": [
        {
            "name": "BYVoid",
            "web": "http://www.byvoid.com/"
        }
    ],
    "bugs": {
        "mail": "[email protected]",
        "web": "http://www.example.com/bugs"
    },
    "licenses": [
        {
            "type": "GPLv2",
            "url": "http://www.example.org/licenses/gpl.html"
        }
    ],
    "repositories": [
        {
            "type": "git",
            "url": "http://github.com/BYVoid/mypackage.git"
        }
    ],
    "dependencies": {
        "webkit": "1.2",
        "ssl": {
            "gnutls": ["1.0", "2.0"],
            "openssl": "0.9.8"
        }
    }
}
时间: 2024-08-10 14:27:55

Node.js:包的相关文章

Meteor: 如何复用node.js包或代码

Meteor基于Node.js,但是却有自己的包管理系统(atmosphere)以及代码加载机制,且meteor是非异步的,这些都意味着,node.js包(npm package)和代码通常不能直接用于meteor程序. 这里分享三种方法以在meteor中复用node.js包和代码. meteorhacks:npm + meteorhacks:async npm+async是复用npm包最便捷的方式.meteor程序添加npm包之后,便可以在packages.json中声明包依赖,在程序中通过M

Node.js包管理器Yarn的入门介绍与安装

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱虽然是个半桶水的咸鱼前端,不过也得跟上 Javascript 这股潮 (hong) 流 (huang) 的脚步,所以便有了下面这篇文章.大概的浅尝了一下这个自称是又快又可信赖又安全的包管理,所以写的内容不会很详细,更多的可能只是针对这个全新的包管理与 npm 的不同之处来对比.也可能有些地方写得不对

关于《Node.js 包教不包会》中cookie 与 session的补充

刚开始学node,在看到Lesson 16: <cookie 与 session>中关于在 redis 中存储 session中,直接按照博主的代码是不能运行的,当时很苦恼,挺郁闷的,直接copy都运行不了.... 经过一顿搜索以后才知道,要安装redis! redis的安装可以参考:http://blog.fens.me/linux-redis-install/  中的 2.Redis在Linux Ubuntu中安装 (我是成功安装,并且运行) 还有关于redis的常用命令,可以看一下:ht

9.Node.js 包管理器npm

npm 是 Node.js  官方提供的包管理工具, 用于 Node.js包的发布.传播.依赖控制 安装 express ==> 流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站. $ npm install express 包的发布 , 创建符合 npm  规范的 package.json  文件 $ npm init 输入命令后,会生成package.json文件 package name: (byvoidmodule) alan version: (1.0.0)

node.js教程基础:node.js包管理器

Node.js 包管理器 Node程序包管理器提供了两个主要功能: 1) 它提供了可在search.nodejs.org上搜索的node.js软件包/模块的在线存储库. 2) 它还提供了命令行实用程序,用于安装Node.js软件包,执行版本管理和Node.js软件包的依赖关系管理. 在v0.6.3之后的版本中,npm与Node.js可安装程序捆绑在一起. 您可以通过打开Node.js命令提示符并键入以下命令来检查版本: npm version 使用npm安装模块 以下是安装任何Node.js模块

Node.js包的依赖及版本号(转)

原文:  http://www.cnphp6.com/archives/64130 Node.js最重要的一个文件就是package.json,其中的配置参数决定了功能.例如下面就是一个例子 { "name": "test", "version": "1.0.0", "description": "test", "main": "main.js",

Node.js包

 1.app.js 2.m_p包下package.json 3.index.js  入口模块

Node.js包管理器:

当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require获得,因为require不会搜索/usr/local/lib/node_modules/ 创建全局链接:npm link (windows不支持npm link) 它的功能是在本地包和全局包之间创建符号链接,例如,我们已经通过npm install -g express 安装了express ,这时在工程 目录下,运行命令:

Node.js的线程和进程

http://www.admin10000.com/document/4196.html 前言 很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够让读者较为清晰的理解Node.js对于单/多线程的关系和支持情况.同时本章还将列举一些让Node.js的web服务器线程阻塞的例子,最后会提供Node.js碰到这类cpu密集型问题的解决方案. 在学习本章之前,读者需要对Node.js有一个初步的认识,熟悉Node.js基本语法.cluster模块.

Node.js【4】简介、安装和配置、快速入门

笔记来自<Node.js开发指南>BYVoid编著 第1章 Node.js简介 Node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为脚本语言世界的一等公民,在服务端堪与PHP.Python.Perl.Ruby平起平坐. Node.js可以作为服务器向用户提供服务,与PHP.Python.RubyonRails相比,它跳过了Apache.Nginx等HTTP服务器,直接面向前端开发. Node.js还可以调用C/C++的代码,这样可以充分利用已有的诸多函