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中包的加载机制的更多相关文章

  1. abp web.mvc项目中的菜单加载机制

    abp中的菜单加载机制 在abp中菜单的定义与我们传统写的框架不一样,它是在编写代码的时候配置,而我们一般写的通用权限管理系统中,是后期在后台界面中添加的.这一点有很大不同.abp关于菜单的定义及管理 ...

  2. django中的懒加载机制

    懒加载在前端中的意义: 懒加载的主要目的就是作为服务器前端的优化,减少请求次数或者延迟请求数. 实现原理: 先加载一部分数据,当触发某个条件时利用异步加载剩余的数据,新得到的数据不会影响原有数据的显示 ...

  3. Android中的动态加载机制

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  4. nodejs(13)模块加载机制

    模块加载机制 优先从缓存中加载 当一个模块初次被 require 的时候,会执行模块中的代码,当第二次加载相同模块的时候,会优先从缓存中查找,看有没有这样的一个模块! 好处:提高模块的加载速度:不需要 ...

  5. [转]NHibernate之旅(13):初探立即加载机制

    本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制——延迟加载.其本质就是使用GoF23中代理模式 ...

  6. 理解WebKit和Chromium: Chromium的多进程资源加载机制

    转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 前面介绍了WebKit中的资源加载机制,其实它只是一个框架性的东西,实际的资源加载依赖于各个WebKit移 ...

  7. jQuery Mobile中的页面加载与跳转机制

    第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的.其中这个框架的页面加载机制便是其中一个.如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按 ...

  8. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探         最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感 ...

  9. Spring中ApplicationContext加载机制和配置初始化

    Spring中ApplicationContext加载机制.        加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet.        ...

随机推荐

  1. 04 Django REST Framework 认证、权限和限制

    目前,我们的API对谁可以编辑或删除代码段没有任何限制.我们希望有更高级的行为,以确保: 代码片段始终与创建者相关联. 只有通过身份验证的用户可以创建片段. 只有代码片段的创建者可以更新或删除它. 未 ...

  2. Day8 信号检测与估值

    检测:接收机或处理器根据在[0,T]内观测到的信号r(t)的统计特性,按照一定准则 判断信源发送的是某个已知信号集中的哪个信号. 如:调制信号的检测问题 估计:接收机或处理器根据在[0,T]内观测到的 ...

  3. OracleSql语句学习(三)

    --在SELECT子句中出现的函数或表达式会在结果集中作为字段名,这样的可读性差,因此可以为--这样的字段添加别名(别名中不能出现空隔,除非是用双引号括起来的)--别名中如果希望包含空隔或者区分大小写 ...

  4. Jmeter二次开发代码(1)

    package org.apache.jmeter.functions; import java.util.Collection;import java.util.LinkedList;import ...

  5. SpringBoot配置devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...

  6. [模板] dp套dp && bzoj5336: [TJOI2018]party

    Description Problem 5336. -- [TJOI2018]party Solution 神奇的dp套dp... 考虑lcs的转移方程: \[ lcs[i][j]=\begin{ca ...

  7. 总线复习之SPI

    SPI总线协议以ds1302为例讲解 1.1概述. 1.2根据时序图来分析. 1.3再熟读一下DS1302的数据手册和SPI总线协议的使用. 1.4结合ds1302功能实现一定的功能. 1.1概述SP ...

  8. Magento 最佳开发配置

    概观 典型的软件开发流程如下: 本地开发机器 > QA /集成服务器 > 预览服务器(可选)> 生产服务器 无论您是在编写新的Magento 2 扩展 还是为代码库做贡献,任何开发人 ...

  9. linux18.04下安装的jdk11.0.2

    1.百度搜索jdk,选择jdk11.0.2,操作如下图: 2.下载完成,ctrl+alt+t打开终端并在/usr/local创建java文件夹 cd /usr/local sudo mkdir /us ...

  10. Day045--DOM操作

    一. 操作DOM的三步走 - 获取事件源 (找开关) - 事件(点一下) - 处理程序(业务逻辑)(灯亮了) 二. 获取DOM的三种方式 console.log(window); // 查看windo ...