Node.js модульная система
Для того, чтобы файл Node.js могут звонить друг другу, Node.js обеспечивает простую модульную систему.
Модуль является неотъемлемой частью Node.js приложений, файлов и модулей один к одному. Другими словами, Node.js файл представляет собой модуль, этот файл может быть код JavaScript, JSON или скомпилированных расширений C / C ++.
Создайте модуль
В Node.js, создать модуль очень прост, так как мы создаем файл 'main.js', следующим образом:
var hello = require('./hello'); hello.world();
В приведенном выше примере, код требует ( './ привет') представил текущий каталог hello.js файл (./ текущий каталог, node.js по умолчанию суффикс JS).
Node.js обеспечивает экспорт и требуют два объекта, где экспорт являются открытые интерфейсы модуля требуется модуль для приобретения от внешнего интерфейса, а именно модуль экспорта целевого приобретения.
Далее мы приходим, чтобы создать файл hello.js, следующим образом:
exports.world = function() { console.log('Hello World'); }
В приведенном выше примере, hello.js экспорта по миру в качестве интерфейсного модуля доступа к объектам, этот модуль в main.js загружен с помощью требует ( './ привет'), то вы можете получить прямой доступ членов hello.js объекта в экспорте функция.
Иногда мы просто хотим, чтобы упаковать модуль объекта, формат выглядит следующим образом:
module.exports = function() { // ... }
Например:
//hello.js function Hello() { var name; this.setName = function(thyName) { name = thyName; }; this.sayHello = function() { console.log('Hello ' + name); }; }; module.exports = Hello;
Таким образом, вы получаете прямой объект:
//main.js var Hello = require('./hello'); hello = new Hello(); hello.setName('BYVoid'); hello.sayHello();
Единственное изменение является использование модуля интерфейса module.exports = Hello заменен exports.world = функция () {}. При ссылке на внешний модуль, Hello объект, интерфейс объект должен быть сам по себе выход, а не оригинальные экспорта.
Где поставить серверный модуль
Возможно, вы заметили, что мы использовали в коде модуля. Как это:
var http = require("http"); ... http.createServer(...);
Node.js поставляется с функцией под названием модуля "HTTP", мы просим его вернуть значение локальной переменной в нашем коде.
Это приводит нас в локальную переменную имеет все публичные методы модуль HTTP предоставляет объект.
Node.js методы требуют стратегия поиска файла выглядит следующим образом:
Поскольку существует четыре модуля класса (первичный модуль и три модуля файла) Node.js, хотя требуется метод чрезвычайно прост, но внутри это очень сложная нагрузка, нагрузка их приоритеты различны. Как показано ниже:
Загруженный из модуля кэш-файла
Несмотря на различные приоритеты модуля собственного модуля и файла, но он не будет иметь приоритет над существующий файл загрузки модуля из модуля кэш-памяти.
Загрузка из родного модуля
Приоритет Native модуль после модуля кэш приоритет файла. требуются методы после разбора имени файла, проверьте приоритет ли модуль в родном списке модулей. В модуле HTTP, например, хотя есть HTTP / http.js / http.node / http.json файл в каталоге, требуют ( "HTTP") не будет загружаться из файла, но загружаются из родного модуля.
Родной модуль также имеет буферную зону, он также предпочтительно загружается из кэша. Если буфер не загружен раньше, а затем вызвать родной модуль загрузки будет загружен и выполнен.
Загрузить из файла
Если файл не существует в модуле кэша, а не собственный модуль, когда Node.js потребует аналитического метода входящих параметров, а также загружать фактический файл из файловой системы, процесс загрузки и компиляции детали упаковки в предыдущем разделе Он был введен, где мы будем подробно описывать процесс, чтобы найти файл модуля, который также имеет некоторые детали стоит знать.
требуется способ передачи принимает следующие параметры:
- HTTP, фс, путь и т.д., собственный модуль.
- ./mod или ../mod, относительный путь к файлу модуля.
- / Pathtomodule / мод, абсолютный путь модуля файла.
- мод, неродного модуль файла модуля.