Vue.js ❤️ Craft CMS - Single Page App: Intro
Lately I've been building more things that use Vue.js.
For me, it's the first JavaScript framework that has really clicked while also being a joy to use when compared to React and Angular 1.x.
Most of what I've built with Vue has been within a Laravel project. Laravel makes it easy to build RESTful APIs that you can consume within a single page JS app.
I was curious; could I do the same thing but instead use Craft as my back end rather than migrate content and users to a custom Laravel app?
My friend Paulo Elias and his team @ideo did just that with React where they consume Element API endpoints but all of the authoring is via the control panel.
What I wanted to achieve using just the front end was:
- display a list of entries served by the API endpoint (the app index)
- search entries by title
- show a single entry served by the API endpoint (the single view)
- register as a user
- authenticate as a registered user
- post an entry as an authenticated user
- delete entry of authenticated user
- update authenticated user info (the user profile)
- have routing handled by Vue and not Craft
So, in this series, I'll breakdown the approach I've taken, piece by piece.
I'll cover how I:
- setup the tooling using Laravel Mix as a build tool
- bootstrapped the Vue app
- used Vue Router to manage routing; overriding Craft's routing
- used Vuex to manage state; I needed this because I wanted a way to communicate my custom search Vue component
- configure endpoints using Element API mentioned above
- use Axios to consume the entries API
- execute Craft methods from Vue