Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Browse all series

Alpine.js Essentials

Alpine.js is a relatively new JavaScript framework for defining behavior directly in your markup. While similar to frameworks like Angular and Vue, you may find that Alpine is a bit more light-weight and portable. In this series, one step at a time, I'll get you up and running as quickly as possible.

Progress

Series Info

Episodes
11
Run Time
2h 29m
Difficulty
Beginner
Last Updated
Aug 21, 2020
Version
Latest

Series Episodes

  1. The Essentials (8)
    1. Let's Build a Memory Game

      Before we dig into Alpine, let's first build something simple, but demonstrative of what your typical workflow might look like. Please note that this episode will move a bit more quickly and is not intended to be your "Step 1" for learning Alpine. Just come along for the ride, and then, in the next episode, we'll hit the breaks, rewind, and start learning each piece of the puzzle from scratch.
    2. Data Binding

      Let's begin with the basics. Alpine allows us to easily bind the value of an attribute to an expression. In this lesson, we'll review a variety of simple examples.
    3. Toggle Visibility Using State

      In this lesson, you'll learn how to toggle an element's display dependent upon on a piece of state. As you'll find, so many of the bread-and-butter components that all websites share can be reduced to a simple on/off switch. Show the modal, hide the modal. Show the tab, hide the tab.
    4. Two-Way Data Binding

      You're currently familiar with one-direction data binding; however, often you'll require two-way binding in your forms. It's not enough to bind a value to an input. We also need to listen for when the input's value changes, and update the underlying data. We can allow for this by using x-model. In this episode, we'll review what precisely happens when you add this attribute to a form input. Then, as a small demo, we'll use that data to submit an AJAX request to a fake server.
    5. How and When to Extract Component Logic

      Alpine does not require you to store all logic as HTML attribute values. When necessary, you can easily reference a global function that returns an object. Here, you can declare your component's data and behavior separately from the HTML. In this episode, we'll use a basic task app example to discuss how (and when) to extract component logic. We'll also review some important considerations when bundling your code.
    6. Transitions 101

      Let's move on to transitions. Alpine offers a useful transition modifier that instantly applies a simple opacity and scale fade when toggling the display of an element. However, when you require more precision, you can easily hook into each step of the transition. Let's learn how in this episode before moving on to a real-life use case.
    7. Transitions 102

      Now that you understand the basic syntax for defining transitions, in this episode, let's add the appropriate transitions for a typical pop-up menu.
    8. Handling Custom Events

      Let's move on to events. You already know the basics of how to listen for any DOM events, so let's take things up a notch and discuss how Alpine components can communicate with one another through custom events that bubble up to the window.
  2. TodoMVC Workshop (3)
    1. TodoMVC with Alpine: Part 2

      Let's keep working on our Alpine.js implementation of TodoMVC. In this episode, we'll focus on filters, clearing completed tasks, and editing individual tasks.

Continue Learning