2013-03-18 2 views

ответ

13

Вот ответ:

Module.prototype.load = function(filename) { 
    debug('load ' + JSON.stringify(filename) + 
     ' for module ' + JSON.stringify(this.id)); 

    assert(!this.loaded); 
    this.filename = filename; 
    this.paths = Module._nodeModulePaths(path.dirname(filename)); 

    var extension = path.extname(filename) || '.js'; 
    if (!Module._extensions[extension]) extension = '.js'; 
    Module._extensions[extension](this, filename); 
    this.loaded = true; 
}; 
  1. Node.JS смотрит, если данный модуль является основным модулем. (например, http, fs и т. д.) Всегда занимает приоритет в модулях загрузки.
  2. Если данный модуль не является модуль ядра (например http, fs и т.д.), Node.js начнет искать каталог с именем, node_modules.
    Он начнется в текущем каталоге (относительно текущего исполняемого файла в Node.JS), а затем прокладывает путь по иерархии папок, проверяя каждый уровень для папки node_modules. После того, как Node.JS найдет папку node_modules, она попытается загрузить данный модуль либо как (.js) JavaScript-файл, либо как именованный подкаталог; если он найдет именованный подкаталог, он попытается загрузить файл по-разному. Так, например
  3. Если вы сделаете запрос на загрузку модуля «Utils» и его каталог не .js файл, то:
    Node.JS будет искать иерархический каталог для node_modules и utils следующими способами:
    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
  4. Если Node.JS до сих пор не может найти файл в вышеуказанных шагов, Node.js будет затем начать смотреть в пути к каталогу из переменных окружения, т.е. NODE_PATH, установленный на вашем компьютере (очевидно, установленным файлом установщика Node.JS, если вы на окнах) Не найден во всех вышеперечисленных шагах, затем трассирует трассировку стека до stder
    E.g.: Error:Cannot find module 'yourfile'
    Для получения дополнительной информации: ссылка here даже циклические требует() объясняется очень хорошо.
+0

Но какая разница? Оба работают для меня .. – 2013-03-18 08:17:40

+2

Вы не уверены в ответе? Рассмотрим выше логику и подумайте, что вы пишете алгоритм, а затем переходите через эту [ссылку] (http://en.wikipedia.org/wiki/Algorithmic_efficiency) –

+0

Спасибо за ваш ответ – 2013-03-18 12:04:38

Смежные вопросы