Title Page Copyright and Credits Hands-On JavaScript High Performance Dedication About Packt Why subscribe? Contributors About the author About the reviewer Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Conventions used Get in touch Reviews Tools for High Performance on the Web Technical requirements DevTools for different environments Edge Safari Firefox Chrome Chrome – an in-depth look at the Performance tab Chrome – an in-depth look at the Memory tab Chrome – an in-depth look at the Rendering tab jsPerf and benchmarking Summary Immutability versus Mutability - The Balance between Safety and Speed Technical requirements The current fascination with immutability A dive into Redux Immutable.js Writing safe mutable code Resource allocation is initialization (RAII) Functional style programming Lazy evaluation Tail-end recursion optimization Currying Summary Vanilla Land - Looking at the Modern Web Technical requirements A dive into modern JavaScript Let/const and block scoping Arrow functions Collection types Reflection and proxies Other notable changes Spread operator Destructuring Power operator Parameter defaults String templates Typed arrays BigInt Internationalization Understanding classes and modules Other notable features Modules Working with the DOM Query selector Document fragments Shadow DOM Web components Templates Understanding the Fetch API Promises Back to fetch Stopping fetch requests Summary Practical Example - A Look at Svelte and Being Vanilla Technical requirements A framework for pure speed Build the basics – a Todo application Getting fancier – a basic weather application Summary Switching Contexts - No DOM, Different Vanilla Technical requirements Getting Node.js Overview of the package.json file Understanding the DOM-less world A first look at streams A high-level look at modules fs module net module http module Debugging and inspecting code Summary Message Passing - Learning about the Different Types Technical requirements Local communication using the net module Understanding the cluster module Common pitfalls for new developers Utilizing the network TCP/UDP HTTP/2 A quick glance at HTTP/3 The QUIC protocol A look at node-quic Summary Streams - Understanding Streams and Non-Blocking I/O Technical requirements Getting started with streams Building a custom Readable stream Understanding the Readable stream interface Implementing the Readable stream Building a Writable stream Understanding the Writable stream interface Implementing the Writable stream Implementing a Duplex stream Implementing a Transform stream Understanding the Transform stream interface Implementing a Transform stream Using generators with streams Summary Data Formats - Looking at Different Data Types Other Than JSON Technical requirements Using JSON Implementing the encoder Implementing the decoder A look at data formats Summary Practical Example - Building a Static Server Technical requirements Understanding static content Starting our application Setting up our templating system Setting up our server Adding caching and clustering Summary Workers - Learning about Dedicated and Shared Workers Technical requirements Offloading work to a dedicated worker Moving data in our application Sending binary data in the browser Sharing data and workers Building a simple shared cache Summary Service Workers - Caching and Making Things Faster Technical requirements Understanding the ServiceWorker Caching pages and templates for offline use Saving requests for later Summary Building and Deploying a Full Web Application Technical requirements Understanding Rollup Building our static server into a single distributable Adding other file types to our distribution Bringing rollup into Node.js commands Integrating into CircleCI Adding our build steps Deploying our build Summary WebAssembly - A Brief Look into Native Code on the Web Technical requirements  Understanding WebAssembly Understanding a program Setting up our environment Writing WebAssembly modules Sharing memory between WebAssembly and JavaScript Writing FizzBuzz in WebAssembly Writing C/C++ for the web Writing a hamming code generator A look at SQLite in the browser Summary Further reading Other Books You May Enjoy Leave a review - let other readers know what you think