NodeJS模块、包、NPM

1.NodeJS模块

       每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件。

a.模块的应用               新建一个文件mytest.js,输入如下代码:

function hello() { console.log(‘Hello‘); } function world() { console.log(‘World‘); }

这就是一个NodeJS模块,但是怎么在其他模块中引入呢?我们需要为模块提供对外的接口,这就用到module.exports和exports.

我们可以这样写:

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

function world() { console.log(‘World‘); }

exports.hello=hello;

exports.world=world;

在其他模块引用时,可以使用require(module_name);载入需要的模块。

Eg: var hello=require(‘./mytest‘);或者var hello=require(‘./mytest.js‘);

hello.hello();

hello.world();

也可以这样写:

function Hello(){

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

this.world=function(){console.log(‘world‘);};

}

module.exports=Hello;

引用时,就要写为 var hello=new Hello(); hello.hello(); hello.world();

b.module.exports和exports

             module是一个对象,每个模块中都有个module对象,module是当前模块的一个引用。module.exports对象时Modul系统 创建的,而exports可以看做是对module.exports对象的一个引用。在模块中require引用另一个模块时,以module.exports的值为标准,具体关系如下:

// module.exports和exports相同的情况
var m = {};        // 表示 module
var e = m.e = {};  // e 表示 exports, m.e 表示 module.exports

m.e.a = 5;
e.b = 6;

console.log(m.e);  // Object { a: 5, b: 6 }
console.log(e);    // Object { a: 5, b: 6 }
// module.exports和exports不同的情况
var m = {};        // 表示 module
var e = m.e = {};  // e 表示 exports, m.e 表示 module.exports

m.e = { c: 9 };    // m.e(module.exports)引用的对象被改了
e.d = 10;

console.log(m.e);  // Object { c: 9 }
console.log(e);    // Object { d: 10 }

2.NodeJS包

包用于管理多个模块以及依赖关系,可以对多个模块进行封装,包的根目录必须包含package.json文件,package.json文件是CommonJS规范用于描述包的文件,符合CommonJS规范的package.json文件应该包含以下字段:

1.name:包名。包名是唯一的,只能包含小写字母,数字和下划线。

2.version:包版本号。

3.description:包说明。

4.keywords:关键字数组。用于搜索。

5.homepage:项目主页。

6.bugs:提交bug的地址。

7.license:许可证。

8.maintainers:维护者数组。

9.contributors:贡献者数组。

10.repositories:项目仓储托管数组。

11.dependencies:包依赖。

{ "name": "mytest",

"description": "My test package.",

"version": "0.1.0",

"keywords": [ "mytest", "nodejs" ],

"maintainers": [{ "name": "test", "email": "[email protected]" }],

"contributors": [{ "name": "test", "web": "http://www.mytest.com/" }],

"bugs": { "mail": "[email protected]", "web": "http://www.mytest.com/" },

"licenses": [{ "type": "Apache License v2", "url": "http://www.apache.org/licenses/apache2.html" }],

repositories": [{ "type": "git", "url": "http://github.com/test/test.git" }],

"dependencies": { "webkit": "1.2", "ssl": { "gnutls": ["1.0", "2.0"], "openssl": "0.9.8" } } }

3.npm包管理工具

npm可以从第三方网站(http://www.npmjs.prg/)上下载第三方NodeJS包。

搜索第三方包:

sudo npm search express

安装包:

sudo npm install -g express

更新包:

sudo  npm update express

卸载包:

sudo npm uninstall express

时间: 2024-08-10 15:20:16

NodeJS模块、包、NPM的相关文章

如何使用npm打包发布nodejs程序包

作者:zhanhailiang 日期:2014-11-20 不论基于任何语言开发内部项目,我们经常会在内部封装一些极具通用性的功能模块.如果我们觉得该通用模块对其它团队有可取之处,完全可以将其开源出去.npm就是发布nodejs程序包的最优工具. 1. 首先在npmjs.org注册一个账号:(可省) https://www.npmjs.org/signup 2. 通过npm adduser来注册新账号或登录老账号: [root@~/wade/nodejs/pv-tj]# npm adduser

nodeJS中的包 npm install http://www.cnblogs.com/xiaohuochai/archive/2017/05/20/6882027.html

前面的话 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用.但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用.而在模块之外,包和NPM则是将模块联系起来的一种机制.在介绍NPM之前,不得不提起CommonJS的包规范.JavaScript不似Java或者其他语言那样,具有模块和包结构.Node对模块规范的实现,一定程度上解决了变量依赖.依赖关系等代码组织性问题.包的出现,则是在模块的基础上进一步组织JavaScript代码.CommonJS的包规范

nodejs的包管理器npm和cnpm

http://www.ydcss.com/archives/18 3.npm介绍 3.1.说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等): 3.2.使用npm安装插件:命令提示符执行npm install <name> [-g] [--save-dev]: 3.2.1.<name>:node插件名称.例:npm install gulp-less --save-dev 3.2.2.-g:全局安装.将

Node.js模块与npm包管理工具

在Nodejs中,一模块为单位划分所有功能,并且提供了一个完整的模块加载机制. 模块在Nodejs中是一个非常重要的概念,它允许我们将第三方类库引入我们的应用程序中. 在Nodejs中你可以编写或引入几种模块文件: 1)  后缀名为.js的js脚本文件. 2)  后缀名为.json的JSON文本文件. 3)  后缀名为.node的经过编译的二进制模块文件. 在模块外部访问模块内的成员有两种方式: 1.  使用exports对象将对象暴露出去.例如:exports.msg=msg;就将msg暴露出

nodejs初识,npm命令

### 什么是node.js 1. node.js是一个基于Chrome V8 引擎的 JavaScript运行环境. 2. node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效. 3. node.js的包管理器npm,是全球最大开源库生态系统. 4. node.js是让javaScript运行在服务器端,让javascript能做一些后台语言做的事情 5. node.js可以解析js代码(没有浏览器安全级别的限制,因为在服务器端),提供了很多系统级别的API,如: - 文件的

node.js平台下Express的session与cookie模块包的配置

首先下载两个模块包 session模块包:用于保持登录状态或保持会话状态等. npm install express-session --save-dev cookie模块包:用于解析cookie. npm install cookie-parser --save-dev 接着在app.js(我在node.js的配置中提到的,也就是服务器主文件)中配置: var session = require("express-session"); var cookie = require(&qu

Node.js 模块和 NPM

1.模块概念 原生模块:Node.js API 提供的原生模块,原生模块在启动时已经被加载. 文件模块:动态加载模块,由原生模块 module 来实现和完成. 文件模块需要通过调用 require 方法来实现加载. Node.js 对两种模块都有缓存,不会重复开销去加载模块,只读取相应数据. 原生模块的调用 Node.js 的 API require 加载相应的 Node.js 模块,加载成功后返回一个 Node.js 模块对象. 该对象拥有该模块的所有方法和属性. var httpModule

Windows下NodeJS安装与npm环境变量配置

node.js下载:https://nodejs.org/en/download/ 参考:https://www.jianshu.com/p/812de13f1276 1.安装过程基本直接“NEXT”就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:\Program Files\nodejs”). 注:我的nodejs 安装在E盘  (E:\Program Files\nodejs) 2.安装完成后可以使用cmd(win+r然后输入c

Browserify: 使nodejs模块可以在浏览器下使用

Browserify:浏览器加载Node.js模块--------------------------------------------------随着JavaScript程序逐渐模块化,在ECMAScript 6推出官方的模块处理方案之前,有两种方案在实践中广泛采用:一种是AMD模块规范,针对模块的异步加载,主要用于浏览器端:另一种是CommonJS规范,针对模块的同步加载,主要用于服务器端,即node.js环境. Browserify是一个node.js模块,主要用于改写现有的Common