Spec-Zone.ru › webpack 1

Commonjs

Группа CommonJS определила формат модулей для решения проблем с областью видимости JavaScript, гарантируя, что каждый модуль выполняется в своём собственном пространстве имён.

Это достигается за счёт принудительного явного экспорта переменных, которые модуль хочет сделать доступными «вселенной», а также за счёт определения других модулей, необходимых для корректной работы.

Для этого CommonJS предоставляет два инструмента:

  1. функцию require(), которая позволяет импортировать данный модуль в текущую область видимости.
  2. объект module, который позволяет экспортировать что-либо из текущей области видимости.

Обязательный пример “hello world”:

Простой JavaScript

Вот пример без CommonJS:

Мы определим значение в файле скрипта с именем salute.js. Этот скрипт будет содержать только значение, которое будет использовано в других скриптах:

// salute.js
var MySalute = "Hello";

Теперь, во втором файле с именем world.js, мы будем использовать значение, определённое в salute.js.

// world.js
var Result = MySalute + " world!";

Определения модулей

Как есть, world.js не будет работать, так как MySalute не определено. Нам нужно определить каждый скрипт как модуль:

// salute.js
var MySalute = "Hello";
module.exports = MySalute;
// world.js
var Result = MySalute + "hello world!";
module.exports = Result;

Здесь мы используем специальный объект module и помещаем ссылку на нашу переменную в module.exports, чтобы система модулей CommonJS знала, что это объект нашего модуля, который мы хотим показать миру. salute.js раскрывает MySalute, а world.js раскрывает Result.

Зависимость модулей

Мы близки, но всё ещё недостаёт шага: определение зависимостей. Мы уже определили каждый скрипт как независимый модуль, но world.js всё ещё нужно знать, кто определяет MySalute:

// salute.js
var MySalute = "Hello";
module.exports = MySalute;
// world.js
var MySalute = require("./salute");
var Result = MySalute + "world!";
module.exports = Result;

Обратите внимание, что мы не использовали полное имя файла salute.js , а ./salute при вызове require, поэтому вы можете опустить расширение своих скриптов. ./ означает, что модуль salute находится в той же директории, что и модуль world.

Примеры

Функции

// moduleA.js
module.exports = function( value ){
    return value*2;
}
// moduleB.js
var multiplyBy2 = require('./moduleA');
var result = multiplyBy2( 4 );

© 2012–2015 Tobias Koppers
Licensed under the MIT License.
https://webpack.github.io/docs/commonjs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API