Использование Vue.js через CDN позволяет быстро подключить фреймворк к проекту без настройки сборщиков вроде Webpack или Vite. Такой подход удобен для прототипирования, небольших проектов или учебных целей.
Для подключения Vue.js используется тег <script> с
указанием URL библиотеки. Наиболее распространённые варианты:
<!-- Vue 3 (production) -->
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<!-- Vue 3 (development, с предупреждениями и проверкой типов) -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
Ключевые моменты:
vue.global.js — версия для разработки,
включает предупреждения и проверку ошибок.vue.global.prod.js — оптимизированная
версия для продакшена, не содержит предупреждений, меньше весит.После подключения библиотеки создаётся экземпляр приложения через
Vue.createApp():
<div id="app">
<h1>{{ message }}</h1>
<button @click="reverseMessage">Обратить строку</button>
</div>
<script>
const { createApp } = Vue;
createApp({
data() {
return {
message: 'Привет, Vue!'
};
},
methods: {
reverseMessage() {
this.message = this.message.split('').reverse().join('');
}
}
}).mount('#app');
</script>
Особенности:
createApp() создаёт новый Vue-экземпляр.data() возвращает объект состояния приложения.methods содержит функции, доступные из шаблона.@click — директива для обработки событий, аналог
v-on:click.Vue позволяет создавать локальные компоненты прямо в коде:
<div id="app">
<hello-world></hello-world>
</div>
<script>
const { createApp } = Vue;
const HelloWorld = {
template: `<p>Привет из компонента!</p>`
};
createApp({
components: {
'hello-world': HelloWorld
}
}).mount('#app');
</script>
Особенности компонентов при CDN-подключении:
template.components должно соответствовать тегу
в HTML.app.component('имя', объект).Vue автоматически отслеживает изменения в объекте data.
Любые обновления данных мгновенно отражаются в DOM:
<div id="app">
<input v-model="text" placeholder="Введите текст">
<p>Вы ввели: {{ text }}</p>
</div>
<script>
const { createApp } = Vue;
createApp({
data() {
return {
text: ''
};
}
}).mount('#app');
</script>
Ключевые моменты:
v-model связывает значение поля ввода с состоянием
данных.text автоматически обновляет содержимое
<p>.Vue предоставляет набор встроенных директив для управления DOM:
v-if, v-else-if, v-else —
условный рендеринг.v-for — циклический рендеринг массивов.v-bind — связывание атрибутов.v-on — обработка событий.Пример комбинирования:
<div id="app">
<ul>
<li v-for="item in items" :key="item.id" @click="selectItem(item)">
{{ item.name }}
</li>
</ul>
<p v-if="selected">Вы выбрали: {{ selected.name }}</p>
</div>
<script>
const { createApp } = Vue;
createApp({
data() {
return {
items: [
{ id: 1, name: 'Первый' },
{ id: 2, name: 'Второй' }
],
selected: null
};
},
methods: {
selectItem(item) {
this.selected = item;
}
}
}).mount('#app');
</script>
CDN-подключение позволяет использовать как inline-шаблоны, так и
шаблоны из script с типом text/x-template:
<script type="text/x-template" id="my-template">
<div>
<p>Это шаблон из <code>script</code></p>
</div>
</script>
<div id="app">
<my-template></my-template>
</div>
<script>
const { createApp } = Vue;
const MyTemplate = {
template: '#my-template'
};
createApp({
components: {
'my-template': MyTemplate
}
}).mount('#app');
</script>
Особенности:
id шаблона позволяет подключать HTML
отдельно от основного кода.import/export).vue.global.js для разработки и
vue.global.prod.js для продакшена.