require 函数加载模块过程|学习笔记

简介: 快速学习 require 函数加载模块过程

开发者学堂课程【Node.js 入门与实战require 函数加载模块过程】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8295


require函数加载模块过程

 

目录:

一、require 加载模块情况一:路径方式

二、require 加载模块情况二:模块名称方式

 

一、加载模块情况一

通过 require 函数加载模块时,内部执行与加载顺序探讨

Require 的参数是一个路径

 // 1.加载 http 模块

var http = require( " http" );

var fs = require( 'fs");

var path - require( "path");

var mime -require( "mime " );

var url -require( "url');

//require( " http”)

//require(mine)

//加载文件模块

Require(./index2.js)

加载模块分为两类:路径和模块名称

路径开头,并且带了具体后缀名称,require 会把相对路径转为绝对路径进行匹配,若对应则加载成功

// index2.js

//index2.json

//index2.node

//index2文件夹->package.json -> main(入口文件)

require( " ./index2)

若路径没有后缀,他会更加路径下尝试寻找相对于文件,自动拼接查找,若有文件则加载成功,不断匹配后缀,若全部匹配后缀不成功,他会产生寻找相关文件夹,若寻找不到文件夹则加载失败,被认为是一个相关模块名称,寻找模块package.json文件,去查看main字段入口文件

Package.json

{

"name": "05-hackernews",

"version": "1.0.0",

"description": "”,

"main": "index.js",

"scripts": {

"test": "echo \ "Error: no test specified\" 8& exit 1”

},

"keywords": [],

"author":"”,

"license":"ISC",

"dependencies": {

"mime": “^2.0.3",

“underscore": "^1.8.3"

}

}

当下文件夹是否有 app.js,若有则加载成功,若没有则会寻找 index.js,就会把此文件当做入口文件,找到则加载成功,若都没有找到就加载失败

总结:

加载文件模块一定要写好后缀名

 

二、加载模块情况二

Require()参数不是一个路径,直接就是一个模块名称

先查看模块名称是否是核心模块,若是核心模块则直接加载该核心模块

//require(http)

//require(mine)

若没有核心模块,则认为此模块为第三方自定义模块,会在当前文件所在目录寻找node_modules 文件夹,找不到此文件夹,会去当前目录下的父目录下寻找。

依次递归查找 node_modules 目录中是否有相应的包

从当前目录开始,依次递归查找所有父目录下的 node_modules 目录中是否包含相应的包

如果查找完毕磁盘根目录依然没有则加载失败

打印输入 module.paths 查看

若找到了 node_modules 会寻找 mine 模块

相关文章
|
Web App开发 缓存 JSON
35 # 模块的断点调试 require 语法实现过程
35 # 模块的断点调试 require 语法实现过程
59 0
|
Linux 索引
模块的加载过程三
模块的加载过程三
95 0
|
编译器
模块的加载过程三(下)
模块的加载过程三(下)
177 0
|
程序员 Linux
模块的加载过程二(下)
模块的加载过程二(下)
152 0
|
Linux
模块的加载过程四
模块的加载过程四
146 0
|
存储 Linux C语言
模块的加载过程一
模块的加载过程一
164 0
|
Linux
模块的加载过程二(上)
模块的加载过程二
104 0
|
缓存 JavaScript 开发者
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
快速学习 require 函数加载模块原理(被加载的模块会先执行一次)
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
|
JSON JavaScript 前端开发
提取 router.js 模块02(顺带封装 handler.js 模块中的方法)|学习笔记
快速学习提取 router.js 模块02(顺带封装 handler.js 模块中的方法)
提取 router.js 模块02(顺带封装 handler.js 模块中的方法)|学习笔记