Table of Contents

Learn ClojureScript: Table of Contents

Section 0: Why ClojureScript Matters

Section 1: Tools of the Trade

Section 2: Basic ClojureScript

Section 3: Working With Data

Section 4: Idiomatic ClojureScript

  • Lesson 21: Functional Programming Concepts
  • Lesson 22: Namespaces and Program Structure
    • Grouping Related Functions
    • Avoiding “Hidden” OOP
    • Taking Advantage of Polymorphism
    • Summary
  • Lesson 23: Google Closure Library
    • ClojureScript’s other “stdlib”
    • Solving Browser Quirks
    • Simplifying Ajax
    • Better DOM
    • Standard Events
    • Summary
  • Lesson 24: Managing State
    • Atoms
    • Transients
    • Anti-Patterns
    • Using State Wisely
    • Summary
  • Lesson 25: Handling Exceptions and Errors
    • Handling Exceptions with try/catch
    • Functional Alternatives to Exceptions
    • Summary
  • Lesson 26: Intro to core.async
    • Overview of CSP
    • Coroutines as Lightweight Processes
    • Communicating Over Channels
    • Channels as Values
    • Summary
  • Lesson 27: Capstone 4 - Group Chat
    • Thinking About Interactions
    • Realtime Communication
    • Rooms and Conversations
    • Summary

Section 5: ClojureScript Applications

  • Lesson 28: React.js as a Platform
    • Functional Programming Model
    • DOM Diffing
    • Creating Fast Apps
    • Summary
  • Lesson 29: Using React via Reagent
    • Defining a Data Model
    • Writing Queries for Views
    • Writing Transition Functions
    • Building Components
    • Summary
  • Lesson 30: Separate Concerns
    • Connecting Components With Channels
    • Message Patterns
    • Client/Server Architecture
    • Summary
  • Lesson 31: Consuming Remote APIs
    • Flattening Callbacks
    • Writing Views as Pure Functions
    • Centralizing Coordination Logic
    • Summary
  • Lesson 32: Capstone 5 - Deal of the Day
    • Building a Reagent UI
    • Handling User Interactions
    • Handling API Interactions
    • Summary

Section 6: Testing

  • Lesson 33: REPL-Driven Development
    • The Advantages of Testing Functional Code
    • Validating Code With the REPL
    • REPL Sessions as Tests
    • Live Coding With Figwheel
    • Summary
  • Lesson 34: Intro To Unit Testing
    • Understanding the Need for Unit Tests
    • Testing Pure Functions
    • Testing Impure Functions
    • Test Set-Up and Context
    • Summary
  • Lesson 35: Don’t Write Tests - Let The Computer Write Them
    • What Is Property-Based Testing?
    • Introducing test.check
    • Use Cases
    • Summary

Section 7: Advanced ClojureScript

  • Lesson 36: Protocols and Records
    • Enforcing Stricter Contracts
    • Extending Existing Types
    • Anonymous Instances With reify
    • Flexible Dispatch with Multimethods
    • Summary
  • Lesson 37: Survey of Advanced Language Features
    • Programmable Programming Language
    • Macros
    • Extending Core Protocols
    • Summary
  • Lesson 38: Transducers
    • Transwhatsers?
    • Dataflow with core transducers
    • Writing our own transducers
    • Summary
  • Lesson 39: Compiler Deep Dive
    • Compilation pipeline
    • Advanced options
    • Bootstrapped ClojureScript
    • Summary

End Matter

  • Appendix A: Installing ClojureScript
    • Installing Java
    • Downloading Leiningen
    • Requiring ClojureScript in a Project
  • Appendix B: Wrapping a JavaScript library
    • Compiler basics
    • Wrapping example
    • cljsjs libraries