Базовый синтаксис Vue3
Vue.js — это прогрессивный JavaScript-фреймворк, в основном используемый для создания пользовательских интерфейсов.
Vue.js основан на концепциях компонентизации и реактивных данных, предоставляя простой и эффективный способ создания пользовательских интерфейсов.
Однофайловые компоненты Vue
Однофайловый компонент Vue (SFC) — это файловый формат фреймворка Vue.js, который позволяет разработчикам размещать код HTML, JavaScript и CSS в одном файле, обычно с.vueв качестве расширения файла.
Однофайловый компонент — это переиспользуемая форма организации кода, которая инкапсулирует HTML, CSS и JavaScript, относящиеся к одному компоненту, в файле, используя.vueв качестве суффикса файла.
Ниже приведены некоторые распространённые базовые синтаксические конструкции и концепции Vue.js, включая синтаксис шаблонов, директивы, обработку событий, вычисляемые свойства и компоненты, которые будут подробно объяснены в следующих главах.
1. Создание экземпляра Vue
Создание экземпляра Vue — это первый шаг к началу использования Vue.js. Обычно вы создаёте экземпляр Vue в HTML-файле и монтируете его к DOM-элементу.
Пример
{{ message }}
</div>
<script>
const HelloVueApp = {
data() {
return {
message: 'Hello Vue!!'
}
}
}
Vue.createApp(HelloVueApp).mount('#hello-vue')
</script>
Попробуйте »
Описание раздела HTML:
<div id="hello-vue" class="demo">:
- Это
<div>элемент, у которого idhello-vueи классdemo。 - В приложении Vue этот
<div>будет управляться экземпляром Vue, и его содержимое будет обновляться при изменении данных.
{{ message }}:
- Это синтаксис шаблонов Vue.js, используемый для привязки
messageданных к странице. - Когда данные в экземпляре Vue
messageизменяются, содержимое на странице обновится соответствующим образом.
Описание раздела JavaScript:
Определение экземпляра Vue:
const HelloVueApp = {
data() {
return {
message: 'Hello Vue!!'
}
}
}HelloVueAppпредставляет собой обычный объект JavaScript, содержащий опции компонента Vue.data()метод возвращает объект, содержащийmessageсвойство, и начальное значение этого свойства —'Hello Vue!!'。
Создайте и смонтируйте приложение Vue:
Vue.createApp()метод используется для создания экземпляра приложения Vue, а параметр — это объект, содержащий опции компонента (здесь этоHelloVueApp)。.mount('#hello-vue')метод монтирует экземпляр приложения Vue к элементу страницы сid="hello-vue"DOM-элементом.
Процесс выполнения
- Когда страница загружается, браузер анализирует HTML и JavaScript.
- Когда выполняется скрипт Vue.js, он создаёт экземпляр приложения Vue и привязывает его к
<div id="hello-vue">элементу. - Экземпляр приложения Vue, в соответствии с
data()начальными данными в, будетmessageотображать значение ... на странице{{ message }}позицию. - Когда
messageКогда данные изменяются (например, в результате взаимодействия с пользователем или асинхронных операций), страница будет автоматически обновляться, отражая эти изменения.
2. Синтаксис шаблонов
Интерполяция
Vue.js использует двойные фигурные скобки{{ }}для представления текстовой интерполяции:
Пример
Директивы
Директивы — это специальные атрибуты с префиксомv-, используемые для выражения логики в шаблонах.
v-bind: динамически привязывает один или несколько атрибутов или свойство компонента.
<a v-bind:href="url.html">Link</a>
Сокращённая запись:
<a :href="url.html">Link</a>
v-if / v-else-if / v-else: условный рендеринг.
<p v-if="visible">内容可见</p> <p v-else>内容不可见</p>
v-for: рендеринг списка.
<ul>
<li v-for="item in items" :key="item.id">{{ item.text }}</li>
</ul>
v-model: двусторонняя привязка данных.
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
v-on: обработчик событий.
<button v-on:click="doSomething">Click me</button>
Сокращённая запись:
<button @click="doSomething">Click me</button>
3. Обработка событий
В Vue.js можно использовать директиву v-on, чтобы прослушивать события DOM и выполнять некоторый код JavaScript, когда они запускаются.
Пример
<button @click="greet">Поприветствовать</button>
</div>
<script>
createApp({
methods: {
greet() {
alert('Hello!');
}
}
}).mount('#app');
</script>
4. Вычисляемые свойства
Вычисляемые свойства — это свойства, кэшируемые на основе их зависимостей. Вычисляемое свойство пересчитывается только при изменении связанных с ним зависимостей.
Пример
<p>{{ reversedMessage }}</p>
</div>
<script>
createApp({
data() {
return {
message: 'Hello'
};
},
computed: {
reversedMessage() {
return this.message.split('').reverse().join('');
}
}
}).mount('#app');
</script>
5. Компоненты
Компоненты — одна из самых мощных возможностей Vue.js. Компоненты позволяют создавать большие приложения с помощью небольших, независимых и обычно повторно используемых компонентов.
Пример
app.component('my-component', {
template: '<div>Пользовательский компонент!</div>'
});
Использование компонентов
Пример
<my-component></my-component>
</div>
<script>
const app = createApp({});
app.component('my-component', {
template: '<div>Пользовательский компонент!</div>'
});
app.mount('#app');
</script>
6. Пропсы и события
Пропсы
Пропсы используются для передачи данных между компонентами.
Пример
<blog-post title="Моё путешествие с Vue"></blog-post>
</div>
<script>
const app = createApp({
data() {
return {};
}
});
app.component('blog-post', {
props: ['title'],
template: '<h3>{{ title }}</h3>'
});
app.mount('#app');
</script>
Events
Дочерние компоненты используют$emitдля генерации событий, а родительские компоненты могут прослушивать эти события.
Пример
<button-counter @increment="incrementTotal"></button-counter>
<p>Всего кликов: {{ total }}</p>
</div>
<script>
const app = createApp({
data() {
return {
total: 0
};
},
methods: {
incrementTotal() {
this.total++;
}
}
});
app.component('button-counter', {
template: '<button @click="increment">Вы нажали на меня {{ count }} раз.</button>',
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
this.$emit('increment');
}
}
});
app.mount('#app');
</script>