Node初学(一)require方法
在node中模块中,上下文提供require()方法来引入外部模块:
var test=require('./index.js');
在require中传入模块标识,其实就是参数,可以 . 、 .. 开头的相对路径,或者绝对路径,也可以是文件夹。
在node中,模块分为两类:一类是node提供的模块,为核心模块,另一类是用户编写的模块,为文件模块。
在node中引入模块,需要经历三个过程:
1.路径分析
2.文件定位
3.编译执行
核心模块加载只需要经历路径分析,因为在node进程启动的时候,部分核心模块已经加载进内存中。
node中也有缓存加载,node对引用过的模块都会进行缓存,浏览器缓存的是文件,node缓存的是编译和执行后的对象;
在缓存加载机制中,核心模块缓存最先加载,文件模块缓存低于核心模块加载。
文件定位
require在分析标识符中,会出现不包含文件扩展名的情况,这种情况node会按js、json、node的次序补充扩展名,依次尝试。如果尝试没有获取到相对应的文件,却得到一个目录,node也会把这个目录当成一个包来处理。
看下图:require加载文件模块zhang,但是没有指明是zhang文件模块下那个模块。默认是index.js、index.json、index.node
node在目录分析中没有定义成功任何文件,则会进入下一个模块路径进行查找,全部查找完毕木有,则会抛出错误
缓存加载<--核心模块缓存<--文件模块缓存<--核心模块加载<--文件模块加载<--详细路径<--简单目录
Node初学(一)require方法相关推荐
- [Node.js] Module.Require机制研究
最近开始用Node.js写Server端的脚本,由于原来一直在做的.Net中开发理念的影响,在设计上和代码实现上尽可能地进行封装. Node.js中跟.Net中对象最相近的就是Module(模块)了, ...
- Node.js 调用 C++ 方法 / C++ Addons 详解
最近开发涉及到了一些Node.js调用C++的地方,于是网上搜了一下,发现网上好多文章都是比较片面的东西,没法直接使用.于是花点时间总结一下. Android开发中Java 调用C++的部分叫JNI, ...
- require 方法详解
在 NodeJS 中有一个方法是我们使用频率最高的,那就是 require 方法.NodeJs 遵循 CommonJS 规范,该规范的核心是通过 require来加载其他依赖的模块. 几个问题 mod ...
- Node.js与Sails~方法拦截器policies
policies sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦截,先执行 ...
- ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available 错误解决方法
ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available 错误解决方法 参考文章: (1)E ...
- 【PHP】PHP include()和require()方法的区别
PHP的include()和require()是两种包含外部文件的方法,对于这两种方法有什么区别,很多初学者可能不是很明白.下面总结一下PHP include()和require()的区别: 1:加载 ...
- zabbix node.js mysql_Zabbix添加Node.js监控的方法
目前网上已有 pm2-zabbix 工具可以实现Zabbix对Node.js的监控报警,Github地址. 特征: 自动发现通过PM2管理的Node.js进程. 报告Nodes.js进程状态.CPU占 ...
- Mac 无法运行node命令的解决方法
Mac 无法运行node命令的解决方法 参考文章: (1)Mac 无法运行node命令的解决方法 (2)https://www.cnblogs.com/allenwuhen/p/6834428.htm ...
- Node对象的一些方法
Node对象是什么提供了 DOM的标准规范提供了Node对象,该对象主要提供了解析DOM节点树结构的属性和方法,DOM树结构主要是依靠节点进行解析,称为DOM节点树结构.Node对象是解析DOM节点树 ...
最新文章
- Python学习--not语句
- RHEL7.0系列 修改字符终端分辨率
- 如何在Mac OS下用ISO包制作启动U盘
- XMPP iOS客户端实现三:登录、注册
- [收藏] 微软850位顶级人才不做Windows研发
- 做人真善美,做事拖后腿
- 从前端view到数据访问逻辑的思维导图
- IIS站点更改.net版本命令
- 文件标准标准IO与文件IO 的区别
- 使用ffmpeg获取影片信息
- 8.23打架学习一个
- Python 每日一题(计算数值和)
- 转置矩阵,矩阵的行列式,伴随矩阵,逆矩阵的概念及C#求解
- 服务器虚拟化集群部署
- 贝叶斯新闻分类实战项目详解
- meetsurprise告诉你手镯的戴法
- HDMI热插拔原理及信号解析
- ff14 人最多的服务器,记录FF14全服人数最少的服务器红茶川
- 抖音计算机音乐你要我,抖音你若中意我我就中意你是什么歌 完整版歌曲分享...
- 【RA6M4学习RT-Thread相关bug答疑】
热门文章
- 社区活跃吗_武汉大江园社区活跃着一支90后志愿者突击队
- mysql binlog 恢复 表_MySQL通过Binlog恢复删除的表
- mysql whrere 占位_【MySQL】(4)操作数据表中的记录
- win7怎么清理java缓存文件夹_Win7怎么清除浏览器缓存?清除电脑缓存的妙招
- mysql容器创建命令_centos7下docker创建基本的mysql容器
- linux实验磁盘管理,从0到1学习网络安全 【Linux实验篇-LVM 磁盘管理】
- 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(三)
- 哈利波特 pdf_干货!哈利波特英文原版pdf免费领,(含音频)词汇量大于新概念!...
- 乐视手机没有logcat日志_盘点国产品牌手机,联想,魅族,一加有你用过的那款吗?...
- python项目主界面_python项目案例