Learn Vanilla JS

A roadmap and collection of resources for learning JavaScript.

🚀 A new session of the Vanilla JS Academy starts on October 4. Learn to solve problems and think in JavaScript! Click here to join.

The Roadmap

This isn’t a comprehensive list. You don’t need to learn these in order, or even learn all of them. You’re still a “real developer” even if you only learn a few of these.

Think of these as some ideas to help you get started.

  • Beginner Topics
    • Variables. The difference between var, let, and const, and when and why you’d use one over the others.
    • Functions. The different ways to create functions, and how they’re different.
    • Strings. How to create and transform strings.
    • Numbers. How to create and transform numbers.
    • DOM Manipulation. How to get elements in the DOM, make updates, and listen for events.
    • Arrays & Objects. How they’re different, when to choose one over the other, and how to edit and transform their data.
    • Browser Storage. Saving data in the browser with localStorage, sessionStorage, and cookies.
    • Dates. How to get, set, and transform dates and times.
    • Scope. Why and how to scope your code.
    • Progressive Enhancement. How to build sites and apps that still work even when some of your code fails.
    • Polyfills. How to bolt-in support for features in older browsers that don’t natively support them.
  • Advanced Topics
    • Promises. Asynchronous functions in JavaScript, and when, why, and how to work with them.
    • Ajax & APIs. How to get data from APIs and other external resources and integrate them into your sites and apps.
    • Plugins. How to write flexible, modular, scalable plugins that grow with you and your users.
    • State-Based UI. What is it, how its different from traditional DOM manipulation, and when and why should you use it.
    • ES Modules. How structure and manage your scripts as your code base grows larger and more complex.
    • JS Testing. How to test your JavaScript so that you catch issues before your deploy to production.
    • Service Workers. How to store assets offline and build progressive web apps.
    • Build Tools. How to automate repetitive web development tasks.
    • Serverless & Microservices. How to take advantage of server-based features without managing your own server.
    • Token-Based Auth. How to authenticate users and manage browser sessions in client-side web applications.
    • Static Site Generators. Get the benefits of database-driven sites and the performance and security wins of flat HTML.

Get Daily Developer Tips

I send out a short email each weekday with code snippets, tools, techniques, and interesting stuff from around the web. Join 12,400+ daily subscribers.

Hi, I'm Chris Ferdinandi. 👋

Chris Ferdinandi

I believe there’s a simpler, more resilient way to make things for the web.

I create vanilla JS pocket guides and video courses, run a project-based training program, and host the vanilla JS podcast. My developer tips newsletter is read by over 12,400 developers each weekday.

If you have a question about something or need JavaScript help, get in touch.