Три мифа о Require.js

в 14:05, , рубрики: javascript, require.js, requirejs, мифы, метки: , ,

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

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

Миф #1

Описание

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

Это самое распространенное заблуждение. Динамическую подгрузку зависимостей можно и нужно использовать во время разработки. На продакшне же, все это добро будет собрано в один js файл с помощью r.js и минифицировано с помощью 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js