دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Mario Casciaro. Luciano Mammino
سری:
ISBN (شابک) : 1839214112, 9781839214110
ناشر: Packt Publishing
سال نشر: 2020
تعداد صفحات: 661
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 8 مگابایت
در صورت تبدیل فایل کتاب Node.js Design Patterns: Design and implement production-grade Node.js applications using proven patterns and techniques, 3rd Edition به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب Node.js Design Patterns: طراحی و اجرای برنامه های تولیدی Node.js با استفاده از الگوها و تکنیک های اثبات شده ، نسخه 3 نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
الگوها، تکنیک ها و ترفندهای اثبات شده را برای استفاده کامل از پلتفرم Node.js بیاموزید. اصول طراحی شناخته شده را برای ایجاد برنامه های کاربردی که خوانا، توسعه پذیر هستند و می توانند بزرگ شوند، مسلط شوید.
در این کتاب، نحوه پیاده سازی مجموعه ای از بهترین روش ها و الگوهای طراحی برای کمک به شما در ایجاد برنامه های Node.js کارآمد و قوی به راحتی.
ما با بررسی اصول اولیه Node.js، تجزیه و تحلیل معماری رویداد محور ناهمزمان و الگوهای طراحی اساسی آن شروع می کنیم. سپس به شما نشان میدهیم که چگونه الگوهای جریان کنترل ناهمزمان را با تماسهای برگشتی، وعدهها و async/wait بسازید. در مرحله بعد، به جریان های Node.js می پردازیم و قدرت آنها را آشکار می کنیم و به شما نشان می دهیم که چگونه از آنها با ظرفیت کامل خود استفاده کنید. جریانهای زیر تجزیه و تحلیلی از الگوهای مختلف طراحی خلقی، ساختاری و رفتاری است که از جاوا اسکریپت و Node.js نهایت بهره را میبرد. در نهایت، این کتاب به مفاهیم پیشرفتهتری مانند جاوا اسکریپت جهانی، مقیاسپذیری و الگوهای پیامرسانی میپردازد تا به شما در ایجاد برنامههای کاربردی توزیعشده در سطح سازمانی کمک کند.
در طول کتاب، Node.js را در عمل با کمک چندین نمونه واقعی از فناوریهایی مانند LevelDB، Redis، RabbitMQ، ZeroMQ و بسیاری دیگر مشاهده خواهید کرد. از آنها برای نشان دادن یک الگو یا تکنیک استفاده میشود، اما همچنین به شما معرفی خوبی از اکوسیستم Node.js و مجموعه راهحلهای آن میدهند.
این کتاب برای توسعهدهندگان و معماران نرمافزاری است که برخی از دانش اولیه اولیه جاوا اسکریپت و Node.js را دارند و اکنون میخواهند بیشترین بهره را از این فناوریها از نظر بهرهوری، کیفیت طراحی و مقیاسپذیری ببرند. متخصصان نرم افزار با تجربه متوسط در Node.js و جاوا اسکریپت نیز الگوها و تکنیک های پیشرفته تر ارائه شده در این کتاب را ارزشمند خواهند یافت.
این کتاب فرض میکند که شما درک متوسطی از توسعه برنامههای کاربردی وب، پایگاههای داده و اصول طراحی نرمافزار دارید.
Learn proven patterns, techniques, and tricks to take full advantage of the Node.js platform. Master well-known design principles to create applications that are readable, extensible, and that can grow big.
In this book, we will show you how to implement a series of best practices and design patterns to help you create efficient and robust Node.js applications with ease.
We kick off by exploring the basics of Node.js, analyzing its asynchronous event driven architecture and its fundamental design patterns. We then show you how to build asynchronous control flow patterns with callbacks, promises and async/await. Next, we dive into Node.js streams, unveiling their power and showing you how to use them at their full capacity. Following streams is an analysis of different creational, structural, and behavioral design patterns that take full advantage of JavaScript and Node.js. Lastly, the book dives into more advanced concepts such as Universal JavaScript, scalability and messaging patterns to help you build enterprise-grade distributed applications.
Throughout the book, you'll see Node.js in action with the help of several real-life examples leveraging technologies such as LevelDB, Redis, RabbitMQ, ZeroMQ, and many others. They will be used to demonstrate a pattern or technique, but they will also give you a great introduction to the Node.js ecosystem and its set of solutions.
This book is for developers and software architects who have some prior basic knowledge of JavaScript and Node.js and now want to get the most out of these technologies in terms of productivity, design quality, and scalability. Software professionals with intermediate experience in Node.js and JavaScript will also find valuable the more advanced patterns and techniques presented in this book.
This book assumes that you have an intermediate understanding of web application development, databases, and software design principles.
Cover Copyright Packt Page Contributors Table of Contents Preface Chapter 1: The Node.js Platform The Node.js philosophy Small core Small modules Small surface area Simplicity and pragmatism How Node.js works I/O is slow Blocking I/O Non-blocking I/O Event demultiplexing The reactor pattern Libuv, the I/O engine of Node.js The recipe for Node.js JavaScript in Node.js Run the latest JavaScript with confidence The module system Full access to operating system services Running native code Summary Chapter 2: The Module System The need for modules Module systems in JavaScript and Node.js The module system and its patterns The revealing module pattern CommonJS modules A homemade module loader Defining a module module.exports versus exports The require function is synchronous The resolving algorithm The module cache Circular dependencies Module definition patterns Named exports Exporting a function Exporting a class Exporting an instance Modifying other modules or the global scope ESM: ECMAScript modules Using ESM in Node.js Named exports and imports Default exports and imports Mixed exports Module identifiers Async imports Module loading in depth Loading phases Read-only live bindings Circular dependency resolution Modifying other modules ESM and CommonJS differences and interoperability ESM runs in strict mode Missing references in ESM Interoperability Summary Chapter 3: Callbacks and Events The Callback pattern The continuation-passing style Synchronous CPS Asynchronous CPS Non-CPS callbacks Synchronous or asynchronous? An unpredictable function Unleashing Zalgo Using synchronous APIs Guaranteeing asynchronicity with deferred execution Node.js callback conventions The callback comes last Any error always comes first Propagating errors Uncaught exceptions The Observer pattern The EventEmitter Creating and using the EventEmitter Propagating errors Making any object observable EventEmitter and memory leaks Synchronous and asynchronous events EventEmitter versus callbacks Combining callbacks and events Summary Exercises Chapter 4: Asynchronous Control Flow Patterns with Callbacks The difficulties of asynchronous programming Creating a simple web spider Callback hell Callback best practices and control flow patterns Callback discipline Applying the callback discipline Sequential execution Executing a known set of tasks in sequence Sequential iteration Parallel execution Web spider version 3 The pattern Fixing race conditions with concurrent tasks Limited parallel execution Limiting concurrency Globally limiting concurrency The async library Summary Exercises Chapter 5: Asynchronous Control Flow Patterns with Promises and Async/Await Promises What is a promise? Promises/A+ and thenables The promise API Creating a promise Promisification Sequential execution and iteration Parallel execution Limited parallel execution Implementing the TaskQueue class with promises Updating the web spider Async/await Async functions and the await expression Error handling with async/await A unified try...catch experience The "return" versus "return await" trap Sequential execution and iteration Antipattern – using async/await with Array.forEach for serial execution Parallel execution Limited parallel execution The problem with infinite recursive promise resolution chains Summary Exercises Chapter 6: Coding with Streams Discovering the importance of streams Buffering versus streaming Spatial efficiency Gzipping using a buffered API Gzipping using streams Time efficiency Composability Adding client-side encryption Adding server-side decryption Getting started with streams Anatomy of streams Readable streams Reading from a stream Implementing Readable streams Writable streams Writing to a stream Backpressure Implementing Writable streams Duplex streams Transform streams Implementing Transform streams Filtering and aggregating data with Transform streams PassThrough streams Observability Late piping Lazy streams Connecting streams using pipes Pipes and error handling Better error handling with pipeline() Asynchronous control flow patterns with streams Sequential execution Unordered parallel execution Implementing an unordered parallel stream Implementing a URL status monitoring application Unordered limited parallel execution Ordered parallel execution Piping patterns Combining streams Implementing a combined stream Forking streams Implementing a multiple checksum generator Merging streams Merging text files Multiplexing and demultiplexing Building a remote logger Multiplexing and demultiplexing object streams Summary Exercises Chapter 7: Creational Design Patterns Factory Decoupling object creation and implementation A mechanism to enforce encapsulation Building a simple code profiler In the wild Builder Implementing a URL object builder In the wild Revealing Constructor Building an immutable buffer In the wild Singleton Wiring modules Singleton dependencies Dependency Injection Summary Exercises Chapter 8: Structural Design Patterns Proxy Techniques for implementing proxies Object composition Object augmentation The built-in Proxy object A comparison of the different proxying techniques Creating a logging Writable stream Change observer with Proxy In the wild Decorator Techniques for implementing decorators Composition Object augmentation Decorating with the Proxy object Decorating a LevelUP database Introducing LevelUP and LevelDB Implementing a LevelUP plugin In the wild The line between proxy and decorator Adapter Using LevelUP through the filesystem API In the wild Summary Exercises Chapter 9: Behavioral Design Patterns Strategy Multi-format configuration objects In the wild State Implementing a basic failsafe socket Template A configuration manager template In the wild Iterator The iterator protocol The iterable protocol Iterators and iterables as a native JavaScript interface Generators Generators in theory A simple generator function Controlling a generator iterator How to use generators in place of iterators Async iterators Async generators Async iterators and Node.js streams In the wild Middleware Middleware in Express Middleware as a pattern Creating a middleware framework for ZeroMQ The Middleware Manager Implementing the middleware to process messages Using the ZeroMQ middleware framework In the wild Command The Task pattern A more complex command Summary Exercises Chapter 10: Universal JavaScript for Web Applications Sharing code with the browser JavaScript modules in a cross-platform context Module bundlers How a module bundler works Using webpack Fundamentals of cross-platform development Runtime code branching Challenges of runtime code branching Build-time code branching Module swapping Design patterns for cross-platform development A brief introduction to React Hello React Alternatives to react.createElement Stateful components Creating a Universal JavaScript app Frontend-only app Server-side rendering Asynchronous data retrieval Universal data retrieval Two-pass rendering Async pages Implementing async pages Summary Chapter 11: Advanced Recipes Dealing with asynchronously initialized components The issue with asynchronously initialized components Local initialization check Delayed startup Pre-initialization queues In the wild Asynchronous request batching and caching What's asynchronous request batching? Optimal asynchronous request caching An API server without caching or batching Batching and caching with promises Batching requests in the total sales web server Caching requests in the total sales web server Notes about implementing caching mechanisms Canceling asynchronous operations A basic recipe for creating cancelable functions Wrapping asynchronous invocations Cancelable async functions with generators Running CPU-bound tasks Solving the subset sum problem Interleaving with setImmediate Interleaving the steps of the subset sum algorithm Considerations on the interleaving approach Using external processes Delegating the subset sum task to an external process Considerations for the multi-process approach Using worker threads Running the subset sum task in a worker thread Running CPU-bound tasks in production Summary Exercises Chapter 12: Scalability and Architectural Patterns An introduction to application scaling Scaling Node.js applications The three dimensions of scalability Cloning and load balancing The cluster module Notes on the behavior of the cluster module Building a simple HTTP server Scaling with the cluster module Resiliency and availability with the cluster module Zero-downtime restart Dealing with stateful communications Sharing the state across multiple instances Sticky load balancing Scaling with a reverse proxy Load balancing with Nginx Dynamic horizontal scaling Using a service registry Implementing a dynamic load balancer with http-proxy and Consul Peer-to-peer load balancing Implementing an HTTP client that can balance requests across multiple servers Scaling applications using containers What is a container? Creating and running a container with Docker What is Kubernetes? Deploying and scaling an application on Kubernetes Decomposing complex applications Monolithic architecture The microservice architecture An example of a microservice architecture Microservices – advantages and disadvantages Integration patterns in a microservice architecture The API proxy API orchestration Integration with a message broker Summary Exercises Chapter 13: Messaging and Integration Patterns Fundamentals of a messaging system One way versus request/reply patterns Message types Command Messages Event Messages Document Messages Asynchronous messaging, queues, and streams Peer-to-peer or broker-based messaging Publish/Subscribe pattern Building a minimalist real-time chat application Implementing the server side Implementing the client side Running and scaling the chat application Using Redis as a simple message broker Peer-to-peer Publish/Subscribe with ZeroMQ Introducing ZeroMQ Designing a peer-to-peer architecture for the chat server Using the ZeroMQ PUB/SUB sockets Reliable message delivery with queues Introducing AMQP Durable subscribers with AMQP and RabbitMQ Reliable messaging with streams Characteristics of a streaming platform Streams versus message queues Implementing the chat application using Redis Streams Task distribution patterns The ZeroMQ Fanout/Fanin pattern PUSH/PULL sockets Building a distributed hashsum cracker with ZeroMQ Pipelines and competing consumers in AMQP Point-to-point communications and competing consumers Implementing the hashsum cracker using AMQP Distributing tasks with Redis Streams Redis consumer groups Implementing the hashsum cracker using Redis Streams Request/Reply patterns Correlation Identifier Implementing a request/reply abstraction using correlation identifiers Return address Implementing the Return Address pattern in AMQP Summary Exercises Other Books You May Enjoy Index