开发者学堂课程【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( " htt
p
”)
//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 模块