Stuffcheck

Π‘Π»ΠΎΠ³ ΠΎ практичСском ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, систСмном Π΄ΠΈΠ·Π°ΠΉΠ½Π΅, инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ создании быстрых минималистичных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Β· 3 ΠΌΠΈΠ½ чтСния Β· Π ΠΈΡ‡Π°Ρ€Π΄ Π‘ΠΎΠ²Π΅Π»Π» Β· JavaScript Is Sexy

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² JavaScript

Как ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ каскадных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ каскадированиС β€” это Π²Ρ‹Π·ΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² подряд Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ инструкции. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Π²Ρ€ΠΎΠ΄Π΅ jQuery, интСрфСйсам построитСлСй запросов ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΈ массивами Π² JavaScript.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ классичСский построчный Π²Ρ‹Π·ΠΎΠ² с Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ:

// Π‘Π΅Π· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:
const str = "hello world";
const replaced = str.replace("h", "H");
const upper = replaced.toUpperCase();
const result = upper.slice(0, 5);

// Π‘ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:
const result = "hello world"
  .replace("h", "H")
  .toUpperCase()
  .slice(0, 5);

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ читаСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΊΠ°ΠΊ связноС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Он избавляСт ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ лишь для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ состояния Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ каскадированиС

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° проста: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ контСкст ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this.

Когда ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ this, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ самом экзСмплярС:

const calculator = {
  value: 0,

  add(n) {
    this.value += n;
    return this;
  },

  multiply(n) {
    this.value *= n;
    return this;
  },

  reset() {
    this.value = 0;
    return this;
  },

  result() {
    return this.value;
  },
};

const total = calculator.add(10).multiply(2).result(); // 20

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ add ΠΈ multiply ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ this, позволяя ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. Π—Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ result Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вычислСнноС числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ каскад.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ с Ρ†Π΅ΠΏΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ для поиска, форматирования ΠΈ отрисовки:

const users = [
  { id: 101, firstName: "ΠΈΠ²Π°Π½", lastName: "ΠΈΠ²Π°Π½ΠΎΠ²", email: "ivan@example.com" },
  { id: 102, firstName: "Π°Π½Π½Π°", lastName: "смирнова", email: "anna@example.com" },
];

function capitalize(text) {
  return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
}

const userController = {
  currentUser: null,
  renderedView: "",

  findUser(email) {
    this.currentUser = users.find((user) => user.email === email) || null;
    return this;
  },

  formatName() {
    if (!this.currentUser) return this;

    this.currentUser.fullName = [
      capitalize(this.currentUser.firstName),
      capitalize(this.currentUser.lastName),
    ].join(" ");

    return this;
  },

  render() {
    if (!this.currentUser) return this;

    this.renderedView = `
      <div class="user-card">
        <h2>${this.currentUser.fullName}</h2>
        <p>Email: ${this.currentUser.email}</p>
      </div>
    `;

    return this;
  },

  mount(targetSelector) {
    if (!this.renderedView) return;
    const container = document.querySelector(targetSelector);
    if (container) {
      container.innerHTML = this.renderedView;
    }
  },
};

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ Π½Π°Π³Π»ΡΠ΄Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

userController
  .findUser("anna@example.com")
  .formatName()
  .render()
  .mount("#profile");

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ практичСскиС сообраТСния

ΠšΠ°ΡΠΊΠ°Π΄Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ взвСшСнного примСнСния:

  • МСньшС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. НС Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.
  • Π•Π΄ΠΈΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ чтСния. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ…Ρ€ΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • Π‘Π°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. Если ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Π²Π°Π½Ρ‹ Π³Π»Π°Π³ΠΎΠ»Π°ΠΌΠΈ (findUser, formatName, render), Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° читаСтся ΠΊΠ°ΠΊ понятный сцСнарий дСйствий.

ΠŸΡ€ΠΈ этом стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅: ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. РаздСляйтС Π²Ρ‹Π·ΠΎΠ²Ρ‹ пСрСносом строк, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ расстановку Ρ‚ΠΎΡ‡Π΅ΠΊ останова.