欢迎来到代码驿站!

当前位置:首页 >

nodejs中 require 方法的加载规则

时间:2020-05-14 09:19:59|栏目:|点击:
require 方法的加载规则:
  •     优先从缓存中加载
  •     核心模块
  •     路径形式的模块
  •     第三方模块
一、优先从缓存中加载

main.js:执行加载a.js模块
require('./a')
a.js:执行加载b.js模块,并输出a被加载了
require('./b')
console.log('loadseqa loaded...');
b.js:输出b被加载了
console.log('loadseqb loaded...');
结果:


可以看出:main去加载a.js,然后a在去加载b.js过程中,并没有打印两次 a.js被加载,Node会直接从require.cache中根据传入的id,取出该对象的exports值,不会再次执行该模块代码。
二、核心模块
    核心模块的本质也是文件,核心模块文件已经被编译到了二进制文件中了,我们只需要按照名字来加载就可以了。如:
require(‘fs’)
require(‘http’)
三、路径形式的模块
    我们说的路径形式的模块,其实就是加载自己写的JS文件,有四种方式可以加载
var fooExports = require('./index')    //相对路径,常用
var fooExports = require('../index')    //相对路径,常用
var fooExports = require('/index')    //根目录,不常用
var fooExports = require('D:/demo/index')    //根目录,不常用
四、第三方模块

    凡是用到第三方模块,都必须通过 npm 来下载
    使用的时候就可以通过 require(‘包名’) 的方式来进行加载才可以使用
    不可能有任何一个第三方包和核心模块的名字是一样的

    既不是核心模块、也不是路径形式的模块,就是第三方模块。加载方式如下

以 var template = require(‘art-template’) 为例:

    先找到当前文件所处目录中的 node_modules 目录
    然后根据以下方式找到文件中的 main 属性
    main 属性中就记录了 art-template 的入口模块
    然后加载使用这个第三方包,但是实际上最终加载的还是文件
    如果 package.json 文件不存在或者 main 指定的入口模块是也没有
    则 node 会自动找该目录下的 index.js,也就是说 index.js 会作为一个默认备选项
    如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
    如果上一级还没有,则继续往上上一级查找

    如果直到当前磁盘根目录还找不到,最后报错: can not find module xxx

第三方模块寻找顺序:  node_modules/art-template	  >    package.json 文件   >   main 属性 >   index.js

上一篇:pdf.js在线PDF浏览插件的使用

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:nodejs中 require 方法的加载规则

本文地址:http://www.codeinn.net/misctech/2270.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有