首頁 >web前端 >js教程 >穩健 Web 開發的基本 JavaScript 設計模式

穩健 Web 開發的基本 JavaScript 設計模式

Barbara Streisand
Barbara Streisand原創
2025-01-22 18:33:10809瀏覽

ssential JavaScript Design Patterns for Robust Web Development

作為一位多產的作家,我鼓勵您在亞馬遜上探索我的書。 請記得關注我在 Medium 上的工作以獲得持續的支持。謝謝你!非常感謝您的支持!

JavaScript 設計模式對於建立健全、可擴充和可維護的 Web 應用程式是不可或缺的。 我的經驗表明,整合這些模式可以顯著提高程式碼品質並降低複雜性。讓我們來看看可以改變 JavaScript 開發的七種關鍵設計模式。

揭示模組模式是一種強大的技術,用於創建具有明確定義的公共和私有元素的封裝程式碼。 這種模式允許控制功能的暴露,同時屏蔽實現細節。考慮這個例子:

<code class="language-javascript">const myModule = (function() {
  let privateVar = 'I am private';

  function privateMethod() {
    console.log('This is a private method');
  }

  function publicMethod() {
    console.log('This is a public method');
    console.log(privateVar);
    privateMethod();
  }

  return {
    publicMethod: publicMethod
  };
})();

myModule.publicMethod();</code>

此模組有效地隱藏了內部變數和方法,僅暴露publicMethod。這可以促進更好的封裝並最大限度地減少大型專案中的命名衝突。

Pub/Sub(發布者/訂閱者)模式對於實現應用程式元件之間的鬆散耦合至關重要。物件可以在沒有直接依賴關係的情況下進行通信,從而提高了靈活性。 這是一個基本的實作:

<code class="language-javascript">const PubSub = {
  events: {},
  subscribe: function(eventName, fn) {
    this.events[eventName] = this.events[eventName] || [];
    this.events[eventName].push(fn);
  },
  publish: function(eventName, data) {
    if (this.events[eventName]) {
      this.events[eventName].forEach(fn => fn(data));
    }
  }
};

PubSub.subscribe('userLoggedIn', user => console.log(`${user} logged in`));
PubSub.publish('userLoggedIn', 'John');</code>

這種模式在大型應用程式中特別有價值,在這些應用程式中,獨立元件需要回應事件而沒有緊密的相互依賴性。

依賴注入是一種透過向模組提供依賴關係而不是讓它們在內部創建依賴關係來反轉控制的模式。這提高了可測試性和靈活性。 這是一個例子:

<code class="language-javascript">class UserService {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }

  getUser(id) {
    return this.httpClient.get(`/users/${id}`);
  }
}

const httpClient = {
  get: url => fetch(url).then(response => response.json())
};

const userService = new UserService(httpClient);
userService.getUser(1).then(user => console.log(user));</code>

注入 httpClient 可以輕鬆替換或模擬 HTTP 用戶端以進行測試。

裝飾器模式動態地為物件添加行為而不修改其結構。當擴充功能而無需子類化時,這是有利的。 這是一個例子:

<code class="language-javascript">function Coffee() {
  this.cost = function() {
    return 5;
  };
}

function MilkDecorator(coffee) {
  const cost = coffee.cost();
  coffee.cost = function() {
    return cost + 2;
  };
}

function WhipDecorator(coffee) {
  const cost = coffee.cost();
  coffee.cost = function() {
    return cost + 1;
  };
}

const myCoffee = new Coffee();
MilkDecorator(myCoffee);
WhipDecorator(myCoffee);

console.log(myCoffee.cost()); // 8</code>

這允許在不改變 Coffee 類本身的情況下添加「牛奶」和「鞭子」。

指令模式將方法呼叫封裝為物件。這將呼叫者與執行分離,從而啟用撤消/重做等功能。 這是一個示範:

<code class="language-javascript">class Light {
  turnOn() {
    console.log('Light is on');
  }

  turnOff() {
    console.log('Light is off');
  }
}

class TurnOnCommand {
  constructor(light) {
    this.light = light;
  }

  execute() {
    this.light.turnOn();
  }
}

// ... (rest of the code remains the same)</code>

這有利於管理和排序操作。

複合模式將物件建構成樹狀層次結構,允許對單一物件及其組合進行統一處理。

<code class="language-javascript">class File {
  constructor(name) {
    this.name = name;
  }

  display() {
    console.log(this.name);
  }
}

// ... (rest of the code remains the same)</code>

這對於表示分層資料結構很有用。

中介模式管理物件之間的通信,促進鬆散耦合。 這對於具有許多互動組件的複雜系統尤其有用。

有效應用這些模式需要仔細考慮應用程式的特定需求。 應避免過度使用;有時,較簡單的解決方案較可取。 優先考慮乾淨、可讀和可維護的程式碼。

透過實際應用,您將對這些模式的優點和限制有深入的了解。 掌握這七種 JavaScript 設計模式可以顯著增強您創建高品質、可維護軟體的能力。


101本書

101 Books是一家人工智慧出版社,由作家Aarav Joshi共同創立。我們的人工智慧技術使出版成本保持在極低的水平——一些書籍的價格低至4 美元——讓所有人都能獲得高品質的資訊。

在亞馬遜上找到我們的書Golang Clean Code

隨時了解我們的最新版本。在亞馬遜上搜尋 Aarav Joshi 以了解更多書籍。 使用提供的連結獲取特別優惠!

我們的創作

探索我們的其他項目:

投資者中心 | 投資者中央西班牙語 | 投資者中德意志 | 智能生活 | 時代與迴響 | 令人費解的謎團 | 印度教 | 菁英發展 | JS學校


我們在Medium上

科技無尾熊洞察 | 時代與迴響世界 | 投資者中央媒體 | 令人費解的謎團 | | 令人費解的謎團 | |

令人費解的謎團 | | 令人費解的謎團 | >科學與時代媒介 | 現代印度教

以上是穩健 Web 開發的基本 JavaScript 設計模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn