SitePoint
Blog
Forum
Library
Login
Join Premium
Toggle sidebar
Hands-On JavaScript High Performance
Toggle community discussions
Close
Content
Files
Bookmarks
Preface
Hands-On JavaScript High Performance
Contributors
About the author
About the reviewer
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
1
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
Open text modal
Community Questions
Close