zoukankan      html  css  js  c++  java
  • nodejs的require是如何执行的

    通常,在Node.js里导入是通过 require函数调用进行的。
    Node.js会根据 require的是相对路径还是非相对路径做出不同的行为。

    相对路径

    相对路径很简单。 例如,假设有一个文件路径为 /root/src/moduleA.js,包含了一个导入

    var x = require("./moduleB"); 

    Node.js以下面的顺序解析这个导入:

    1. 检查/root/src/moduleB.js文件是否存在。
    2. 检查/root/src/moduleB目录是否包含一个package.json文件,且package.json文件指定了一个"main"模块。 在我们的例子里,如果Node.js发现文件 /root/src/moduleB/package.json包含了{ "main": "lib/mainModule.js" },那么Node.js会引用/root/src/moduleB/lib/mainModule.js。
    3. 检查/root/src/moduleB目录是否包含一个index.js文件。 这个文件会被隐式地当作那个文件夹下的"main"模块。

    非相对路径

    非相对模块名的解析是个完全不同的过程。
    Node会在一个特殊的文件夹 node_modules里查找你的模块。
    node_modules可能与当前文件在同一级目录下,或者在上层目录里。
    Node会向上级目录遍历,查找每个 node_modules直到它找到要加载的模块。
    假设/root/src/moduleA.js里使用的是非相对路径导入:

    var x = require("moduleB");

    Node则会以下面的顺序去解析 moduleB,直到有一个匹配上。

    /root/src/node_modules/moduleB.js
    /root/src/node_modules/moduleB/package.json (如果指定了"main"属性)
    /root/src/node_modules/moduleB/index.js 

    /root/node_modules/moduleB.js
    /root/node_modules/moduleB/package.json (如果指定了"main"属性)
    /root/node_modules/moduleB/index.js 

    /node_modules/moduleB.js
    /node_modules/moduleB/package.json (如果指定了"main"属性)
    /node_modules/moduleB/index.js
    注意Node.js在步骤(4)和(7)会向上跳一级目录。

  • 相关阅读:
    tp5项目后台比赛界面
    总结7.21 lavarel视图
    总结7.20 laravel自动验证
    java学习day78--JT项目16(CORS跨域/HttpCLient/jt-sso单点登录)
    java学习day77-JT项目15(Ajax跨域访问/JSONP)
    java学习day77-JT项目15(Redis集群算法/spring boot整合redis集群)
    java学习day76-JT项目14(Redis集群搭建)
    java学习day76-JT项目14(Redis分片机制/哨兵机制)
    检查Linux中发现没有IP
    java学习day75-JT项目13(AOP实现redis缓存/Redis缓存)
  • 原文地址:https://www.cnblogs.com/liulun/p/11049455.html
Copyright © 2011-2022 走看看