Vue.js - это фреймворк Javascript для создания пользовательского интерфейса веб-сайтов. Он во многом напоминает Angular, а также имеет определенное концептуальное сходство с React.
Вы можете загрузить vue.js, чтобы включить его в свой проект, или вы можете загрузить его с компакт-диска:
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
Когда этот файл загружается, он помещает в глобальную область видимости конструктор с именем Vue
. Вы вызовете этот конструктор, передав ему объект с информацией о конфигурации, чтобы создать экземпляр Vue
. Процесс написания приложения Vue в основном заключается в добавлении свойств и методов к объекту, который вы передаете конструктору Vue
.
Начнем с того, что назовем его с помощью простейшего объекта, который только можно вообразить.
new Vue({ el: '#main' });
Свойство el
сообщает Vue, в каком элементе будет отображаться ваш пользовательский интерфейс. Vue автоматически найдет элемент, соответствующий селектору, и сохранит его в свойстве вашего экземпляра с именем $el
. Содержимое элемента будет рассматриваться как шаблон и отображаться автоматически.
<!doctype html> <html> <head> <title>My Vue.js App</title> </head> <body> <div id="main"> <p>{{ 'Hello World!' }} <p>2 + 2 = {{ 2 + 2 }} </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src="script.js"></script> </body> </html>
Учитывая этот HTML и предполагая, что вызов конструктора Vue
выше помещен в script.js, видимый результат будет:
Выражения, содержащиеся в {{
и }}
, автоматически оцениваются и обрабатываются. Нет необходимости вручную компилировать шаблон, вызывать его и вставлять результат в DOM. Это все сделано за вас.
Вы можете указать данные, которые хотите отобразить в пользовательском интерфейсе, добавив свойство data
к объекту, который вы передаете в Vue
. Все указанные таким образом свойства будут доступны для использования в вашем HTML.
<div id="main"> <h1>{{ heading }}</h1> </div> new Vue({ el: '#main', data: { heading: 'My Vue App' } });
Поля, указанные вами в объекте data
, будут скопированы в ваш экземпляр представления. Конечно, экземпляр Vue
- это просто объект Javascript, и вы можете напрямую добавлять к нему свойства обычным способом. Однако, если вы добавите их через data
, они будут реактивными свойствами. Если их значения изменяются в течение срока службы вашего приложения, пользовательский интерфейс автоматически обновляется, чтобы отразить это изменение. По этой причине вы должны использовать data
для добавления любого свойства, которое вы используете в своем HTML. Если у вас нет значения свойства во время вызова конструктора Vue
, вам следует использовать значение-заполнитель, например пустую строку или null
.
Синтаксис двойной фигурной скобки работает для текстовых узлов, но если вы хотите использовать поля данных в атрибутах HTML, вы должны сделать что-то немного другое.
<div id="main"> <h1 v-bind:class="headingClassName">{{ heading }}</h1> </div> new Vue({ el: '#main', data: { heading: 'My Vue App', headingClassName: 'heading' } });
v-bind
- это то, что называется директивой, специальным атрибутом, который начинается с v-
и имеет в качестве значения выражение Javascript. Существует множество директив, которые понимает Vue (также можно создать свои собственные). Например, v-if
можно использовать для условного отображения содержимого, а v-for
можно использовать для отображения списков элементов.
<div id="main"> <ul v-if="cities.length > 0"> <li v-for="city in cities">{{city.name}}, {{city.country}} </ul> </div> new Vue({ el: '#main', data: { cities: [ { name: 'Berlin', country: 'Germany' }, { name: 'Istanbul', country: 'Turkey' }, { name: 'Paris', country: 'France' } ] } });
Директива v-model
используется в полях формы для двусторонней привязки данных. В поле формы будет отображаться значение указанного свойства. Когда пользователь обновляет значение поля формы, значение свойства обновляется автоматически.
<div id="main"> <h1>Hello, <span>{{greetee || 'World'}}!</h1> <input type="text" v-model="greetee"> </div> new Vue({ el: '#main', data: { greetee: '' } });
Директива v-on
используется для добавления обработчиков событий к элементам. Вы можете добавить к своим Vue
методы экземпляра, которые будут вызываться в обработчиках событий (или где-либо еще), добавив свойство methods
к объекту, который вы передаете конструктору.
<div id="main"> <span v-on:mouseover="emphasize" v-on:mouseout="deemphasize"> Hello, World! </span> </div> new Vue({ el: '#main', methods: { emphasize: function(e) { e.target.style.textDecoration = 'underline'; this.count = this.count ? this.count + 1 : 1; }, deemphasize: function(e) { e.target.style.textDecoration = ''; this.logCount(); }, logCount: function() { console.log(this.count); } } });
Жизненный цикл
Vue
экземпляров проходят несколько этапов своей жизни. Они создаются, они отображают контент в DOM, обновляют этот контент, когда это необходимо, и, наконец, они уничтожаются. Vue позволяет вам определять, когда возникают эти моменты, и предпринимать соответствующие действия, когда они возникают. Он делает это с помощью ловушек жизненного цикла - методов, которые вы можете добавить в свой Vue
экземпляр, которые будут автоматически вызываться при возникновении события жизненного цикла. Например, если вы хотите что-то сделать при создании вашего Vue
экземпляра, вы должны добавить свойство created
к объекту, который вы передаете в Vue
, и установить его для функции, которая делает то, что вы хотите.
Хук жизненного цикла mounted
запускается, когда Vue обработал ваш el
и добавил свойство $el
в ваш экземпляр. Эту ловушку жизненного цикла удобно использовать для выполнения HTTP-запросов для данных, которые вы хотите отобразить.
Ajax с аксиомами
Vue.js не имеет встроенных средств для выполнения запросов ajax. Мы будем использовать основанную на обещаниях библиотеку под названием axios, чтобы удовлетворить эту потребность.
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
axios довольно прост в использовании. У него есть метод get
, который выполняет запросы GET, и метод post
для выполнения запросов POST. Вы передаете URL-адрес в качестве первого аргумента обеим функциям. Вы можете передать объект в качестве второго аргумента post
, и он будет преобразован в тело запроса JSON.
Когда обещание о том, что возвращаются get
и post
, выполняется, значение, которое функция, которую вы передали then
, получит, будет объектом, представляющим полученный ответ. У него множество свойств, таких как status
и headers
. Обычно вас больше всего интересует свойство data
, которое содержит тело ответа. Тела ответов JSON будут проанализированы автоматически.
Спасибо за чтение! Нажмите, чтобы увидеть другие статьи автора:
Тестирование программного обеспечения и методологии
В своей серии« Тестирование программного обеспечения я попытаюсь обсудить, почему необходимо тестирование, как эти тесты выполняются, как… средний уровень. com »