Ранее мы представили общий базовый синтаксис платформы Vue.js. Теперь мы можем объединить эти синтаксисы для реализации небольшой функции: отображения списка веб-фреймворков и поддержки новых фреймворков.
существовать vue_learning/basic
Создайте новый в каталоге computed.html
Сохраните код этого руководства, а затем напишите код реализации указанной выше функции следующим образом:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Вычисляемые свойства Пример кода</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<style>
.php {
color: cornflowerblue;
}
.javascript {
color: gold;
}
.golang {
color: aqua;
}
.python {
color: darkgreen;
}
</style>
</head>
<body>
<div id="app">
<p>Webрамки развития:</p>
<ul>
<li v-for="framework in frameworks" :class="framework.language">
{{ framework.name }}
</li>
</ul>
<hr>
рамка:<input v-model="newFramework" name="framework"/>
язык:
<select v-model="newLanguage">
<option v-for="language in languages" v-text="language"></option>
</select>
<button @click="addFramework">Новыйрамка</button>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
frameworks: [
{'name': 'Laravel', 'language': 'php'},
{'name': 'Vue', 'language': 'javascript'},
{'name': 'Gin', 'language': 'golang'},
{'name': 'Flask', 'language': 'python'},
],
languages: [
'php', 'golang', 'javascript', 'python'
],
newFramework: '',
newLanguage: '',
},
methods: {
addFramework() {
this.frameworks.push(
{'name': this.newFramework, 'language': this.newLanguage}
);
}
}
});
</script>
</body>
</html>
существуют В приведенном выше коде,Мы использовали весь основной синтаксис, представленный ранее, такой как привязка данных, рендеринг списков, мониторинг и обработка событий, привязка имен атрибутов и классов и т. д.,Предварительный просмотр этой страницы в браузере:
Мы можем добавлять рамки к элементам списка с помощью полей ввода и кнопок под списком:
можно увидеть с помощью Vue.js Эффективность разработки фреймворка выше, чем у традиционных JavaScript DOM Программирование гораздо более продвинуто (jQuery Слишком DOM Программирование лишь инкапсулирует многие часто используемые функции и делает базовые адаптации для совместимости с различными браузерами). Однако текущие элементы списка существования выглядят немного беспорядочно. Фреймы различных языков распределены в элементах списка случайным образом, что неудобно идентифицировать, если мы хотим объединить элементы одного и того же языка. Web Кадры все собрались воедино, что делать?
Это можно сделать с помощью элемента списка language
Поля сортируются для группового отображения.
Мы можем существовать addFramework
Добавьте раздел функции к функции сортировкиверно frameworks
Массив по language
Поля отсортированы по возрастанию:
methods: {
addFramework() {
this.frameworks.push(
{'name': this.newFramework, 'language': this.newLanguage}
);
// верно frameworks Массив по language Сортировка полей по возрастанию
this.frameworks.sort((a, b) => {
if (a.language < b.language) {
return -1;
} else if (a.language > b.language) {
return 1;
} else {
return 0;
}
});
}
}
существования Обновите страницу в браузере. После добавления фрейма вы увидите, что список фреймов изменится:
Однако в этой реализации есть проблема: при первом отображении страницы элементы списка не соответствуют language
Сортировка. Чтобы реализовать эту сортировку более элегантно, вы можете использовать Vue.js Вычисляемые, предоставляемые фреймворком свойства Функция。
Вычисляемые Свойства буквально означают вычисляемый атрибут, Вычисляемый. Свойства могут быть определены через функцию. Тело функции представляет собой логику расчета атрибута. HTML Вызов Вычисляемых в представлении как обычное свойство свойства,Vue существовать Впервые посещаю это место Вычисляемые свойствачас,Верно должно функционировать тело Вычисляемые значения свойства и кэшировать его для каждого последующего Вычисляемого Общие значения атрибутов, от которых зависит свойство, изменились.,будет пересчитан,Так что проблем с производительностью нет.
Вычисляемые свойстваопределениесуществовать Vue пример computed
В атрибутах мы передаем описанную выше логику сортировки через Вычисляемые. свойства sortedFrameworks
Для реализации соответствующий код реализации выглядит следующим образом:
methods: {
addFramework() {
this.frameworks.push(
{'name': this.newFramework, 'language': this.newLanguage}
);
}
},
computed: {
// определить Вычисляемые свойства sortedFrameworks
sortedFrameworks() {
return this.frameworks.sort((a, b) => {
if (a.language < b.language) {
return -1;
} else if (a.language > b.language) {
return 1;
} else {
return 0;
}
});
}
}
Уведомлениесуществовать sortedFrameworks
Вычисляемые В теле функции свойств необходимо передать return
Ключевое слово возвращает вычисленное значение атрибута. Здесь используются следующие общие атрибуты. frameworks
。
Таким образом, мы можем существовать HTML Назовите это Вычисляемые в виде списка свойства sortedFrameworks
оказывать Web Создайте это:
<ul>
<li v-for="framework in sortedFrameworks" :class="framework.language">
{{ framework.name }}
</li>
</ul>
Обновите соответствующую страницу браузера. При инициализации страницы будет отображен отсортированный список:
При добавлении нового кадра порядок списка кадров также будет автоматически изменен.
Хорошо, это базовый синтаксис Vue.js. В следующем уроке мы начнем путь разработки компонентов Vue.