Nodejs:Node.js模块机制小结
今天读了《深入浅出Nodejs》的第二章:模块机制。现在做一个简单的小结。
序:模块机制大致从这几个部分来讲:JS模块机制的由来、CommonJS AMD CMD、Node模块机制和包和npm。
1. JS模块机制的由来
由于JS先天地缺乏一项功能:模块。通过<script></script>标签引入代码的方式显得杂乱无章。社区也为JS指定了相应的规范,CommomJS的出现是其中最重要的里程碑。
2. CommomJS规范
require()方法,这个方法用来接收模块标识 ,以此来引入一个模块的API到上下文中;
exports是module的属性;
在node中,一个文件就是一个模块;
CommonJS构建的这套模块导出和引入机制使得用户不必考虑变量污染的问题。
3. Node模块实现
Node有这样的几类模块:文件模块(用户编写)、核心模块(Node提供的模块)、内建模块。加载的机制是先做路径分析,分析没有问题后,开始文件定位,文件定位没有问题后,就开始编译执行。
其中,加载文件机制有一个特点,就是优先从缓存中加载。在Node中,每一个模块都是一个对象。
4. 包和npm
包和npm是将模块连接起来的一种机制。Node是对CommomJS规范的一种具体实现,一定程度上解决了变量依赖、依赖关系等代码组织的问题 。包的出现,则是在模块的基础上,进一步组织JS代码。
5. CommomJS、AMD、CMD
CommonJS是为后端指定的规范,并不完全适合前端的应用场景。AMD最终在前端场景中胜出,是因为它是“异步模块定义”。但是AMD需要在声明引用模块的时候,指定所有的依赖;而玉伯提出的CMD则支持动态加载模块,即在需要依赖模块时,使用require()引入即可 。
Nodejs:Node.js模块机制小结的更多相关文章
- node.js零基础详细教程(4):node.js事件机制、node异步IO操作
		
第四章 建议学习时间3小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
 - nodejs 使用 js 模块
		
nodejs 使用 js 模块 Intro 最近需要用 nodejs 做一个爬虫,Google 有一个 Puppeteer 的项目,可以用它来做爬虫,有关 Puppeteer 的介绍网上也有很多,在这 ...
 - 10、Node.js模块系统
		
##################################################################################介绍Node.js模块系统为了让No ...
 - Developer - 如何自我保证Node.js模块质量
		
组里正在做SaaS产品,其中一些模块(Module)是Node.js实现,这里我们主要使用Node.js实现Web Server来提供服务. 在做SaaS项目之前,组里的开发模式是传统的Deverlo ...
 - Node Js模块讲解
		
Node JS模块 所谓的Node JS模块其实就是指Node JS package,即nodejs包. 一 什么是NodeJS模块? 在说这个问题之前,我们有必要提出一个概念,即模块规范. 现阶段J ...
 - Node.js模块
		
每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ...
 - 如何发布一个自定义Node.js模块到NPM(详细步骤)
		
咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...
 - 编写原生Node.js模块
		
导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...
 - 编写原生的Node.js模块
		
导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...
 
随机推荐
- ie-"此更新不适应于此电脑"
			
cmd-dos命令 expand –F:* C:\update\Windows6.1-KB2533623-x64.msu C:\update\ dism.exe /online /Add-Packag ...
 - POJ1031 Fence
			
题目来源:http://poj.org/problem?id=1031 题目大意: 有一个光源位于(0,0)处,一个多边形的围墙.围墙是“全黑”的,不透光也不反射光.距光源r处的光强度为I0=k/r, ...
 - 牛客假日团队赛1 D.Promotion Counting
			
链接: https://ac.nowcoder.com/acm/contest/918/D 题意: Bessie the cow is helping Farmer John run the USA ...
 - Django - CRM项目(2)Q查询(模糊查询)
			
一.CRM项目(2) 利用Q查询中的q对象完成条件筛选功能. 批量删除.公户转私户功能. 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面. 客户列表新增跟 ...
 - @SessionAttribute使用详解
			
@SessionAttribute使用详解 @ModelAttribute注解作用在方法上或者方法的参数上,表示将被注解的方法的返回值或者是被注解的参数作为Model的属性加入到Model中,然后 ...
 - 10g duplicate and 11g dupliacte db for standby
			
###################10g Creating a Physical Standby Database OASSTBY Make sure database is in archive ...
 - POJ 1410   Intersection  数据错误
			
题目要求判断一条线段和一个矩形是否相交,或者是否在矩形里面(题目好像没说?) 思路就是直接暴力判断和矩形四条边是否相交,和线段的坐标是否在矩形的坐标范围即可. 然后题目的数据,(xleft,ytop) ...
 - 分布式锁-session-事务相关
			
1. 分布式锁--zookeeper 1). client调用create()方法创建"/root/lock_"节点,注意节点类型是EPHEMERAL_SEQUENTIAL. 2) ...
 - html标签补充
			
<body>内常用标签 1.<div>和<span> <div></div> : <div>只是一个块级元素,并无实际的意义.主 ...
 - 从零开始的全栈工程师——js篇2.17(属性和节点获取)
			
DOM 一.节点树状图 Document>documentElement>body>tagname 二.常用的节点类型 元素节点(标签) 文本节点(文本节点) 属性节点(标签里的属性 ...