Vue JS (often pronounced as "view") is a progressive JavaScript framework used to build user interfaces and single-page applications. If you’re looking to learn Vue JS from scratch, the course "Vue JS – Полный курс c нуля" from Result University is a great place to start. In this detailed tutorial, we will cover the key concepts and features of Vue JS that are taught in this course.
-
Introduction to Vue JS:
- Vue JS is a lightweight framework that is easy to incorporate into existing projects. It is designed to be incrementally adoptable, so you can start using it in small parts of your project and gradually expand its usage.
- Vue JS is well-known for its simplicity and ease of use. It focuses on the View layer of the application and allows developers to create interactive and dynamic user interfaces with minimal effort.
- The course "Vue JS – Полный курс c нуля" from Result University is designed for beginners who have little to no experience with Vue JS. It covers all the foundational concepts and features required to build modern web applications.
-
Setting up the development environment:
- Before diving into Vue JS, you need to set up your development environment. Install Node.js and npm (Node Package Manager) on your computer to manage dependencies and run scripts. You can download Node.js from the official website (https://nodejs.org).
- Once Node.js is installed, you can use npm to install Vue CLI (Command Line Interface) globally on your computer. Vue CLI is a command-line tool that helps you create, manage, and build Vue JS projects. Run the following command in the terminal to install Vue CLI:
npm install -g @vue/cli
- After installing Vue CLI, you can create a new Vue JS project by running the following command:
vue create my-vue-app
- Replace "my-vue-app" with the name of your project. Vue CLI will guide you through the project setup process and create a new Vue JS project in the specified directory.
-
Understanding the Vue instance:
- In Vue JS, everything revolves around the Vue instance. The Vue instance is created using the
new Vue()
constructor and serves as the root of your Vue application. - You can define data properties, methods, computed properties, and lifecycle hooks in the Vue instance. Data properties store the reactive data that drives the user interface, while methods perform actions based on user interactions.
- Here is an example of a simple Vue instance:
new Vue({ el: '#app', data: { message: 'Hello, Vue!' }, methods: { greet() { alert(this.message); } } });
- In this example, the Vue instance is mounted on the element with the
id
of "app." Thedata
property stores a message that is displayed in the user interface, and thegreet
method shows an alert with the message when called.
- In Vue JS, everything revolves around the Vue instance. The Vue instance is created using the
-
Templating with Vue JS:
- Vue JS uses a simple and concise templating syntax to bind data to the DOM and create dynamic content. You can use directives like
{{ }}
for text interpolation,v-bind
for attribute binding,v-if
for conditional rendering, andv-for
for list rendering. - Here is an example of template interpolation in Vue JS:
<div id="app"> <p>{{ message }}</p> </div>
new Vue({ el: '#app', data: { message: 'Hello, Vue!' } });
- In this example, the message "Hello, Vue!" is bound to the
p
element using text interpolation. Any changes to themessage
data property will automatically update the displayed text.
- Vue JS uses a simple and concise templating syntax to bind data to the DOM and create dynamic content. You can use directives like
-
Handling user input with Vue JS:
- Vue JS provides two-way data binding, which means that changes to form inputs are automatically reflected in the associated data properties and vice versa. You can use directives like
v-model
to create two-way binding for form elements. - Here is an example of two-way data binding with an input element in Vue JS:
<div id="app"> <input type="text" v-model="message"> <p>{{ message }}</p> </div>
new Vue({ el: '#app', data: { message: 'Hello, Vue!' } });
- In this example, the input element is bound to the
message
data property using thev-model
directive. Any changes made to the input will update themessage
property and reflect in the displayed text.
- Vue JS provides two-way data binding, which means that changes to form inputs are automatically reflected in the associated data properties and vice versa. You can use directives like
-
Computed properties and watchers:
- Computed properties in Vue JS are used to derive values based on the existing data properties. They are cached and only re-evaluated when their dependencies change, improving performance.
- Watchers in Vue JS allow you to perform asynchronous or expensive operations when specific data properties change. They are useful for handling side effects or reacting to data changes.
- Here is an example of using computed properties and watchers in Vue JS:
<div id="app"> <input type="number" v-model="quantity"> <p>Total: {{ total }}</p> </div>
new Vue({ el: '#app', data: { price: 10, quantity: 0 }, computed: { total() { return this.price * this.quantity; } }, watch: { quantity(newVal, oldVal) { console.log(`Quantity changed from ${oldVal} to ${newVal}`); } } });
- In this example, the
total
computed property calculates the total price based on the input quantity and price. Thequantity
watcher logs a message when the quantity changes.
-
Component-based architecture in Vue JS:
- Vue JS supports component-based architecture, allowing you to create reusable and modular UI components. Components encapsulate their own data, methods, and lifecycle hooks, making them easy to manage and reuse.
- You can register components globally or locally within a Vue instance. Components can communicate with each other using props for parent-child communication and events for child-parent communication.
-
Here is an example of creating and using a basic Vue component:
<!-- ChildComponent.vue --> <template> <button @click="increment">{{ count }}</button> </template> <script> export default { data() { return { count: 0 }; }, methods: { increment() { this.count++; this.$emit('incremented', this.count); } } }; </script>
<div id="app"> <child-component @incremented="updateCount"></child-component> <p>Total count: {{ totalCount }}</p> </div>
import Vue from 'vue'; import ChildComponent from './ChildComponent.vue'; new Vue({ el: '#app', data: { totalCount: 0 }, methods: { updateCount(count) { this.totalCount += count; } }, components: { ChildComponent } });
- In this example, the
ChildComponent
emits an event when the button is clicked, and the parent component updates the total count based on the emitted data.
-
Routing in Vue JS:
- Vue JS provides a built-in router that allows you to create single-page applications with multiple views and navigations. You can define routes, nested routes, and route parameters using the Vue Router library.
- To set up routing in Vue JS, you need to install Vue Router and configure the routes in the main Vue instance. You can use router-link for navigation and router-view for displaying the current route component.
-
Here is an example of setting up routing in Vue JS:
import Vue from 'vue'; import VueRouter from 'vue-router'; Vue.use(VueRouter); const Home = { template: '<div>Home</div>' }; const About = { template: '<div>About</div>' }; const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]; const router = new VueRouter({ routes }); new Vue({ el: '#app', router, template: ` <div> <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> <router-view></router-view> </div> ` });
- In this example, the Vue Router is initialized with two routes for the home and about pages. The router links define navigation between the routes, and the router view displays the current route component.
-
State management with Vuex:
- Vuex is a state management library for Vue JS that helps you manage global application state in a predictable and centralized way. It consists of a store, state, mutations, actions, and getters.
- To use Vuex in your Vue JS project, you need to install the Vuex library and set up a store with modules for managing different parts of the application state. You can commit mutations to update the state and dispatch actions to perform asynchronous operations.
-
Here is an example of setting up a Vuex store in Vue JS:
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } }, actions: { incrementAsync({ commit }) { setTimeout(() => { commit('increment'); }, 1000); } } }); new Vue({ el: '#app', store, template: ` <div> <p>{{ $store.state.count }}</p> <button @click="$store.commit('increment')">Increment</button> <button @click="$store.dispatch('incrementAsync')">Increment Async</button> </div> ` });
- In this example, the Vuex store manages the count state with a mutation to increment the count synchronously and an action to increment the count asynchronously after a delay.
- Conclusion:
- Vue JS is a powerful and versatile framework for building interactive and dynamic user interfaces. The course "Vue JS – Полный курс c нуля" from Result University covers all the essential concepts and features of Vue JS, from setting up the development environment to advanced topics like routing and state management.
- By following this tutorial and completing the course, you will gain a solid understanding of Vue JS and be able to create modern web applications with ease. Start your Vue JS journey today and unlock the full potential of this popular JavaScript framework. Happy coding!
Теперь любой сам может оценить качество этого курса и сделать для себя вывод: полезный он или нет. Всем приятного обучения!
Начать бесплатно профессию + диагностика в Result: https://bit.ly/3YjEXxc
Полный Roadmap по Frontend: https://bit.ly/3Yjvzd8
Исходники в моем телеграм канале: https://t.me/js_by_vladilen
Поддержать + вступить в закрытый клуб: https://t.me/NextgenSocialBot
курс безбожно устарел, еще б 10ти летней давности выложил. сейчас только vue 3 со script setup и pinia для стора, в идеале на ts.
не тратьте время, полно других актуальных и нормальных материалов для обучения.
4:52:00 Не срабатывает isOpen, т.к Vue говорит, что в дочерний компонент приходит свойство, которое изменять нельзя. Т.е При нажатии на кнопку @click="isOpen = !isOpen" Не срабатывает высвечивание текста. Пытался найти ответ в интернету, но что то слишком сложно для моего уровня. Можете пожалуйста обьяснить почему это произошло и как связать значения из дочернего компонента в родительский без костылей.
Ну или как написано ниже в комментариях, нет смысла изучать старое, потому что все ответы в интернете направлены на новый синтаксис.
тк я немного не понял, это один из видосов (блоков) и дальше будет ещё 3 таких видоса или это все 4 блока сразу? Тогда не понял зачем говорить про 4 блока.
PS, только начало щас смотрю
Сегодня начал смотреть next.js и вообще мне нравится реакт, но тут курс по вью на 18 часов….я теперь разрываюсь что учить
Спасибо Дорогой! Такие как ты, двигаешь нашу отрасль вперед
Отлично, 👍 🎉 не в курсе шо к чему, но прям в тему. Из всех фронтовых фреймов мне только Vue и Angular остались ))
Я от этого курса узнал о тебе и с тех пор смотрю тебя ))
Хи… не могу досмотреть – ютюб не грузит, не могу скачать, большой файл (((
Никогда особо не следил за Владиленом, но слышал об этой ситуации. Поступок максимально мужской.
Спасибо за такое полезное видео. Было бы неплохо побить на таймкоды.
Начало 35:38
Когда будет курс Ангулар 17 + ??
А на сколько курс актуален?
Всё таки давно записан
Респект и уважуха! Спасибо!
Возможно совпадение, но неделю назад пытался найти что-то стоящее в ру сегменте и ничего не нашлось, начал искать забугорное и тут такое. Спасибо 🙂
Я на реакте год пишу, хочу перекатиться во вью, скажите, я в конце курса смогу несложную CRMку с react на vue переписать? этой информации будет достаточно?
выложите пожалуйста курс по биткоину
Ну судя по тому видео АйтиБороды, что послужило, как я понимаю, поводом для публикации данного видео, то критика была не на пустом месте и не для того что бы просто покритиковать из каких-то корыстных/завистливых побуждений, а для того что бы держать планку обучающих материалов во Vue комьюнити. И говорилось о том, что были некоторые неточности в материалах, а не критиковали курс как таковой…
Владилен, ну ты монстр