nodejs基础三(模块与包管理工具)

一.Node.js 的模块 与 Commonjs 规范

js缺少模块管理
commonjs规范

js的天生缺陷——缺少模块化管理机制
·表现>> JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染。
·解决>> 经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery,$调用 各个方法。
【Commonjs规范】
不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写,包括包,二进制,套接字,单元测试等等。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。
【NodeJs的模块管理机制】
基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。

二.模块的分类

模块类型分为三类:
=>核心模块
=>文件模块
=>第三方模块
在nodejs中文件和模块是一一对应的
引用模块的方式 1用文件路径引用 2用模块名来引用
如果用名称引用非核心模块的话 node就会把模块名映射到对应模块名的路径 包含了核心函数的模块会在node启动时预先加载 非核心模块就是使用npm安装的第三方模块 或者其他人创建的模块

js模块分类

三.简单的nodejs模块

模块流程

module.exports是真正的接口,exports只不过是它的辅助工具,是指向module.exports的引用。

模块可以是任何你设置给它的东西(任何合法的javascript对象--boolean, number, date, JSON, string, function, array等等)。
如果你没有显式的给Module.exports设置任何属性和方法,那么你的模块就是exports设置给Module.exports的属性。

如果你想要的模块是一个特定的类型就用Module.exports。
如果你想要的模块是一个典型的“实例化对象”就用exports。
推荐使用exports导出,除非你打算要一个类型而不是一个“实例化对象”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,653评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,135评论 2 58
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,668评论 0 106
  • NodeJs 用于服务器端开发,是执行js的ECMAScript标准,不包含DOM和BOM,但是部分API可以使用...
    Is_JackieZhang阅读 2,136评论 1 3
  • 爷爷奶奶家在农村,思想传统,喜欢男孩,爸爸是他们的大儿子,同样重男轻女。可是妈妈生的是两个女孩子,我和妹妹从小虽然...
    白活了这么久阅读 241评论 0 0