Skip to main content
CF

Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)

19h 57m 29s
English
Free

VueJS has rapidly become one of the most popular JavaScript frameworks, lauded for its flexibility and ease of use. Frontend frameworks are cherished for allowing the creation of dynamic, mobile-app-like user experiences right in the browser. It’s no surprise that proficiency in frameworks like VueJS is highly sought after, leading to some of the best-paid jobs in the industry!

Course Requirements

  • Basic JavaScript knowledge is required.
  • Knowledge of ES6 is a plus but not mandatory.
  • Basic understanding of HTML and CSS is assumed throughout the course.

Course Description

You may have heard of Angular 2 and ReactJS. VueJS combines the best of both frameworks, making it easy and fun to build anything from small widgets to large, enterprise-level applications. Don’t worry if you are unfamiliar with these frameworks; this course assumes no prior knowledge and will guide you through everything!

We start with the basics, exploring what Vue.js is and how it works before progressing to more complex and advanced topics. Here’s what you’ll learn:

Learning Objectives

  • What VueJS is and why you would use it.
  • Setting up a development environment and workflow.
  • The basics of VueJS, including syntax, templates, and more.
  • Interacting with the DOM, including rendering lists and conditional element attachment.
  • Using and understanding components.
  • Binding to form inputs.
  • An introduction to directives, filters, and mixins.
  • Enhancing your app with animations and transitions.
  • Creating single-page applications (SPAs) with routing.
  • Improving state management using Vuex.
  • Deploying your VueJS application.
  • And much more!

The course includes numerous exercises and projects for hands-on practice, ensuring you learn by doing!

Is This Course Right for You?

Ideal Student Profiles

  • Student #1: You have some JavaScript experience and want to explore its potential for creating interactive web applications. VueJS is perfect for this purpose!
  • Student #2: You have experience with other frontend frameworks like Angular or ReactJS and are looking for an alternative. VueJS might be exactly what you need!
  • Student #3: You have a background in backend frameworks and want to expand into frontend development. VueJS offers a powerful, yet enjoyable way to make that transition.
  • Bonus Student #4: Perhaps you are frustrated with the setup complexities of Angular. VueJS proves a simpler, more efficient choice!

Who This Course is For

  • Anyone interested in frontend development and major JavaScript frameworks.
  • Those who wish to build reactive applications running in the browser.
  • Students who prefer a native JavaScript framework for simpler onboarding compared to Angular 2.
  • Individuals dissatisfied with Angular 2 will find VueJS a refreshing alternative!

What You'll Learn:

  • How to build amazing Vue.js applications from small projects to large, enterprise-level applications.
  • Understand the theory behind Vue.js and apply it to real-world projects.
  • Utilize Vue.js for both multi-page and single-page applications (MPAs and SPAs).

Let’s dive into VueJS right now and explore its capabilities!

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 352 lessons

  • Space or K: play or pause
  • J: rewind 10 seconds
  • L: forward 10 seconds
  • Left Arrow: rewind 5 seconds
  • Right Arrow: forward 5 seconds
  • Up Arrow: volume up
  • Down Arrow: volume down
  • M: mute or unmute
  • F: toggle fullscreen
  • T: toggle theater mode
  • I: toggle mini player
  • 0 to 9: seek to 0 to 90 percent of the video
  • Shift plus N: next video
  • Shift plus P: previous video
0:00 0:00
#Lesson TitleDuration
1Course Introduction 03:09
2Let's Create our First VueJS Application 04:46
3Extending the VueJS Application 04:13
4Course Structure 03:45
5Take Advantage of all Course Resources! 01:57
6Setup VueJS Locally 02:04
7Module Introduction 00:46
8Understanding VueJS Templates 02:36
9How the VueJS Template Syntax and Instance Work Together 02:43
10Accessing Data in the Vue Instance 01:50
11Binding to Attributes 02:44
12Understanding and Using Directives 01:28
13Disable Re-Rendering with v-once 01:42
14How to Output Raw HTML 02:44
15Listening to Events 01:51
16Getting Event Data from the Event Object 02:37
17Passing your own Arguments with Events 01:54
18Modifying an Event - with Event Modifiers 03:24
19Listening to Keyboard Events 02:04
20Writing JavaScript Code in the Templates 03:20
21Using Two-Way-Binding 01:50
22Reacting to Changes with Computed Properties 09:33
23An Alternative to Computed Properties: Watching for Changes 03:54
24Saving Time with Shorthands 01:27
25Dynamic Styling with CSS Classes - Basics 04:23
26Dynamic Styling with CSS Classes - Using Objects 01:36
27Dynamic Styling with CSS Classes - Using Names 03:28
28Setting Styles Dynamically (without CSS Classes) 03:16
29Styling Elements with the Array Syntax 01:15
30Module Wrap Up 00:45
31Module Introduction 00:50
32Conditional Rendering with v-if 03:39
33Using an Alternative v-if Syntax 01:37
34Don't Detach it with v-show 01:44
35Rendering Lists with v-for 02:27
36Getting the Current Index 01:52
37Using an Alternative v-for Syntax 01:11
38Looping through Objects 04:45
39Looping through a List of Numbers 00:58
40Keeping Track of Elements when using v-for 04:09
41Module Wrap Up 00:52
42Introduction & Challenge 02:55
43Setting up the Course Project 02:38
44Creating the Vue Instance and Styling the Healthbars 05:17
45Showing the Player Controls Conditionally 02:03
46Implementing a "Start Game" Method 01:54
47Implementing a "Attack" Method 08:04
48Write better Code - Time for Refactoring! 04:53
49Implementing a "Special Attack" 02:12
50Implementing a "Heal" Method 02:22
51Finishing the Action Buttons 01:00
52Creating an Action Log 02:42
53Printing the Log (v-for) 02:21
54Finishing the Log 01:58
55Styling the Log Conditionally 01:45
56Wrap Up 01:29
57Module Introduction 01:05
58Some Basics about the VueJS Instance 02:59
59Using Multiple Vue Instances 02:53
60Accessing the Vue Instance from Outside 03:30
61How VueJS manages your Data and Methods 04:02
62A Closer Look at $el and $data 04:56
63Placing $refs and Using them on your Templates 05:49
64Where to learn more about the Vue API 00:59
65Mounting a Template 06:43
66Using Components 04:57
67Limitations of some Templates 02:36
68How VueJS Updates the DOM 03:26
69The VueJS Instance Lifecycle 03:13
70The VueJS Instance Lifecycle in Practice 05:40
71Module Wrap Up 00:55
72Module Introduction 01:34
73Why do we need a Development Server? 02:48
74What does "Development Workflow" mean? 03:52
75Using the Vue CLI to create Projects 02:36
76Installing the Vue CLI and Creating a new Project 04:19
77An Overview over the Webpack Template Folder Structure 03:41
78Understanding ".vue" Files 06:47
79Understanding the Object in the Vue File 01:12
80How to Build your App for Production 00:50
81Module Wrap Up 01:12
82Module Introduction 01:05
83An Introduction to Components 04:57
84Storing Data in Components with the Data Method 04:05
85Registering Components Locally and Globally 02:51
86The "Root Component" in the App.vue File 03:22
87Creating a Component 04:25
88Using Components 05:33
89Moving to a Better Folder Structure 02:44
90How to Name your Component Tags (Selectors) 04:32
91Scoping Component Styles 05:06
92Module Wrap Up 00:51
93Module Introduction 00:47
94Communication Problems 02:53
95Using Props for Parent => Child Communication 03:11
96Naming "props" 01:11
97Using "props" in the Child Component 01:29
98Validating "props" 04:58
99Using Custom Events for Child => Parent Communication 05:56
100Understanding Unidirectional Data Flow 01:08
101Communicating with Callback Functions 02:24
102Communication between Sibling Components 06:26
103Using an Event Bus for Communication 05:33
104Centralizing Code in an Event Bus 02:15
105Wrap Up 00:42
106Module Introduction 00:39
107Setting up the Module Project 03:01
108Passing Content - The Suboptimal Solution 02:20
109Passing Content with Slots 00:43
110How Slot Content gets Compiled and Styled 03:04
111Using Multiple Slots (Named Slots) 02:51
112Default Slots and Slot Defaults 02:02
113A Summary on Slots 00:46
114Switching Multiple Components with Dynamic Components 05:32
115Understanding Dynamic Component Behavior 02:08
116Keeping Dynamic Components Alive 00:59
117Dynamic Component Lifecycle Hooks 01:19
118Wrap Up 01:12
119Module Introduction 01:37
120Setting up the Project 01:23
121Initializing the Application 01:29
122Creating the Application Components 04:05
123Passing Data with Props and Slots 02:14
124Allowing Users to Create Quotes with a NewQuote Component 04:09
125Adding Quotes with Custom Events 03:35
126Adding a Info Box 01:07
127Allowing for Quote Deletion 03:41
128Controlling Quotes with a Progress Bar 03:53
129Finishing Touches and State Management 02:14
130Module Introduction 00:55
131A Basic <input> Form Binding 03:47
132Grouping Data and Pre-Populating Inputs 02:43
133Modifying User Input with Input Modifiers 02:59
134Binding <textarea> and Saving Line Breaks 02:54
135Using Checkboxes and Saving Data in Arrays 04:06
136Using Radio Buttons 02:31
137Handling Dropdowns with <select> and <option> 05:10
138What v-model does and How to Create a Custom Control 02:50
139Creating a Custom Control (Input) 05:14
140Submitting a Form 02:09
141Wrap Up 00:44
142Module Introduction 00:54
143Understanding Directives 03:35
144How Directives Work - Hook Functions 02:29
145Creating a Simple Directive 01:23
146Passing Values to Custom Directives 01:09
147Passing Arguments to Custom Directives 02:41
148Modifying a Custom Directive with Modifiers 02:25
149Custom Directives - A Summary 00:29
150Registering Directives Locally 01:38
151Using Multiple Modifiers 04:28
152Passing more Complex Values to Directives 02:14
153Wrap Up 00:45
154Module Introduction 00:46
155Creating a Local Filter 04:33
156Global Filters and How to Chain Multiple Filters 01:46
157An (often-times better) Alternative to Filters: Computed Properties 05:16
158Understanding Mixins 02:24
159Creating and Using Mixins 02:26
160How Mixins get Merged 02:59
161Creating a Global Mixin (Special Case!) 03:27
162Mixins and Scope 02:34
163Wrap Up 01:57
164Module Introduction 01:09
165Understanding Transitions 01:02
166Preparing Code to use Transitions 03:12
167Setting Up a Transition 03:10
168Assigning CSS Classes for Transitions 02:28
169Creating a "Fade" Transition with the CSS Transition Property 03:22
170Creating a "Slide" Transition with the CSS Animation Property 04:00
171Mixing Transition and Animation Properties 03:32
172Animating v-if and v-show 00:34
173Setting Up an Initial (on-load) Animation 01:31
174Using Different CSS Class Names 04:02
175Using Dynamic Names and Attributes 02:34
176Transitioning between Multiple Elements (Theory) 00:35
177Transitioning between Multiple Elements (Practice) 04:43
178Listening to Transition Event Hooks 02:07
179Understanding JavaScript Animations 08:04
180Excluding CSS from your Animation 01:29
181Creating an Animation in JavaScript 06:19
182Animating Dynamic Components 05:58
183Animating Lists with <transition-group> 00:45
184Using <transition-group> - Preparations 04:21
185Using <transition-group> to Animate a List 06:13
186Understanding the App 01:16
187Creating the App 12:05
188Adding Animations 06:39
189Wrap Up 01:04
190Module Introduction 01:43
191Accessing Http via vue-resource - Setup 04:01
192Creating an Application and Setting Up a Server (Firebase) 05:25
193POSTing Data to a Server (Sending a POST Request) 06:11
194GETting and Transforming Data (Sending a GET Request) 06:55
195Configuring vue-resource Globally 02:49
196Intercepting Requests 03:35
197Intercepting Responses 02:52
198Where the "resource" in vue-resource Comes From 04:43
199Creating Custom Resources 02:40
200Resources vs "Normal" Http Requests 00:29
201Understanding Template URLs 05:07
202Wrap Up 01:43
203Module Introduction 01:39
204Setting up the VueJS Router (vue-router) 02:17
205Setting Up and Loading Routes 06:44
206Understanding Routing Modes (Hash vs History) 04:15
207Navigating with Router Links 03:46
208Where am I? - Styling Active Links 03:21
209Navigating from Code (Imperative Navigation) 02:43
210Setting Up Route Parameters 02:00
211Fetching and Using Route Parameters 02:04
212Reacting to Changes in Route Parameters 03:05
213Setting Up Child Routes (Nested Routes) 04:40
214Navigating to Nested Routes 03:10
215Making Router Links more Dynamic 02:05
216A Better Way of Creating Links - With Named Routes 03:22
217Using Query Parameters 02:55
218Multiple Router Views (Named Router Views) 03:28
219Redirecting 02:14
220Setting Up "Catch All" Routes / Wildcards 01:07
221Animating Route Transitions 02:35
222Passing the Hash Fragment 03:29
223Controlling the Scroll Behavior 03:22
224Protecting Routes with Guards 01:14
225Using the "beforeEnter" Guard 07:52
226Using the "beforeLeave" Guard 03:32
227Loading Routes Lazily 07:09
228Wrap Up 01:03
229Module Introduction 01:13
230Why a Different State Management May Be Needed 02:26
231Understanding "Centralized State" 01:33
232Using the Centralized State 06:50
233Why a Centralized State Alone Won't Fix It 02:42
234Understanding Getters 00:49
235Using Getters 02:41
236Mapping Getters to Properties 06:58
237Understanding Mutations 01:15
238Using Mutations 04:52
239Why Mutations have to run Synchronously 01:35
240How Actions improve Mutations 01:33
241Using Actions 05:00
242Mapping Actions to Methods 04:59
243A Summary of Vuex 04:15
244Two-Way-Binding (v-model) and Vuex 05:57
245Improving Folder Structures 01:02
246Modularizing the State Management 04:57
247Using Separate Files 04:19
248Using Namespaces to Avoid Naming Problems 06:45
249Wrap Up 00:51
250Project Introduction 03:12
251Project Setup and Planning 02:46
252Creating the First Components 02:56
253Setup Project Routes 04:43
254Adding a Header and Navigation 06:45
255Planning the Next Steps 01:23
256Creating Stocks Components 06:32
257Adding a "Buy" Button 05:58
258Setting up the Vuex State Management 10:22
259Adding a Portfolio Module to Vuex 10:03
260Working on the Portfolio Stocks 06:52
261Connecting the Portfolio with Vuex 02:22
262Time to fix some Errors 02:01
263Displaying the Funds 03:42
264Adding some Order Checks 05:42
265Making Funds Look Nicer with Filters 01:49
266Ending the Day - Randomizing Stocks 05:31
267Animating the Route Transitions 03:15
268Saving & Fetching Data - Adding a Dropdown 02:18
269Setting up vue-resource and Firebase 02:17
270Saving Data (PUT Request) 02:52
271Fetching Data (GET Request) 05:05
272Testing and Bug Fixes 02:51
273Project Wrap Up 01:23
274Bonus: Debugging Vuex with Vue Developer Tools 02:00
275Module Introduction 01:13
276Preparing for Deployment 01:46
277Deploying the App (Example: AWS S3) 05:58
278Course Roundup 00:59
279Time to Practice (1) - Outputting Data to Templates (Problem) 02:00
280Time to Practice (1) - Outputting Data to Templates (Solution) 06:13
281Time to Practice (2) - Events (Problem) 01:43
282Time to Practice (2) - Events (Solution) 04:55
283Time to Practice (3) - Reactive Properties (Problem) 02:30
284Time to Practice (3) - Reactive Properties (Solution) 05:48
285Time to Practice (4) - Styling (Problem) 03:50
286Time to Practice (4) - Styling (Solution) 18:18
287Time to Practice (5) - Conditionals and Lists (Problem) 01:41
288Time to Practice (5) - Conditionals and Lists (Solution) 09:39
289Time to Practice (6) - Components (Problem) 01:46
290Time to Practice (6) - Components (Solution) 02:13
291Time to Practice (7) - Component Communication (Problem) 03:07
292Time to Practice (7) - Component Communication (Solution) 10:18
293Time to Practice (8) - Slots and Dynamic Components (Problem) 01:28
294Time to Practice (8) - Slots and Dynamic Components (Solution) 03:01
295Time to Practice (9) - Forms (Problem) 01:31
296Time to Practice (9) - Forms (Solution) 15:18
297Time to Practice (10) - Directives (Problem) 00:55
298Time to Practice (10) - Directives (Solution) 05:56
299Time to Practice (11) - Filters and Mixins (Problem) 01:09
300Time to Practice (11) - Filters and Mixins (Solution) 08:13
301About this Section 00:38
302Module Introduction 01:08
303Project Setup 02:47
304Axios Setup 02:13
305Sending a POST Request 05:40
306Sending a GET Request 02:53
307Accessing & Using Response Data 05:49
308Setting a Global Request Configuration 05:44
309Using Interceptors 05:50
310Custom Axios Instances 04:58
311Wrap Up 00:59
312About this Section 00:53
313Module Introduction 02:00
314How Authentication Works in SPAs 03:11
315Project Setup 02:37
316Adding User Signup 05:15
317Adding User Signin (Login) 02:42
318Using Vuex to send Auth Requests 04:27
319Storing Auth Data in Vuex 03:46
320Accessing other Resources from Vuex 08:42
321Sending the Token to the Backend 05:39
322Protecting Routes (Auth Guard) 02:49
323Updating the UI State (based on Authentication State) 03:02
324Adding User Logout 05:02
325Adding Auto Logout 05:37
326Adding Auto Login 10:37
327Wrap Up 01:02
328About this Section 00:58
329Module Introduction 01:06
330Installing Vuelidate 02:05
331Adding a Validator 10:15
332Adding Validation UI Feedback 04:56
333Controlling Styles for Invalid Entries 02:11
334More Validators 06:34
335Validating Passwords For Equality 06:17
336Using the Required-Unless Validator 04:53
337Validating Arrays 07:20
338Controlling the Form Submit Button 02:13
339Creating Custom Validators 02:47
340Async Validators 09:17
341Wrap Up 01:06
342Module Introduction 03:19
343Creating a Project 04:42
344Analyzing the Created Project 04:50
345Using Plugins 04:06
346CSS Pre-Processors 03:15
347Environment Variables 07:29
348Building the Project 03:44
349Instant Prototyping 02:40
350Different Build Targets 08:40
351Using the "Old" CLI Templates (vue init) 01:20
352Using the Graphical User Interface (GUI) 05:06

Related courses

Frequently asked questions

What are the prerequisites for enrolling in this course?
To enroll in this course, you need a basic understanding of JavaScript. While knowledge of ES6 is beneficial, it is not mandatory. Additionally, a basic understanding of HTML and CSS is assumed throughout the course.
What projects or applications will I build during this course?
During the course, you will start by creating basic VueJS applications and progressively work on more complex projects. You'll implement features like conditional rendering, dynamic styling, and interactive elements using VueJS components. Specific projects include creating a Vue instance and styling health bars, implementing game mechanics like 'Attack' and 'Heal' methods, and developing an action log.
Who is the target audience for this course?
This course is designed for individuals interested in learning VueJS, whether they are beginners or developers familiar with other frameworks like Angular 2 and ReactJS. It caters to those who want to build dynamic, mobile-app-like experiences in the browser and are looking to enhance their frontend development skills.
What specific tools or platforms will the course cover?
The course covers various tools and concepts essential to VueJS development. You'll learn about VueJS templates, directives, and two-way data binding. Additionally, the course includes lessons on setting up a development environment, managing Vue instances, and utilizing tools such as event modifiers and computed properties.
What topics are not covered in this course?
The course does not cover advanced topics beyond VueJS 2, such as VueJS 3 features or integration with backend technologies. It also does not delve deeply into other JavaScript frameworks like ReactJS or Angular, focusing instead on VueJS and its ecosystem.
How does the depth of this course compare to similar courses?
This course offers a comprehensive exploration of VueJS 2, starting with fundamental concepts and advancing to complex features and applications. Unlike some introductory courses, it includes 352 lessons covering a wide range of topics from basic syntax to advanced components and directives, providing a thorough understanding of VueJS capabilities.
How much time should I expect to commit to this course?
The course consists of 352 lessons, and while the exact runtime is not specified, you should expect to commit several hours per week over a period of weeks to fully engage with the material. The course is designed to be self-paced, allowing students to progress through the lessons according to their own schedules.