Простой пример, где мы выводим сообщение в div.
<!-- index.html -->
<div id="app">Говно: {{ message }}</div>
<script type="module" src="vue_example.js"></script>
// vue_example.js
import { createApp } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const message = "Строка, которую мы вставим в div.";
return {
message
}
}
});
kukuruza.mount("#app");
<div id="app">
<div>Вот сообщение: <span v-html="message"></span></div>
</div>
<script type="module" src="vue_example.js"></script>
// vue_example.js
import { createApp } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const message = "Это моё сообщение.";
return {
message
}
}
});
kukuruza.mount("#app");
<!-- index.html -->
<div id="app">
<button @click="count++">Кнопка</button>
<div>Счётчик: {{ count }}</div>
</div>
<script type="module" src="vue_example.js"></script>
// vue_example.js
import { createApp, ref } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const count = ref(0);
return {
count
}
}
});
kukuruza.mount("#app");
По сути, это предыдущий пример, но только HTML-содержимое <div id="app"> мы перенесли в JavaScript в template. А из template Vue вставит этот HTML в <div id="app"> как innerHTML.
<!-- index.html -->
<div id="app"></div>
<script type="module" src="vue_example.js"></script>
// vue_example.js
import { createApp, ref } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const count = ref(0);
return {
count
}
},
template: "<button @click='count++'>Кнопка</button><div>Счётчик: {{ count }}</div>"
});
kukuruza.mount("#app");
Благодаря v-bind: мы можем привязывать аттрибуты HTML-элементов к переменным Vue.
В этом примере мы привязываем значение атрибута class к переменной в JavaScript. И из Vue присваиваем значение этой переменной и она применяется к атрибуту.
<!-- index.hml -->
<link href="main.css" rel="stylesheet">
<div id="app">
<!-- Здесь мы привязали значение аттрибута class к переменной currentClass из Vue -->
<div v-bind:class="currentClass">Просто обычный текст, к которому мы хотим применить какой-нибудь класс.</div>
</div>
<script type="module" src="vue_example.js"></script>
/* main.css */
.kaka1 {
color: red;
}
.kaka2 {
color: blue;
}
// vue_example.js
import { createApp } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const currentClass = "kaka2";
return {
currentClass
}
}
});
kukuruza.mount("#app");
<!-- index.html -->
<p>Просто строка для наглядности - чтобы на странице хоть что-то было.</p>
<div id="app">
<button v-bind:disabled="isDisabled">Кнопка</button>
</div>
<script type="module" src="vue_example.js"></script>
// vue_example.js
import { createApp } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const isDisabled = true;
return {
isDisabled
}
}
});
kukuruza.mount("#app");
Здесь мы сразу присвоим значения трём атрибутам: id, class и style.
<!-- index.html -->
<link href="main.css" rel="stylesheet">
<div id="app">
<div v-bind="piperda">Обычный текст, к которому мы динамически привяжем сразу три атрибута.</div>
</div>
<script type="module" src="vue_example.js"></script>
/* main.css */
.kaka1 {
color: red;
}
.kaka2 {
color: blue;
}
// vue_example.js
import { createApp } from "https://unpkg.com/vue@3/dist/vue.esm-browser.js";
const kukuruza = createApp({
setup() {
const piperda = {
id: "hren",
class: "kaka2",
style: "background-color: lightgreen"
}
return {
piperda
}
}
});
kukuruza.mount("#app");