- PVSM.RU - https://www.pvsm.ru -

Три мифа о Require.js

imageТак сложилось, что в большинстве своих проектов я использую Require.js.
Более того, часто я пытаюсь поставить на путь истинный окружающих меня людей, всячески подталкивая их к использованию этой библиотеки.
Именно поэтому я очень часто сталкиваюсь с мифами, которые каждый раз приходится разрушать для каждого собеседника:

  1. Из-за динамической подгрузки зависимостей (скриптов), и как следствие, огромного количества HTTP запросов, приложение с Require.js очень медленно запускается.
  2. Работа самой библиотеки требует слишком много памяти. В результате — приложение без Require.js будет работать намного быстрее.
  3. Описывать модули очень неудобно, наличие необходимости писать избыточный и непонятный код.

Миф #1

Описание

Из-за динамической подгрузки зависимостей (скриптов), и как следствие, огромного количества HTTP запросов, приложение с Require.js очень медленно запускается.

Это самое распространенное заблуждение. Динамическую подгрузку зависимостей можно и нужно использовать во время разработки. На продакшне же, все это добро будет собрано в один js файл с помощью r.js [1] и минифицировано с помощью uglify.js или ему подобным.

Миф #2

Описание

Работа самой библиотеки требует слишком много памяти. В результате — приложение без Require.js будет работать намного быстрее.

Работа requirejs на продакшне (без необходимости загружать зависимости дополнительными запросами) будет вовсе неощутимой.

Миф #3

Описание

Описывать модули очень неудобно, наличие необходимости писать избыточный и непонятный код.

Не нужно также забывать за возможность замены такого синтаксиса:

define(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC) {
    // use moduleA, moduleB and moduleC here
    return {
        // new module here
    };
});

таким:

define(function (require) {
    var moduleA = require('moduleA'),
        moduleB = require('moduleB'),
        moduleC = require('moduleC');
    // use moduleA, moduleB and moduleC here
    return {
        // new module here
    };
});

Черновик этого поста создавался очень давно, до нынешней популярности Node.js. Но теперь использование синтаксиса require.js в JavaScript, похоже, стало более привычным.

Думаю, многие уже давно для удобства завели себе сниппеты для использования конструкция require.js, что делает возможным в 2-3 клавиши создавать такие модули.

Бонусы от require.js

Автор: Leestex

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/60127

Ссылки в тексте:

[1] r.js: http://requirejs.org/docs/optimization.html

[2] Packages: http://requirejs.org/docs/api.html#packages

[3] Подгрузка темплейтов с помощью плагинов (напр. text): http://requirejs.org/docs/api.html#text

[4] Удобное управление версиями библиотек/кода: https://github.com/artyomtrityak/kievjs_requirejs/blob/master/slides/r15.png

[5] Множество полезных плагинов, таких как i18n: http://requirejs.org/docs/api.html#i18n

[6] Источник: http://habrahabr.ru/post/195286/