Building a VueJS App

Thanks for watching!

Contact Me

Email:
     jeffrey@vuescreencasts.com

Twitter: @vuescreencasts
Text: 501-256-3078

Took a quick break

Let's do

Snackbars

Then we're done

INSERT VIDEO HERE

Building a VueJS App
Part 10

1. Our First Snackbar:

                Vuetify

2. App-wide Snackbar:

                VueX

3. Multi-snackbar:

                Creative coding

Building a VueJS App
Part 10

Section 1

Our First Snackbar

Building a VueJS App
Part 10

Section 2

App-wide snackbar

Building a VueJS App
Part 10

Section 3

Multi-snackbar

Building a VueJS App
Part 10

Section 4

Review

Building a VueJS App
Tentative Plan

  • playedVideos on the server

  • Create and assign tags

    • select box

    • has_many relationships

  • Playlists

    • ordered has_many relationships

    • UI Challenges

  • Cleanup

    • Modules or Pathify

Building a VueJS App
Tentative Plan

  • playedVideos on the server

  • Create and assign tags

    • select box

    • has_many relationships

  • Playlists

    • ordered has_many relationships

    • UI Challenges

  • Cleanup

    • Modules or Pathify

Data

Nuxt & Deploy

Polish & Improve

Building a VueJS App
Part 11

1. Loading video plays:
                VueX Getters
                Vue.set

2. Saving video plays:

                Dispatching in actions

Building a VueJS App
Part 11

Loading video plays

Building a VueJS App
Part 11

Saving video plays

Building a VueJS App
Part 11

Review

Building a VueJS App
Part 12

1. Displaying Current Tags:
           v-autocomplete

2. Connecting Tags

           Updating many-to-many
           Computed Setters
           _.differenceBy
           new VueX revelations

Building a VueJS App
Part 12

Section 1

Displaying Current Tags
 

Building a VueJS App
Part 12

Section 2

Connecting Tags

Building a VueJS App
Part 12

Section 3

Review

Building a VueJS App
Part 14

Section 1
Read (Index)

Building a VueJS App
Part 14

Section 2
Update (Edit)

Building a VueJS App
Part 14

Section 3
Delete

Building a VueJS App
Part 14

Section 4
Create

Building a VueJS App
Part 14

Section 5
Review

Building a VueJS App
Part 15

Section 1
Our First Module

Building a VueJS App
Part 15

Section 2
All The Other Modules

(Which should take, all put together, about the same amount of time as the first)

Building a NuxtJS App
REQUIREMENTS

  • Basic VueJS knowledge

  • Basic VueX knowledge

  • Basic Vue Router knowledge

  • Watching all 8+ hours of my Building an App series

Building a NuxtJS App

  • Why Nuxt?

  • Installation

  • Project Structure

  • Pages and Routing

  • Navbar + Layouts

  • axios + asyncData

  • Meta tags

  • VueX + fetch
  • Summary

Building a NuxtJS App

Section 1
Why Nuxt?

Why Nuxt?

  • Server-Side Rendering (SSR)

  • Automatic Code Splitting

  • Easier Async Data

  • Built-in popular Vue packages: VueX, Vue Router, Vue Meta

Building a NuxtJS App

Section 2
Installation

Building a NuxtJS App

Section 3
Project Structure

Building a NuxtJS App

Section 4
Pages and Routing

Building a NuxtJS App

Section 5

Navbar + Layouts

Building a NuxtJS App

Section 6

axios and asyncData

Building a NuxtJS App

Section 7

meta tags

Building a NuxtJS App

Section 8

VueX and fetch

Building a NuxtJS App

Section 9

Review

Building a NuxtJS App
REQUIREMENTS

  • Basic Nuxt knowledge
    OR
    Watch my Introduction to Nuxt video
     

  • Intermediate VueJS knowledge
    OR
    Watch my Building an App series

Building a NuxtJS App

  • Vuetify the Navbar

  • Home page

  • Video Watch page

  • Tags page

Building a NuxtJS App

  • User-facing site

  • VueX and Middleware

  • Admin section

  • Authentication and Authorization

Building a NuxtJS App

Section 1

Vuetify the Navbar

Building a NuxtJS App

Section 2

Home Page

Building a NuxtJS App

Section 3

Video Watch Page

Building a NuxtJS App

Section 4

Tags Page

Building a NuxtJS App

Section 5

Summary

NuxtJS + VueX
REQUIREMENTS

  • Basic Nuxt knowledge
    AND
    Basic VueX Knowledge

    OR

    Watch the previous 2 videos in this series

NuxtJS + VueX

  • From asyncData to VueX (naive)

  • Refactor with deserializers and destructuring

  • Strategy Discussion

  • Preloading, Middleware, and the RSVP library

NuxtJS + VueX

Section 1

From asyncData to VueX (naive)

NuxtJS + VueX

Section 2

Refactoring with

deserializers, destructuring, etc.

NuxtJS + VueX

Section 3

Strategy Discussion

NuxtJS + VueX

Data Loading Strategies

  • Load and Dump

  • Preloading

  • Cacheing

NuxtJS + VueX

Section 4
 

Preloading,
Middleware,
and the RSVP library

NuxtJS + VueX

Section 5
Summary

Nuxt Auth

  • Using `$auth.user`

  • Login and Registration forms

  • Configuring and using `loginWith`

  • User notifications and errors

  • Auth middleware

Why Nuxt Auth?

  • Everyone needs it

  • Seems super hard

  • And actually kinda is hard at first

Nuxt Auth

Section 1

 

Installation

and

using $auth.user

Nuxt Auth

Section 2

 

Login and Register Forms

Nuxt Auth

Section 3


Configuring and using
loginWith()

Nuxt Auth

Section 4

 

Error Handling

and

User Notifications

Nuxt Auth

Section 5


Auth Middleware

Nuxt Auth

Section 6

 

Conclusion

Deploying Nuxt (SSR)

  • Choosing our strategy

  • Deploying bare Nuxt app

  • Connecting to the server

  • Dealing with other stuff

Deploying Nuxt (SSR)

Section 1

Choosing a Strategy

Deploying Nuxt (SSR)

Section 2

Deploying a basic Nuxt app

Deploying Nuxt (SSR)

Section 3

Connecting to the API Server

Deploying Nuxt (SSR)

Section 4

Deploying the Complete App

Deploying Nuxt (SSR)

Section 5

Conclusion

Markdown +

Syntax Highlighting

  • Display Markdown with marked

  • MarkdownDisplay Component

  • Syntax Highlighting with Highlight.js

  • Live Preview in Editing

Markdown +

Syntax Highlighting

Section 1

Displaying Markdown with marked

Markdown +

Syntax Highlighting

Section 2

MarkdownDisplay Component

Markdown +

Syntax Highlighting

Section 3

Syntax Highlighting with Highlight.js

Markdown +

Syntax Highlighting

Section 4

Live Preview Editor

Markdown +

Syntax Highlighting

Section 5

Summary and Preview

VueJS Slots

  • Slots vs Props

  • Basic Slots

  • Scoped Slots

  • Named Slots

VueJS Slots

Section 1

Slots vs Props

VueJS Slots

Slots vs Props

  • Complement, not replacement

  • More complexity -> Slots

VueJS Slots

Section 2

Basic Slots

VueJS Slots

Section 3

Named Slots

VueJS Slots

Section 4

Scoped Slots

VueJS Slots

Conclusion

Making our VueJS App Look Nicer 

  • Clarifying the Video Edit Page

  • Video Preview Component

  • Watch Page Improvements

  • Reinstating the Played Checkmark

  • Font-awesome in Nuxt

Making our VueJS App Look Nicer 

Section 1

Clarifying the Video Edit Page

Section 2

Video Preview Component

Making our VueJS App Look Nicer 

Section 3

Watch Page Improvements

Making our VueJS App Look Nicer 

Section 4

Reinstating the Played Checkmark

Making our VueJS App Look Nicer 

Section 5

Font-awesome
in Nuxt

Making our VueJS App Look Nicer 

Conclusion

Making our VueJS App Look Nicer 

Direct File Upload to S3

Securely from the Browser!

  • Getting a file from the input

  • Setting up S3

  • Getting S3 Credentials Securely

  • Uploading Files with aws-s3

  • Loading indicator

  • Vuetify's v-file-input

Direct File Upload to S3

Securely from the Browser!

Section 1

Getting a file from the html input

Direct File Upload to S3

Securely from the Browser!

Section 2

Setting Up S3

Direct File Upload to S3

Securely from the Browser!

Section 3

Getting S3 Credentials Securely

Direct File Upload to S3

Securely from the Browser!

Section 4

Uploading Files

with

aws-s3

Direct File Upload to S3

Securely from the Browser!

Section 5

Loading Indicator

Direct File Upload to S3

Securely from the Browser!

Section 6

Vuetify's v-file-input

Direct File Upload to S3

Securely from the Browser!

Conclusion

Vuetify's

Data Table Component

  • Basic Table
  • Custom Item (column) Slots
  • Custom Sorting
  • VideoTable Component
  • Tags and Played Columns
  • Expandable Rows (preview the video)
  • DataTable Events
  • Custom Search
  • Abstracting for General Use (use in Admin page)

Vuetify's

Data Table Component

Section 1

Simple Tables

Vuetify's

Data Table Component

Section 2

Custom Item.name (column) Slots

Vuetify's

Data Table Component

Section 3

Custom Sorting

Vuetify's

Data Table Component

Section 4

VideoTable Component

Vuetify's

Data Table Component

Section 5

'Tags' and 'Played' Columns

Vuetify's

Data Table Component

Section 6

Expandable Rows

Vuetify's

Data Table Component

Section 7

DataTable Events

Vuetify's

Data Table Component

Section 8

Custom Search

Vuetify's

Data Table Component

Section 9

Abstracting for General Use

(Awesome stuff with Admin page)

Vuetify's

Data Table Component

Section 10

Review

MirageJS

Creating a mock backend in VueJS

  • Why Mirage?
  • Our First Mirage Endpoint
  • JSONAPI: Models, Serializers, and Shorthands
  • JSONAPI Relationships
  • POST, PUT, and DELETE
  • Authentication
  • Finishing Up

MirageJS

Creating a mock backend in VueJS

Section 1

Why Mirage?

MirageJS

Creating a mock backend in VueJS

Section 2

Our First Mirage Endpoint

MirageJS

Creating a mock backend in VueJS

Section 3

JSONAPI: Models, Serializers, and Shorthands

MirageJS

Creating a mock backend in VueJS

Section 4

JSONAPI Relationships

MirageJS

Creating a mock backend in VueJS

Section 5

Put, Post, and Delete

MirageJS

Creating a mock backend in VueJS

Section 6

Authentication

MirageJS

Creating a mock backend in VueJS

Section 7

Finishing Up

MirageJS

Creating a mock backend in VueJS

Section 8

Conclusion

VueX Strict Mode

Section 1
Anti-Pattern:
Updating VueX with every keystroke

VueX Strict Mode

Section 2
Changeset Pattern, part 1

VueX Strict Mode

Section 3
Fixing a Longstanding Mutation Bug

VueX Strict Mode

Section 4
Changeset Pattern, part 2

VueX Strict Mode

Section 5
Fixing the Snackbar

VueX Strict Mode

Section 7
Conclusion

VueX Strict Mode

Section 3
Closing Snackbars

VueX Strict Mode

Interlude

Strict Mode is CANCELLED?

VueX Strict Mode

Section 4
Better Forms

by using

Changesets

VueX Strict Mode

Section 5
Fixing a Mutation Bug!

Or: how VueX Strict Mode uncovered a longstanding error

VueX Strict Mode

Section 6
Better Forms

by using

Changesets

VueX Strict Mode

Section 6
Turning off

Strict Mode

in Production

VueX Strict Mode

Section 8
Conclusion/Review

MirageJS in Nuxt

Section 1
From Installation

to

First API Endpoint

MirageJS in Nuxt

Section 1.5
A Warning About
Universal Mode

MirageJS in Nuxt

Section 2
Fixing Data Discrepancies

1. Change Server
2. Change Mirage
3. Change Vue Code

Fixing Data Discrepancies

MirageJS in Nuxt

Section 3
Route Shorthands

MirageJS in Nuxt

Section 4
Mirage Relationships

(Adding Tags to Videos)

MirageJS in Nuxt

Section 5
More Mirage Relationships

(Tags Page)

MirageJS in Nuxt

Section 6
Loading Data Once

with Middleware

MirageJS in Nuxt

Section 7
CRUD for Videos, Tags, and VideoTags

MirageJS in Nuxt

Section 8
Mirage API Endpoints
for Nuxt Auth

MirageJS in Nuxt

Section 9
Mirage API Endpoints
for Nuxt Auth

MirageJS in Nuxt

Section 10
Multi-Word

Attribute Keys

MirageJS in Nuxt

Section 11
Reinstating markPlayed button

MirageJS in Nuxt

Section 12
S3 Uploads

MirageJS in Nuxt

Section 13
Deleting Tags

MirageJS in Nuxt

Section 14
Conclusion (for now)

MirageJS in Nuxt

Section 2
Hmmm

Pagination

Section 1
Pagination Bar Mockup

Advanced Components: Reusable
 

Pagination

Section 2
Pagination within Github's API

Advanced Components: Reusable
 

Pagination

Section 3
Displaying the Correct Number of Pages

Advanced Components: Reusable
 

Pagination

Section 4
Active and Disabled States

Advanced Components: Reusable
 

Pagination

Section 5
Query Params
Saving Page Number

Advanced Components: Reusable
 

Pagination

Section 6
Multiple
Query Params

Advanced Components: Reusable
 

Pagination

Section 7
Changing # of
Results Per Page

Advanced Components: Reusable
 

Pagination

Section 8
Using Pagination
with Preloaded Data

Advanced Components: Reusable
 

Pagination

Section 9
Conclusion

Advanced Components: Reusable
 

  • Learning

  • Debounce

  • Error Display

Building a VueJS App 10+

By Jeffrey Biles

Building a VueJS App 10+

  • 367