Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ JavaScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 37

Автор ΠœΠ°Ρ€Π΅ΠΉΠ½ Π₯Π°Π²Π΅Ρ€Π±Π΅ΠΊΠ΅

  console.log(weekDay.name(today.dayNumber()));

});

Ѐункция define здСсь самая ваТная. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив ΠΈΠΌΡ‘Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· зависимостСй. Она Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ зависимости (Ссли ΠΎΠ½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Ρ€Π°Π½Π΅Π΅) Π² Ρ„ΠΎΠ½Π΅, позволяя страницС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Когда всё Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ, define Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, с интСрфСйсами этих зависимостСй Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π—Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ define. Π’ качСствС ΠΈΡ… интСрфСйса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π² define. Π’ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ weekDay:

define([], function() {

  var names = ["ПонСдСльник", "Π’Ρ‚ΠΎΡ€Π½ΠΈΠΊ", "Π‘Ρ€Π΅Π΄Π°", "Π§Π΅Ρ‚Π²Π΅Ρ€Π³", "ΠŸΡΡ‚Π½ΠΈΡ†Π°", "Π‘ΡƒΠ±Π±ΠΎΡ‚Π°", "Π’ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅"];

  return {

    name: function(number) { return names[number]; },

    number: function(name) { return names.indexOf(name); }

  };

});

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ define, притворимся, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ функция backgroundReadFile, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с содСрТимым этого Ρ„Π°ΠΉΠ»Π°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½. (Π’ Π³Π»Π°Π²Π΅ 17 Π±ΡƒΠ΄Π΅Ρ‚ объяснСно, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ).

Π§Ρ‚ΠΎΠ± ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ, define ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ состояниС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, сообщаСт Π½Π°ΠΌ, доступны Π»ΠΈ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅, ΠΈ прСдоставляСт ΠΈΡ… интСрфСйс ΠΏΠΎ доступности.

Ѐункция getModule ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ убСТдаСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ поставлСн Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹.

var defineCache = Object.create(null);

var currentMod = null;


function getModule(name) {

  if (name in defineCache)

    return defineCache[name];


  var module = {exports: null,

                loaded: false,

                onLoad: []};

  defineCache[name] = module;

  backgroundReadFile(name, function(code) {

    currentMod = module;

    new Function("", code)();

  });

  return module;

}

ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ‚ΠΎΠΆΠ΅ содСрТит Π²Ρ‹Π·ΠΎΠ² define. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ currentMod ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ этому Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ модуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ смог ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠœΡ‹ Π΅Ρ‰Ρ‘ вСрнёмся ΠΊ этому ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ.

Ѐункция define сама ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ getModule для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для зависимостСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ модуля. Π•Ρ‘ Π·Π°Π΄Π°Ρ‡Π° – Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ moduleFunction (содСрТащСй сам ΠΊΠΎΠ΄ модуля) послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ зависимостСй. Для этого ΠΎΠ½Π° опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ whenDepsLoaded, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π² массив onLoad, содСрТащий всС ΠΏΠΎΠΊΠ° Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ зависимости. Π­Ρ‚Π° функция сразу ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ссли Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π½Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ зависимости, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° послСдняя Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ загрузится. Она Ρ‚Π°ΠΊΠΆΠ΅ вызываСтся сразу ΠΈΠ· самого define, Π² случаС ΠΊΠΎΠ³Π΄Π° Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ зависимости Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ.

function define(depNames, moduleFunction) {

  var myMod = currentMod;

  var deps = depNames.map(getModule);


  deps.forEach(function(mod) {

    if (!mod.loaded)

      mod.onLoad.push(whenDepsLoaded);

  });


  function whenDepsLoaded() {

    if (!deps.every(function(m) { return m.loaded; }))

      return;


    var args = deps.map(function(m) { return m.exports; });

    var exports = moduleFunction.apply(null, args);

    if (myMod) {

      myMod.exports = exports;

      myMod.loaded = true;

      myMod.onLoad.every(function(f) { f(); });

    }

  }

  whenDepsLoaded();

}

Когда всС зависимости доступны, whenDepsLoaded Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, пСрСдавая Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² интСрфСйсы зависимостСй.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ define, это сохраняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ currentMod, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Ρƒ Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅, Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ myMod. ВспомнитС, Ρ‡Ρ‚ΠΎ getModule прямо ΠΏΠ΅Ρ€Π΅Π΄ исполнСниСм ΠΊΠΎΠ΄Π° модуля сохранил ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля Π² currentMod. Π­Ρ‚ΠΎ позволяСт whenDepsLoaded Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ модуля Π² свойствС exports этого модуля, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойство loaded модуля Π² true, ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ТдавшиС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ тяТСлСС, Ρ‡Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ require. Π•Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΏΠΎ простому ΠΈ прСдсказуСмому ΠΏΡƒΡ‚ΠΈ. ВмСсто этого, нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ρ‡Ρ‚ΠΎ затрудняСт изучСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выполняСтся этот ΠΊΠΎΠ΄.

Настоящая рСализация AMD Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠΌΠ½Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΈΠΌΡ‘Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² URL ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Ρ‘ΠΆΠ½Π°, Ρ‡Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ RequireJS прСдоставляСт ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ стиля Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйса

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйсов – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π›ΡŽΠ±ΡƒΡŽ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСством способов. Поиск Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ способа Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ интСрфСйса – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ интСрфСйсов. НСкоторыС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ»ΠΎΡ…ΠΈΠ΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅. ΠžΠΏΡ‹Ρ‚ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° Ρ‡Ρ‚ΠΎ – Π½Π΅Ρ‚. Никогда Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅ ΠΏΠ»ΠΎΡ…ΠΎΠΉ интСрфСйс. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ, ΠΈΠ»ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

Если программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваш интСрфСйс, Π΅ΠΌΡƒ Π½Π΅ придётся часто ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ подсказку ΠΏΠΎ Π΅Π³ΠΎ использованию. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ общСпринятым соглашСниям. Если Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ языка JavaScript, которая Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ – Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли ваш интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅Π½ для людСй, Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйсом.

Π’ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ вашСго ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½Π°. Вас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΈΡΠΊΡƒΡˆΠ΅Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ интСрфСйс слишком Π·Π°ΡƒΠΌΠ½Ρ‹ΠΌ якобы ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Β«Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎΒ». Или ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ дСсятки спСциализированных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π° ваш интСрфСйс, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Π·Π°Ρ‚ΠΎ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ людям, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ с Π½ΠΈΠΌ, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‡Ρ‘Ρ‚ΠΊΡƒΡŽ ΠΌΡ‹ΡΠ»Π΅Π½Π½ΡƒΡŽ модСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго модуля.

ΠšΠΎΠΌΠΏΠΎΠ½ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² интСрфСйсах Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ простыС структуры Π΄Π°Π½Π½Ρ‹Ρ…, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π”Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выполняли простыС ΠΈ понятныС Π²Π΅Ρ‰ΠΈ. Если это ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ чистыми (см. Π“Π»Π°Π²Ρƒ 3).

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ свою Π²Π΅Ρ€ΡΠΈΡŽ массивоподобных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² со своим интСрфСйсом для подсчёта ΠΈ извлСчСния элСмСнтов. Π£ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² map ΠΈΠ»ΠΈ forEach, ΠΈ никакая функция, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π°Ρ настоящий массив, Π½Π΅ смоТСт с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»ΠΎΡ…ΠΎΠΉ компонуСмости – ΠΌΠΎΠ΄ΡƒΠ»ΡŒ нСльзя Π»Π΅Π³ΠΊΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для орфографичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π» с Π»ΡŽΠ±Ρ‹ΠΌΠΈ слоТными структурами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ самим Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π» Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° для прСдоставлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±ΠΎΡ€Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² написания. Если Π²Ρ‹ поступитС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ нСльзя Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ интСрфСйс модуля ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ строку ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² строкС Π΅ΡΡ‚ΡŒ возмоТная ошибка, Π° Π²ΠΏΡ€ΠΈΠ΄Π°Ρ‡Ρƒ – массив ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠΏΡ€Π°Π²ΠΎΠΊ, Ρ‚ΠΎΠ³Π΄Π° Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ строки ΠΈ массивы всСгда доступны Π² JavaScript.

ΠœΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½Ρ‹Π΅ интСрфСйсы

Разрабатывая интСрфСйс для слоТной систСмы (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° e-ΠΌΠ΅ΠΉΠ»), часто ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡˆΡŒ ΠΊ Π΄ΠΈΠ»Π΅ΠΌΠΌΠ΅. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ интСрфСйса дСталями. НС Π½Π°Π΄ΠΎ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ 20 ΠΌΠΈΠ½ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ смогут ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ e-ΠΌΠ΅ΠΉΠ». Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π΅ хочСтся ΠΈ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ всС Π΄Π΅Ρ‚Π°Π»ΠΈ – ΠΊΠΎΠ³Π΄Π° людям Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ слоТноС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ вашСго модуля, Ρƒ Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Часто приходится ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ Π΄Π²Π° интСрфСйса: Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ для слоТных ситуаций, ΠΈ простой высокоуровнСвый для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ использования. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° основС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ e-ΠΌΠ΅ΠΉΠ»ΠΎΠ² высокоуровнСвый интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС, адрСс получатСля ΠΈ отправитСля, ΠΈ отправляСт письмо. НизкоуровнСвый Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π°Π²Π°Ρ‚ΡŒ доступ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, HTML письмам ΠΈ Ρ‚. Π΄.

Π˜Ρ‚ΠΎΠ³

ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, раздСляя ΠΊΠΎΠ΄ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ пространствам ΠΈΠΌΡ‘Π½. Если ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΡ… Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ интСрфСйсами, ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ самого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.