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模块做为依赖并在项 ...
随机推荐
- C 语言实例 - 计算一个数的 n 次方
C 语言实例 - 计算一个数的 n 次方 计算一个数的 n 次方,例如: ,其中 为基数, 为指数. 实例 - 使用 while #include <stdio.h> int main() ...
- React方法论
按照目前学习进度不定更新 react渲染的效率,看起来是全体的渲染,其实react在虚拟dom上的处理简直完美.它会过滤掉那些原来就有的东西,不去全体地重复渲染一遍. 即将进入实战,React至今的个 ...
- Mysql遍历大表(Mysql大量数据读取内存溢出的解决方法)
mysql jdbc默认把select的所有结果全部取回,放到内存中,如果是要遍历很大的表,则可能把内存撑爆. 一种办法是:用limit,offset,但这样你会发现取数据的越来越慢,原因是设置了of ...
- 将GPT转换成MBR
准备一个pe启动盘 1.单击”运行“在弹出来的窗口输入cmd回车 2.在输入“diskpart”回车 3.在输入“list disk”显示硬盘信息,查看那个盘是gpt分区类型 4.输入“select ...
- vector的学习(系统的学习)
首先讲一下vector,vector被称作向量容器,头文件要包括#include<vector> 可以考虑下面定义: vector<int> x; vector<char ...
- JAVA多线程之线程池的使用
合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第三:提高线程 ...
- css 设置table样式
<style type="text/css" > table tr td{height:39px; font-size: 13px; line-height: ...
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...
- 使用URLRewriter实现URL重写
优点 1)隐藏真实URL,提高安全性 2)更加友好的URL,好记(看博客园就行知道啦) 3)便于搜素引擎收录 ......... 可能的缺点 使用URL重写可能导致: 1)图片路径的问题 2)CSS路 ...
- 初学struts2-入门案列
1.所需类库 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactI ...