【问题标题】:How does require(../) in node.js work?node.js 中的 require(../) 是如何工作的?
【发布时间】:2012-09-19 10:43:23
【问题描述】:

node.js 遇到 var foo=require(../) 时会寻找哪些模块?

看起来它会从当前目录向上查找一个目录,但它究竟会查找和做什么?

也许与 C 中的 include 或 Python 中的 import 有一个类比?

我一直从 node.js 开始阅读 http://nodejs.org/api/modules.html 并在 github 上找到了示例代码,例如

var express = require('express')
  , tracker = require('../')

这段代码似乎在使用 npm 安装 express 后分配 express 模块(文件)的变量 express 内容,其路径必须是全局的,这似乎可以理解,尽管我知道有两种类型模块安装,但这是另一个问题。

但是什么内容被分配给变量tracker

【问题讨论】:

标签: javascript node.js


【解决方案1】:

这取决于该目录中的内容。

如果 X 以 './' 或 '/' 或 '../' 开头

一个。 LOAD_AS_FILE(Y + X)
湾。 LOAD_AS_DIRECTORY(Y + X)

LOAD_AS_FILE(X):

  1. 如果 X 是文件,则将 X 作为 JavaScript 文本加载。停止
  2. 如果 X.js 是文件,则将 X.js 作为 JavaScript 文本加载。停止
  3. 如果 X.node 是文件,则将 X.node 作为二进制插件加载。停止

LOAD_AS_DIRECTORY(X):

  1. 如果 X/package.json 是一个文件,
    一种。解析 X/package.json,然后查找“main”字段。
    湾。让 M = X + (json 主字段)
    C。 LOAD_AS_FILE(M)
  2. 如果 X/index.js 是文件,则将 X/index.js 作为 JavaScript 文本加载。停止
  3. 如果 X/index.node 是一个文件,则将 X/index.node 作为二进制插件加载。停止

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2020-10-10
    • 2018-06-22
    相关资源
    最近更新 更多