Vue - это веб-фреймворк для разработки пользовательских интерфейсов на языке программирования JavaScript. Vue создан для постепенного внедрения в существующее приложение. Он решает различные задачи уровня представления (view), упрощает работу с другими библиотеками и позволяет создавать сложные одностраничные приложения (SPA, Single-Page Applications).
Для работы с фреймворком, вам уже нужно знать HTML, CSS и конечно же JavaScript хотя бы на базовом уровне.
Разбиение приложения на компоненты
Vue позволяет разделять весь код приложения на компоненты и собирать их в единое приложение. Компоненты можно использовать повторно в любых других приложениях.
Компонент - это экземпляр Vue с предустановленными опциями. Создать компонент можно следующим образом:
Vue.component('todo-item', {
template: '<li>Это todo</li>'
})
В примере мы объявили новый компонент под названием todo-item. Этот компонент можно использовать в шаблоне другого компонента:
<ul>
<!-- создание экземпляра компонента todo-item -->
<todo-item></todo-item>
</ul>
Чтобы можно было передавать различные данные от родителя в дочерние компоненты, нужно добавить возможность указания входного параметра:
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
Свойство props принимает пользовательский параметр todo.
Декларативный рендеринг
Vue позволяет декларативно отображать данных в DOM с помощью простых шаблонов:
<div id="app">
{{ message }}
</div>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
Это самый простой пример работы Vue.js. Чтобы изменить текст, просто откройте консоль браузера и выполните app.message присвоив ему новое значение. Вместо Hello Vue! динамически отобразится новый текст.
Вот мы и создали наше первое Vue-приложение! Выглядит похоже на простой рендеринг шаблона, но “под капотом” Vue выполнил немало работы. Данные и DOM теперь реактивно связаны. Как это проверить? Просто откройте консоль JavaScript в своём браузере (прямо здесь, на этой странице), и задайте полю app.message другое значение. Вы тут же увидите соответствующее изменение в окне браузера.
Vue.js позволяет связывать атрибуты элементов:
<div id="app-2">
<span v-bind:title="message">
Наведите сюда курсор мыши на этот текст и отобразится дата в элементе tiitle.
</span>
</div>
var app2 = new Vue({
el: '#app-2',
data: {
message: 'Страница загружена в: ' + new Date().toLocaleString()
}
})
Атрибут v-bind в данном коде называется - директивой. Директивы начинаются с префикса v- и применяют особое поведение в Vue.
Условия и циклы
В Vue простоые условия, которые позволяют управлять элементами в DOM:
<div id="app-3">
<span v-if="seen">Сейчас меня видно</span>
</div>
var app3 = new Vue({
el: '#app-3',
data: {
seen: true
}
})
Чтобы скрыть текст, нужно ввести в консоли:
app3.seen = false
Для отображения списков используя данные из массива нужно использовать директиву v-for:
<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: 'Первый пункт' },
{ text: 'Второй пункт' },
{ text: 'Третий пункт' }
]
}
})
Чтобы добавить новый элемент в массив, нужно выполнить в консоли:
app4.todos.push({ text: 'Новый элемент' })
Пользовательский ввод
Для работы с событиями в приложении, используйте директиву v-on, указав метод-обработчик:
<div id="app-5">
<p>{{ message }}</p>
<button v-on:click="reverseMessage">Обратить порядок букв в сообщении</button>
</div>
var app5 = new Vue({
el: '#app-5',
data: {
message: 'Hello Vue.js!'
},
methods: {
reverseMessage: function () {
this.message = this.message.split('').reverse().join('')
}
}
})
Директива v-model позволяет связывать элементы формы и состояние приложения:
<div id="app-6">
<p>{{ message }}</p>
<input v-model="message">
</div>
var app6 = new Vue({
el: '#app-6',
data: {
message: 'Hello Vue!'
}
})
0 комментариев