Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Learning Javascript Design Patterns

Learning Javascript Design Patterns

توسط Addy Osmani 2011 227 صفحات
3.83
500+ امتیازها
گوش دادن
Listen to Summary

نکات کلیدی

1. الگوهای طراحی جاوااسکریپت ساختار کد را بهینه‌سازی کرده و مشکلات رایج را حل می‌کنند

الگوهای طراحی به ما این امکان را می‌دهند که بر روی شانه‌های توسعه‌دهندگانی که راه‌حل‌هایی برای مشکلات و معماری‌های چالش‌برانگیز در طول چندین دهه تعریف کرده‌اند، بسازیم.

راه‌حل‌های قابل استفاده مجدد. الگوهای طراحی در جاوااسکریپت راه‌حل‌های آزموده‌شده‌ای برای چالش‌های رایج برنامه‌نویسی ارائه می‌دهند. آن‌ها یک واژگان مشترک برای توسعه‌دهندگان فراهم می‌کنند تا ساختارهای کد کارآمد را بحث و پیاده‌سازی کنند. با استفاده از این الگوها، توسعه‌دهندگان می‌توانند:

  • سازماندهی و نگهداری کد را بهبود بخشند
  • انعطاف‌پذیری و مقیاس‌پذیری نرم‌افزار را افزایش دهند
  • همکاری آسان‌تر بین اعضای تیم را تسهیل کنند

دسته‌بندی الگوها. الگوهای طراحی معمولاً به سه گروه اصلی تقسیم می‌شوند:

  • ساختاری: مربوط به مکانیزم‌های ایجاد شیء
  • ساختاری: تمرکز بر ترکیب و روابط اشیاء
  • رفتاری: پرداختن به ارتباط و توزیع مسئولیت اشیاء

درک و به‌کارگیری این الگوها می‌تواند به‌طور قابل توجهی کیفیت و کارایی برنامه‌های جاوااسکریپت را بهبود بخشد و به کدهای پایه‌ای قوی‌تر و قابل نگهداری‌تر منجر شود.

2. الگوهای ساختاری: سازنده، ماژول، تک‌نمونه و کارخانه

الگوی ماژول حالت "خصوصی" و سازماندهی را با استفاده از closures محصور می‌کند.

مکانیزم‌های ایجاد شیء. الگوهای ساختاری بر روش‌های کارآمد برای ایجاد اشیاء و مدیریت فرآیندهای ایجاد شیء تمرکز دارند. الگوهای ساختاری کلیدی در جاوااسکریپت شامل موارد زیر است:

  • الگوی سازنده: تعریف اولیه‌سازی شیء
  • الگوی ماژول: محصور کردن حالت خصوصی و رابط‌های عمومی
  • الگوی تک‌نمونه: اطمینان از وجود تنها یک نمونه از یک کلاس
  • الگوی کارخانه: متمرکز کردن منطق ایجاد شیء

ماژولاریت و محصورسازی. این الگوها ترویج می‌کنند:

  • سازماندهی و استفاده مجدد از کد
  • حفظ حریم داده و دسترسی کنترل‌شده
  • نمونه‌سازی انعطاف‌پذیر اشیاء

با استفاده از الگوهای ساختاری، توسعه‌دهندگان می‌توانند ساختارهای کدی قابل نگهداری و مقیاس‌پذیرتر ایجاد کنند، به‌ویژه در برنامه‌های بزرگ‌مقیاس که ایجاد و مدیریت اشیاء می‌تواند پیچیده شود.

3. الگوهای ساختاری: دکوراتور، فاساد، فلای‌ویت و میکسین

الگوی دکوراتور به منظور ترویج استفاده مجدد از کد طراحی شده است.

ترکیب اشیاء. الگوهای ساختاری با ترکیب اشیاء سروکار دارند و راه‌هایی برای تشکیل ساختارهای بزرگ‌تر از اشیاء فردی ارائه می‌دهند. الگوهای ساختاری کلیدی شامل موارد زیر است:

  • دکوراتور: افزودن عملکرد جدید به اشیاء به‌صورت پویا
  • فاساد: ساده‌سازی زیرسیستم‌های پیچیده با یک رابط یکپارچه
  • فلای‌ویت: اشتراک‌گذاری داده‌های مشترک بین چندین شیء
  • میکسین: افزودن ویژگی‌ها و متدها به اشیاء

انعطاف‌پذیری و کارایی. این الگوها ارائه می‌دهند:

  • استفاده مجدد از کد بهبود یافته
  • رابط‌های ساده‌شده برای سیستم‌های پیچیده
  • بهینه‌سازی استفاده از حافظه
  • ترکیب انعطاف‌پذیر اشیاء

الگوهای ساختاری به توسعه‌دهندگان اجازه می‌دهند تا ساختارهای اشیاء انعطاف‌پذیرتر و کارآمدتری ایجاد کنند و طراحی و عملکرد کلی سیستم را بهبود بخشند.

4. الگوهای رفتاری: ناظر، میانجی و فرمان

الگوی ناظر به شما اجازه می‌دهد تا یک شیء را هنگامی که شیء دیگری تغییر می‌کند، بدون نیاز به دانستن وابستگان آن، مطلع کنید.

تعاملات اشیاء. الگوهای رفتاری بر ارتباط بین اشیاء تمرکز دارند و تعریف می‌کنند که چگونه با هم عمل کنند. الگوهای رفتاری کلیدی شامل موارد زیر است:

  • ناظر: تعریف وابستگی یک به چند بین اشیاء
  • میانجی: متمرکز کردن ارتباطات پیچیده بین اشیاء
  • فرمان: محصور کردن یک درخواست به‌عنوان یک شیء

ارتباط بهبود یافته. این الگوها ارائه می‌دهند:

  • کاهش وابستگی بین اشیاء
  • کنترل متمرکز تعاملات اشیاء
  • انعطاف‌پذیری در اجرای و لغو عملیات

با پیاده‌سازی الگوهای رفتاری، توسعه‌دهندگان می‌توانند سیستم‌های قوی‌تر و قابل نگهداری‌تری ایجاد کنند، به‌ویژه در برنامه‌های پیچیده با اجزای متعدد در حال تعامل.

5. الگوهای معماری MVC، MVP و MVVM برای سازماندهی برنامه

MVC برای برخی از ارتباطات اصلی خود به الگوی ناظر متکی است (چیزی که به‌طور شگفت‌انگیزی در بسیاری از مقالات درباره الگوی MVC پوشش داده نمی‌شود).

جداسازی نگرانی‌ها. این الگوهای معماری ساختارهایی برای سازماندهی منطق برنامه ارائه می‌دهند:

  • مدل-نما-کنترلر (MVC): جداسازی داده‌ها، رابط کاربری و منطق کنترل
  • مدل-نما-ارائه‌دهنده (MVP): مشابه MVC، اما با نمایی منفعل‌تر
  • مدل-نما-مدل‌نما (MVVM): جداسازی توسعه نما از منطق کسب‌وکار

مزایای الگوهای معماری:

  • بهبود سازماندهی و نگهداری کد
  • افزایش قابلیت تست اجزای فردی
  • تسهیل همکاری بین توسعه‌دهندگان
  • بهبود مقیاس‌پذیری برای برنامه‌های بزرگ

این الگوها به توسعه‌دهندگان کمک می‌کنند تا برنامه‌های سازمان‌یافته‌تر، قابل نگهداری‌تر و مقیاس‌پذیرتری ایجاد کنند و ساختارهای واضحی برای جداسازی جنبه‌های مختلف منطق برنامه فراهم کنند.

6. ماژول‌های مدرن جاوااسکریپت و الگوهای برنامه‌نویسی غیرهمزمان

الگوی async/await از async/await به‌عنوان روش اصلی برای دریافت داده از اجزای سرور استفاده می‌کند.

سازماندهی کد ماژولار. جاوااسکریپت مدرن پشتیبانی داخلی از ماژول‌ها را فراهم می‌کند و به توسعه‌دهندگان اجازه می‌دهد تا کدهای پایه‌ای سازمان‌یافته‌تر و قابل نگهداری‌تری ایجاد کنند. مفاهیم کلیدی شامل موارد زیر است:

  • ماژول‌های ES6 با دستورات import و export
  • واردات پویا برای تقسیم کد و بهینه‌سازی عملکرد

برنامه‌نویسی غیرهمزمان. الگوهایی برای مدیریت عملیات غیرهمزمان شامل موارد زیر است:

  • وعده‌ها: نمایندگی از تکمیل نهایی یک عملیات غیرهمزمان
  • async/await: شکر نحوی برای کار با وعده‌ها
  • قابل مشاهده‌ها: مدیریت جریان‌های داده غیرهمزمان

این الگوهای مدرن به توسعه‌دهندگان اجازه می‌دهند تا کد تمیزتر و کارآمدتری برای مدیریت عملیات غیرهمزمان پیچیده و سازماندهی برنامه‌های بزرگ‌مقیاس بنویسند.

7. الگوهای طراحی React: اجزای مرتبه بالاتر، پراپ‌های رندر و هوک‌ها

اجزای مرتبه بالاتر به ما اجازه می‌دهند تا منطقی که می‌خواهیم مجدداً استفاده کنیم را همگی در یک مکان نگه داریم.

ترکیب اجزاء. React چندین الگو برای ایجاد اجزاء قابل استفاده مجدد و ترکیبی ارائه می‌دهد:

  • اجزای مرتبه بالاتر (HOCs): افزایش اجزاء با عملکرد اضافی
  • پراپ‌های رندر: اشتراک‌گذاری کد بین اجزاء با استفاده از یک پراپ که مقدار آن یک تابع است
  • هوک‌ها: افزودن ویژگی‌های حالت و چرخه حیات به اجزاء تابعی

مزایای الگوهای React:

  • بهبود استفاده مجدد از کد
  • افزایش ترکیب اجزاء
  • ساده‌سازی مدیریت حالت
  • کاهش کد تکراری

این الگوها به توسعه‌دهندگان اجازه می‌دهند تا برنامه‌های React انعطاف‌پذیرتر، قابل نگهداری‌تر و کارآمدتری ایجاد کنند و استفاده مجدد از کد و جداسازی نگرانی‌ها را ترویج کنند.

8. الگوهای رندر: رویکردهای سمت کاربر، سمت سرور، استاتیک و ترکیبی

الگوی PRPL بر چهار ملاحظه اصلی عملکرد تمرکز دارد: به‌طور کارآمد منابع حیاتی را فشار دهید، مسیر اولیه را در اسرع وقت رندر کنید، دارایی‌ها را در پس‌زمینه پیش‌کش کنید و مسیرها یا دارایی‌ها را به‌صورت تنبل بارگذاری کنید.

بهینه‌سازی عملکرد. الگوهای مختلف رندر به بهبود عملکرد برنامه و تجربه کاربری می‌پردازند:

  • رندر سمت کاربر (CSR): رندر محتوا در مرورگر
  • رندر سمت سرور (SSR): تولید HTML در سرور
  • رندر استاتیک: پیش‌رندر محتوا در زمان ساخت
  • رندر ترکیبی: ترکیب چندین رویکرد رندر

ملاحظات برای الگوهای رندر:

  • زمان بارگذاری اولیه و زمان تعامل (TTI)
  • بهینه‌سازی موتور جستجو (SEO)
  • بار سرور و مقیاس‌پذیری
  • فرکانس به‌روزرسانی محتوا

انتخاب الگوی رندر مناسب به نیازهای خاص برنامه بستگی دارد و عواملی مانند عملکرد، SEO و پیچیدگی توسعه را متعادل می‌کند.

9. بهترین شیوه‌های ساختار برنامه برای پروژه‌های React مقیاس‌پذیر

پایبندی به یک الگوی تعریف‌شده برای ساختاردهی یک پروژه به شما کمک می‌کند تا آن را به سایر اعضای تیم توضیح دهید و از بی‌نظمی و پیچیدگی غیرضروری پروژه‌ها جلوگیری کنید.

ساختار پروژه سازمان‌یافته. پیاده‌سازی یک ساختار پروژه واضح و سازگار برای حفظ برنامه‌های React مقیاس‌پذیر بسیار مهم است. ملاحظات کلیدی شامل موارد زیر است:

  • گروه‌بندی فایل‌ها بر اساس ویژگی یا ماژول
  • جداسازی اجزاء نمایشی و کانتینر
  • پیاده‌سازی یک کنوانسیون نام‌گذاری واضح
  • استفاده از راه‌حل‌های مناسب مدیریت حالت

بهترین شیوه‌ها:

  • اجزاء را کوچک و متمرکز نگه دارید
  • از نام‌های دایرکتوری معنادار استفاده کنید
  • بارگذاری تنبل را برای بهینه‌سازی عملکرد پیاده‌سازی کنید
  • استانداردهای کدنویسی سازگار را حفظ کنید

یک برنامه React با ساختار خوب، نگهداری کد را بهبود می‌بخشد، همکاری بین اعضای تیم را تسهیل می‌کند و مقیاس‌پذیری کلی پروژه را افزایش می‌دهد.

آخرین به‌روزرسانی::

FAQ

What's Learning JavaScript Design Patterns about?

  • Focus on Design Patterns: The book provides a comprehensive guide to applying design patterns in JavaScript, especially for modern web applications.
  • Modern Context: It covers over 20 design patterns, including classical patterns and modern adaptations for frameworks like React, Vue, and Angular.
  • Best Practices: Emphasizes best practices for code organization, performance, and maintainability, making it valuable for developers at all levels.

Why should I read Learning JavaScript Design Patterns?

  • Enhance Code Quality: Understanding design patterns helps in writing cleaner, more maintainable code that is easier for other developers to understand.
  • Stay Current: Reflects the latest advancements in JavaScript, including ES2015+ features, ensuring you are up-to-date with modern practices.
  • Practical Examples: Includes practical examples and applications of design patterns, facilitating real-world application of the concepts.

What are the key takeaways of Learning JavaScript Design Patterns?

  • Understanding Patterns: Gain a deep understanding of various design patterns and how to apply them effectively in JavaScript.
  • Performance Optimization: Discusses performance patterns like code-splitting and server-side rendering, crucial for modern web applications.
  • Framework-Specific Patterns: Covers React-specific patterns like Hooks and Higher-Order Components, providing insights into best practices within popular frameworks.

How does Learning JavaScript Design Patterns address modern JavaScript features?

  • ES2015+ Syntax: Incorporates modern JavaScript syntax and features, such as classes, modules, and arrow functions, to illustrate design patterns.
  • Async/Await: Discusses asynchronous programming patterns using async/await, making it easier to handle asynchronous operations cleanly.
  • Performance Improvements: Highlights how modern features can optimize performance and improve code organization in web applications.

What are some important design patterns covered in Learning JavaScript Design Patterns?

  • Module Pattern: Organizes code into reusable modules, promoting encapsulation and separation of concerns.
  • Observer Pattern: Allows objects to subscribe to events and get notified of changes, facilitating a decoupled architecture.
  • Singleton Pattern: Restricts the instantiation of a class to a single instance, useful for managing shared resources.

Can you explain the Module pattern as described in Learning JavaScript Design Patterns?

  • Encapsulation: Encapsulates private variables and functions, exposing only the public API, which helps avoid global namespace pollution.
  • IIFE Usage: Often uses Immediately Invoked Function Expressions (IIFEs) to create a private scope for variables and methods.
  • Reusability: Organizes code into modules, allowing developers to create reusable components that are easily maintained and tested.

What is the significance of the Observer pattern in Learning JavaScript Design Patterns?

  • Decoupled Communication: Allows for a decoupled communication mechanism between objects, enabling them to react to changes without being tightly bound.
  • Real-World Applications: Provides examples of how the Observer pattern can be applied in modern frameworks, enhancing application responsiveness.
  • Event-Driven Architecture: Emphasizes the importance of event-driven architecture in JavaScript, crucial for building interactive web applications.

How does Learning JavaScript Design Patterns approach asynchronous programming patterns?

  • Promise Patterns: Covers various promise patterns, including chaining, parallel execution, and error handling, to manage asynchronous operations effectively.
  • Async/Await: Introduces async/await as a modern way to handle asynchronous code, making it easier to read and maintain.
  • Practical Examples: Provides practical examples demonstrating how to implement these patterns in real-world applications, enhancing understanding.

What are Higher-Order Components (HOCs) in React as discussed in Learning JavaScript Design Patterns?

  • Reusable Logic: HOCs are functions that take a component and return a new component with additional props or behavior, promoting logic reuse.
  • Example Usage: Provides examples of HOCs for adding features like loading indicators or styling to components, enhancing functionality.
  • Pros and Cons: While promoting code reuse, HOCs can lead to "wrapper hell" if overused, making the component tree complex.

What is the Render Props pattern in React?

  • Function as Prop: Involves passing a function as a prop to a component, which returns a React element, allowing for flexible rendering logic.
  • Example Implementation: Illustrates how to implement the Render Props pattern to share data between components, such as a temperature converter example.
  • Comparison to HOCs: Compared to HOCs, Render Props avoids prop name collisions and makes data flow more explicit, simplifying debugging.

How does Learning JavaScript Design Patterns address application structure for React?

  • Folder Organization: Discusses approaches to organizing files in a React application, such as grouping by feature or file type.
  • Hybrid Structures: Advocates for hybrid structures that combine benefits of both grouping methods, crucial for larger applications.
  • Best Practices: Provides best practices for structuring React applications, including the use of Redux, Hooks, and Styled Components.

What are some advanced patterns discussed in Learning JavaScript Design Patterns?

  • Islands Architecture: Focuses on creating isolated islands of interactivity within static pages, allowing efficient loading of dynamic components.
  • Progressive Hydration: Involves hydrating components incrementally based on user interaction, optimizing performance by reducing initial JavaScript payload.
  • Streaming SSR: Introduced as a method to send HTML to the client in smaller chunks, improving time to first paint and enhancing user experience.

نقد و بررسی

3.83 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

کتاب آموزش الگوهای طراحی جاوااسکریپت نظرات متفاوتی دریافت می‌کند. برخی از جامعیت پوشش الگوهای طراحی و مثال‌های عملی آن تمجید می‌کنند، در حالی که دیگران آن را قدیمی و بیش از حد متمرکز بر کتابخانه‌های خاص می‌دانند. نظرات مثبت به مفید بودن آن برای توسعه‌دهندگان متوسط و ماندگاری اهمیت آن اشاره دارند. انتقادات شامل ویرایش ناهماهنگ، محتوای قدیمی و تأکید بیش از حد بر jQuery است. بسیاری از خوانندگان توضیحات کتاب درباره الگوهای رایج را می‌پسندند اما پیشنهاد می‌کنند که ممکن است بهترین انتخاب برای کسانی که به دنبال تکنیک‌های پیشرفته جاوااسکریپت هستند، نباشد. به طور کلی، به عنوان یک مقدمه محکم برای الگوهای طراحی دیده می‌شود، هرچند با برخی محدودیت‌ها.

درباره نویسنده

ادی عثمانی مدیر ارشد مهندسی در گوگل کروم است و تیم‌هایی را رهبری می‌کند که به بهبود کارایی توسعه وب اختصاص دارند. او نویسنده‌ی چندین کتاب است و به‌طور مکرر در کنفرانس‌های بین‌المللی سخنرانی می‌کند. کار عثمانی بر سریع‌تر و آسان‌تر کردن وب برای توسعه‌دهندگان متمرکز است. تخصص او در جاوااسکریپت و فناوری‌های وب او را به شخصیتی محترم در جامعه‌ی توسعه‌دهندگان تبدیل کرده است. از طریق نوشته‌ها و سخنرانی‌هایش، عثمانی دانش و بینش‌های خود را به اشتراک می‌گذارد و به پیشرفت روش‌ها و تکنیک‌های توسعه وب کمک می‌کند.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on May 5,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →