Vue.js - это простой в использовании фреймворк для веб-приложений, который мы можем использовать для разработки интерактивных интерфейсных приложений.
В этой статье мы рассмотрим, как добавлять шаблоны в приложение Vue, включая функции рендеринга, JSX и однофайловые компоненты.
Функции рендеринга
Функции рендеринга возвращают элементы, которые рендерируются Vue. Все элементы определены с помощью простого JavaScript. Он не требует компиляции и дает нам полный доступ к функциям JavaScript, а не к тому, что предлагается директивами.
Например, мы можем определить функцию рендеринга, которая отображает кнопку с обработчиком щелчка для увеличения счетчика и элемент p для отображения счетчика следующим образом:
index.js
:
Vue.component("app-counter", { render(createElement) { const that = this; return createElement("div", [ createElement( "button", { on: { click() { that.count++; } } }, "Increment" ), createElement("p", this.count) ]); }, data() { return { count: 0 }; } }); new Vue({ el: "#app" });
index.html
:
<!DOCTYPE html> <html lang="en"> <head> <title>App</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <app-counter> </app-counter> </div> <script src="index.js"></script> </body> </html>
В приведенном выше коде мы вызвали createElement
, чтобы создать div-оболочку. Затем во втором аргументе верхнего createElement
вызова у нас есть массив с дополнительными createElement
вызовами для создания дочернего элемента.
Для кнопки второй аргумент вызова createElement
имеет объект с обработчиком щелчка. Для тега p у нас есть текст элемента this.count
.
Преимущество функций рендеринга в том, что нам не нужны директивы типа v-if
или v-for
для условного рендеринга или рендеринга списков соответственно.
Например, вместо v-for
мы можем использовать Array.prototype.map
:
index.js
:
Vue.component("app-list", { render(createElement) { const that = this; return createElement("div", [ ...that.fruits.map(f => createElement("p", f)) ]); }, data() { return { fruits: ["apple", "orange", "banana"] }; } }); new Vue({ el: "#app" });
index.html
:
<!DOCTYPE html> <html lang="en"> <head> <title>App</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <app-list> </app-list> </div> <script src="index.js"></script> </body> </html>
И вместо v-if
у нас есть простой if
оператор:
Vue.component("app-toggle", { render(createElement) { const that = this; return createElement("div", [ createElement( "button", { on: { click() { that.showFoo = !that.showFoo; } } }, "Toggle" ), that.showFoo ? createElement("p", "foo") : undefined ]); }, data() { return { showFoo: false }; } }); new Vue({ el: "#app" });
index.html
:
<!DOCTYPE html> <html lang="en"> <head> <title>App</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <app-toggle> </app-toggle> </div> <script src="index.js"></script> </body> </html>
В приведенном выше коде мы имеем:
that.showFoo ? createElement("p", "foo") : undefined
чтобы условно добавить элемент p. Он управляется обработчиком нажатия кнопки, а именно:
click() { that.showFoo = !that.showFoo; }
JSX
Мы также можем использовать JSX в наших параметрах рендеринга. Это избавляет нас от набора текста и отладки, которые мы должны делать, вызывая createElement
.
Например, мы можем визуализировать JSX следующим образом:
<script> export default { name: "app", data() { return { count: 0 }; }, render() { return ( <div> <button onClick={() => this.count++}>Increment</button> <p>{this.count}</p> </div> ); } }; </script>
Похоже на HTML, но на самом деле это JavaScript. Самый простой способ добавить JSX в наше приложение - использовать Vue CLI при запуске новых проектов.
В приведенном выше коде мы прикрепили прослушивание щелчка к нашей кнопке с помощью свойства onClick
.
Нам нужно будет преобразовать его в простой JavaScript, чтобы использовать приложение.
Однофайловые компоненты
Однофайловый компонент - это тип компонента по умолчанию для приложений Vue, созданных с помощью Vue CLI.
Если мы выберем все параметры по умолчанию в мастере Vue CLI, мы создадим отдельные файловые компоненты без каких-либо проблем. Например, мы можем написать:
<template> <div id="app"> <button @click="count++">Increment</button> <p>{{count}}</p> </div> </template> <script> export default { name: "App", data() { return { count: 0 }; } }; </script>
Все, что нам нужно было сделать, это добавить тег template
для отображения элементов, отображаемых пользователю. И у нас есть тег script
, содержащий логику.
С помощью Vue CLI однофайловые компоненты встраиваются в простое приложение JavaScript с помощью команды npm run build
, поэтому мы можем запускать его в производственной среде.
Заключение
Самый простой способ - это однофайловый компонент, который по умолчанию используется для структурирования компонентов и приложений Vue. Он работает как для простых, так и для сложных приложений без выбора каких-либо параметров или настройки.
Альтернативой было бы использование JSX внутри функции render
. Это похоже на однофайловые компоненты, но мы используем простой JavaScript для рендеринга вместо HTML.
render
функции также могут иметь простой JavaScript. Мы создаем элементы, вызывая createElement
. Если у нас слишком много элементов, вложение становится трудным, но преимущество состоит в том, что мы можем использовать JavaScript вместо директив для динамических операций.
Примечание команды Plain English
Вы знали, что у нас четыре публикации? Проявите немного любви, предложив им следующие слова: JavaScript на простом английском, AI на простом английском, UX на простом английском , Python на простом английском - спасибо и продолжайте учиться!
Кроме того, мы всегда заинтересованы в продвижении хорошего контента. Если у вас есть статья, которую вы хотели бы отправить в какую-либо из наших публикаций, отправьте электронное письмо на адрес [email protected] с вашим именем пользователя Medium и тем, о чем вы хотите написать, и мы вернуться к вам!