Spec-Zone.ru › webpack 1

AMD

AMD (Asynchronous Module Definition) был ответом тем, кто считал, что система модулей CommonJS не готова к использованию в браузере из-за своей синхронной природы.

AMD определяет стандарт для модульного JavaScript, позволяющий модулям загружать свои зависимости асинхронно, устраняя проблемы, связанные с синхронной загрузкой.

Спецификация

Модули определяются с помощью функции define.

define

Функция define используется для определения модулей в AMD. Это просто функция с таким сигнатуром

define(id?: String, dependencies?: String[], factory: Function|Object);
id

Указывает имя модуля. Оно необязательно.

dependencies

Этот аргумент указывает, от каких модулей зависит определяемый модуль. Это массив, содержащий идентификаторы модулей. Он необязателен, но если его опустить, по умолчанию используется [“require”, “exports”, “module”].

factory

Последний аргумент определяет сам модуль. Это может быть функция (которая должна быть вызвана один раз) или объект. Если фабрика — функция, возвращаемое значение будет экспортируемым значением модуля.

Примеры

Давайте рассмотрим несколько примеров:

Именованный модуль

Определяет модуль с именем myModule , который требует jQuery.

define('myModule', ['jquery'], function($) {
    // $ is the export of the jquery module.
    $('body').text('hello world');
});
// and use it
require(['myModule'], function(myModule) {});

Примечание: В webpack именованный модуль доступен только локально. В Require.js именованный модуль доступен глобально.

Анонимный модуль

Определяет модуль без указания его идентификатора.

define(['jquery'], function($) {
    $('body').text('hello world');
});

Несколько зависимостей

Определяет модуль с несколькими зависимостями. Обратите внимание, что каждое экспортируемое значение зависимости будет передано в функцию фабрики.

define(['jquery', './math.js'], function($, math) {
    // $ and math are the exports of the jquery module.
    $('body').text('hello world');
});

Экспортируемое значение

Определяет модуль, который экспортирует себя.

define(['jquery'], function($) {

    var HelloWorldize = function(selector){
        $(selector).text('hello world');
    };

    return HelloWorldize;
});

Использование require для загрузки зависимостей

define(function(require) {
    var $ = require('jquery');
    $('body').text('hello world');
});

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

Spec-Zone.ru

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