Node中包的加载机制
1、Node原生提供的核心模块:http、fs、os、path、url、querystring,Node在加载核心模块时,不需要传入路径,因为Node.js已经将核心模块的文件代码编译到了二进制的可执行文件中了,核心模块在Node中加载的优先级是最高的;
2、以./或者../开始的相对路径文件模块:加载自己写的模块时,最好使用__dirname和模块文件名拼接的方式;以/开始的绝对路径文件模块:在Linux或者MAC的操作系统中,/表示系统的根路径;在Windows中,/表示当前文件模块所属的根磁盘路径;
3、require的模块标识符中可以不包含扩展名,Node会通过同步阻塞的方式,按照".js"(可省略)、".node"(c/c++写的一些扩展模块)、".json"(如果是加载json文件模块,最好加上.json,能稍微提高一点加载的速度,读取的结果最终会转化为一个json对象)的顺序补足扩展名,依次尝试直到找到为止;
4、包:将模块联系起来的一种机制;在模块的基础上进一步组织JS代码;每个包都会提供一个出口模块,就是将包中的其它模块组织在一起,然后统一导出;
5、规范的包目录结构一般有如下几个目录和文件:package.json(包描述文件)、Bin(存放可执行的二进制文件目录)、Lib(存放JS代码的目录)、Doc(存放文档的目录)、Test(存放单元测试的目录);
6、require的参数中既不是文件模块也不是核心模块时,其加载的就是包,Node中默认的路径加载规则就是从执行文件的当前目录由内到外(直到根磁盘路径),一层一层的寻找node_modules目录,在该目录下找一个package.json的文件(包的描述文件),如果找到通过JSON.parse的方式拿到该对象,获取Main属性,如果Main属性中的值可以拼接为一个完整有效的路径,直接加载该模块并拿到modules.exports,如果找不到package.json文件或者找到了但是里面没有Main属性或者Main属性的值是一个无效的路径,Node会在该目录下按照:index.js、index.node、index.json的方式依次继续寻找;
7、NPM的两种含义:一种含义是Node.js的开放式模块登记和管理系统(https://www.npmjs.com/),另一种含义是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块;
8、console的time和timeEnd方法作用是统计一段代码的执行时间,两个方法都需要同一个字符串参数来标识该统计,而且两个方法必须成对出现;
原文地址:https://www.cnblogs.com/littlebirdlbw/p/5671067.html
Node中包的加载机制的更多相关文章
- abp web.mvc项目中的菜单加载机制
abp中的菜单加载机制 在abp中菜单的定义与我们传统写的框架不一样,它是在编写代码的时候配置,而我们一般写的通用权限管理系统中,是后期在后台界面中添加的.这一点有很大不同.abp关于菜单的定义及管理 ...
- django中的懒加载机制
懒加载在前端中的意义: 懒加载的主要目的就是作为服务器前端的优化,减少请求次数或者延迟请求数. 实现原理: 先加载一部分数据,当触发某个条件时利用异步加载剩余的数据,新得到的数据不会影响原有数据的显示 ...
- Android中的动态加载机制
在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...
- nodejs(13)模块加载机制
模块加载机制 优先从缓存中加载 当一个模块初次被 require 的时候,会执行模块中的代码,当第二次加载相同模块的时候,会优先从缓存中查找,看有没有这样的一个模块! 好处:提高模块的加载速度:不需要 ...
- [转]NHibernate之旅(13):初探立即加载机制
本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制——延迟加载.其本质就是使用GoF23中代理模式 ...
- 理解WebKit和Chromium: Chromium的多进程资源加载机制
转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 前面介绍了WebKit中的资源加载机制,其实它只是一个框架性的东西,实际的资源加载依赖于各个WebKit移 ...
- jQuery Mobile中的页面加载与跳转机制
第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的.其中这个框架的页面加载机制便是其中一个.如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按 ...
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感 ...
- Spring中ApplicationContext加载机制和配置初始化
Spring中ApplicationContext加载机制. 加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet. ...
随机推荐
- c语言提高第二天
一.指针强化1.指针也是一种数据类型,指针变量也是一种变量,和int a本质是一样的 1)指针变量也是一种变量,也有空间,32位程序大小为4个字节 int *p = 0x1122; 2)*操作符,*相 ...
- HP 1010、 1020、 1022 、M1005激光打印机内部无卡纸,但机器仍提示卡纸?
HP 1010.1018.1020.1022.M1005激光打印机,硒鼓原装编号:Q2612A 1800页 ( A4纸,5%覆盖率).是办公桌面小型打印机中主流产品,故障率极小. 现有一台HP 10 ...
- jzoj6101. 【GDOI2019模拟2019.4.2】Path
题目链接:https://jzoj.net/senior/#main/show/6101 记\(f_i\)为从\(i\)号点走到\(n\)号点所花天数的期望 那么根据\(m\)条边等可能的出现一条和一 ...
- Redis系列八:redis主从复制和哨兵
一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...
- 3.24网络攻防选拔题部分write up
20175221 3.24网络攻防选拔题部分write up Q1:百度一下,你就知道 解压题目得到一个文件夹和一个网址 打开文件夹,有三张图片 用winhex和stegsolve查看三张图片,没有 ...
- CMDB服务器管理系统【s5day91】:数据库表结构补充
1.表机构补充图 2.用户信息表(UserProfile) 1.解决了什么问题 1.这台服务器是谁管理的?2.真正出问题了我敢上去改代码了?不能3.所以一台机器必须有运维人员和业务负责人,但是业务负责 ...
- 金融量化分析【day112】:量化平台的使用-第一个策略
一.策略代码 # 导入函数库 import jqdata #初始化函数,设定基准等等 def initialize(context): set_benchmark('000300.XSHG') g.s ...
- Linux性能优化实战:系统的swap变高(08)
一.Swap 原理 前面提到,Swap 说白了就是把一块磁盘空间或者一个本地文件(以下讲解以磁盘为例),当成内存来使用.它包括换出和换入两个过程 1.所谓换出 就是把进程暂时不用的内存数据存储到磁盘中 ...
- python GUI 之 tkinter
写一个 登陆窗口来学习 tkinter ,还剩下一些问题 代码暂时如下 import tkinter as tk import webbrowser import pickle from tkinte ...
- [Android] Android 锁屏实现与总结 (一)
实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...