Во фронтенд-разработке обычно используется слой DOM.
Основная функция - отображение различной информации пользователям
Слой модели
слой данных
Данные могут быть нашими фиксированными мертвыми данными, больше с нашего сервера, данными, запрошенными из сети.
Слой VueModel
просмотреть слой модели
Уровень модели представления является связующим звеном между представлением и моделью.
С одной стороны, реализует привязку данных, то есть привязку данных, которая отражает изменения Модели в Представлении в режиме реального времени.
С другой стороны, он реализует DOM Listener, то есть DOM listener.Когда в DOM происходят какие-то события (щелчок, прокрутка, касание и т. д.), вы можете его прослушать и при необходимости изменить соответствующие Data.
4. Параметры, переданные экземпляром Vue
в настоящее время освоен
Имя свойства
Типы
эффект
el
Тип: строка | HTMLElement
Определите, какой DOM будет управлять экземпляр Vue.
data
Тип: Объект | Функция (данные должны быть функцией в компоненте)
Объект данных, соответствующий экземпляру Vue
methods
Тип: { [ключ: строка]: функция}
Определите некоторые методы, принадлежащие Vue, которые можно вызывать в другом месте или использовать в директивах.
5. Жизненный цикл Vue
Официальная фигура
Инструкция интерполяции
1.Mustache
интерполяционное выражение {{}}
Наиболее распространенной формой привязки данных является интерполяция текста с использованием синтаксиса «усы» (двойные фигурные скобки). Например:
<span>Message: {{ msg }}</span>
Тег Mustache будет заменен значением атрибута msg соответствующего объекта данных (msg определяется в объекте данных).
Всякий раз, когда изменяется свойство msg связанного объекта данных, содержимое интерполяции автоматически обновляется.
грамматика
{{}}Поддержка выражений JavaScript
нормальное выражение
{{ number + 1 }}
Тернарное выражение
{{ ok ? 'YES' : 'NO' }}
Тернарное выражение
{{ name == 'smyhvae' ? 'true' : 'false' }}
метод вызова
{{ message.split('').reverse().join('') }}
2.v-once
За этой директивой не нужно следовать никакому выражению
Эта директива означает, что элемент отображается только один раз и не будет меняться при изменении данных.
<h2 v-once>{{message}}</h2>
3.v-html
Разберите html-код в данных и отобразите его на странице
<h2 v-html="url"></h2>
4.v-text
Роль v-текста аналогична роли Уса: оба используются для отображения данных в интерфейсе, разница в том, что v-текст прописывается в атрибутах
v-text обычно получает строковый тип
<h2 v-text="text"></h2>
5.v-pre
v-pre используется для пропуска процесса компиляции этого элемента и его дочерних элементов и используется для отображения исходного синтаксиса Mustache.
<h2 v-pre>{{message}}</h2>
6.v-cloak
В некоторых случаях наш браузер может напрямую отображать нескомпилированные теги Mustache.
Директива v-cloak при использовании с правилами CSS может решить проблему мерцания интерполяционных выражений (т.е. нескомпилированные теги могут быть скрыты до тех пор, пока экземпляр не будет готов)
v-cloak : обычно используется в сочетании с правилами CSS, этого достаточно для решения проблемы мерцания в выражениях интерполяции.
свойства привязки v-bind
1. Введение в v-bind
Основное назначение изученных нами ранее директив — вставка значений в содержимое нашего шаблона.
Однако в дополнение к содержимому, которое необходимо определять динамически, некоторые свойства также необходимо динамически связывать.
Функция: вы можете динамически привязывать одну или несколько функций к элементам или компонентам html, например динамическое связывание.styleа такжеclass
Например, динамически привязать атрибут href элемента a
Например, динамически привяжите атрибут src элемента img.
На этом этапе мы можем использовать команду v-bind:
эффект: динамически связанные свойства
Сокращенное название::
ожидал: любой (с аргументом) | Объект (без аргумента)
параметр:attrOrProp (необязательно)
2.v-bind класс привязки
Есть два способа связать класс
синтаксис объекта
синтаксис массива
синтаксис объекта
Значение синтаксиса объекта:classза которым следует объект.
Назначение вычисляемых свойств — решить проблему, заключающуюся в том, что слишком много логики в шаблоне сделает шаблон слишком тяжелым и трудным в обслуживании.
Вычисляемые свойства кэшируются на основе их реактивных зависимостей.
В некоторых случаях нам может потребоваться преобразовать данные перед их отображением или объединить несколько данных для отображения.
Например, у нас естьfirstNameа такжеlastNameДве переменные, нам нужно отображать полное имя.
Но если полное имя должно отображаться в нескольких местах, нам нужно написать несколько{{firstName}} {{lastName}}
Преобразуйте приведенный выше код в вычисляемое свойство.
В приведенном выше примере мы просто используемgetterчитать.
В некоторых случаях вы также можете указать метод установки (обычно не используется).
Когда вам нужно написать сеттер, код выглядит следующим образом:
Развернуть для просмотра
3. Кэширование вычисляемых свойств
Разница между методами и вычисляемыми
methodsНезависимо от того, изменились ли данные внутри, функция будет выполняться до тех пор, пока она вызывается (иногда данные не изменились и мы не хотим вызывать функцию)
computedВычисленные свойства будут кэшироваться, и если данные не изменились, функция будет вызываться только один раз (функция будет вызываться только при изменении данных)
Суммировать:
methodsФункция будет вызываться вне зависимости от того, изменились данные или нет.
computedТолько когда зависимые данные изменяется в функции обратного вызова
команда прослушивателя событий
Во фронтенд-разработке нам нужно часто взаимодействовать с пользователями.
В это время мы должны отслеживать время появления пользователя, например, события щелчка, перетаскивания и т. Д.
v-введение
Роль: привязать слушателей событий
Сокращенное название:@
1.v-на параметр
когдаmethodsметоды определены в , для@clickПри звонке нужно обратить внимание на проблему параметра
Случай 1: Если метод не требует дополнительных параметров, после метода()можно опустить
Если параметр не передается, собственное событие будет использоваться по умолчанию при получении формального параметра.eventПередача параметров
Случай 2: если вам нужно одновременно передать параметр, вам нужноevent, можно пройти через$eventвходящее событие
2.v-на модификатор
v-onДля помощи в реализации некоторых функций предусмотрено множество модификаторов событий. Модификаторы событий следующие:
модификатор
эффект
.stop
Прекрати булькать. Суть в вызове event.stopPropagation()
.prevent
Суть предотвращения поведения события по умолчанию заключается в вызове event.preventDefault().
.{keyCode | keyAlias }
Обратный вызов срабатывает только тогда, когда событие запускается с определенной клавиши
.once
Событие срабатывает только один раз
Инструкции по условному рендерингу
1.vi-f и v-иначе-если и v-иначе
Условные директивы Vue могут отображать или уничтожать элементы или компоненты в DOM на основе значения выражения.
Не рекомендуется использовать больше логики в шаблонахv-if-else-if
2. Проблема повторного использования элементов
Проблема: это касается нижнего слоя Vue, виртуального DOM, виртуального DOM.
После нажатия формы переключения значение ввода не очищается, почему?
Производное: при реализации переключения по нажатию кнопкиinputформа, мы вводимvalue, когда вы нажмете кнопку переключения формы, вы найдетеvalueзначение все еще существует, ноinputЭлемент переключается, почему?
1. Это связано с тем, что при рендеринге DOM Vue из соображений производительности будет максимально повторно использовать существующие элементы вместо создания новых.
2. В приведенном выше случае Vue выполнит внутреннее сравнение и обнаружит, что две части похожи, будут заменены только атрибуты, а новые элементы создаваться не будут.
3. Ввод вышеуказанного if больше не используется и используется непосредственно как ввод else
решение
1. Если мы не хотимVueЕсли есть проблема, похожая на повторное использование, вы можете дать соответствующийinputДобавить кkey
2. И убедитесь, что вы получаете то, что вам нужноkeyразные, такvueсоздаст новыйinputэлемент
3.v-show
Использование v-show очень похоже на v-if, и оно также используется для определения того, визуализируется элемент или нет.
сравнение v-if и v-show
v-if Когда условие ложно, в DOM вообще не будет соответствующего элемента
v-show просто устанавливает для свойства display элемента значение none, когда условие ложно
Как выбрать в разработке?
Используйте v-show при частом переключении между показом и скрытием
Когда есть только один переключатель, с помощью v-if
<h2 v-show="isShow">{{message}}</h2>
прокручивать инструкции
1.v-for перебирает массив
Функция: Генерация содержимого путем обхода указанного содержимого шаблона в соответствии с элементами массива.
Официально рекомендуется использоватьv-for, добавить предыдущий к соответствующему элементу или компоненту:keyАтрибуты.
Зачем нужен этот ключевой атрибут (понять)?
На самом деле это связано с виртуальным DOM Vue.DiffАлгоритмы имеют значение.
Когда слой имеет много одинаковых узлов, то есть узлов списка, мы хотим вставить новый узел
Мы надеемся, что сможем добавить букву F между B и C, как алгоритм Diff работает по умолчанию.
То есть обновление C до F, D до C, E до D и, наконец, вставка E — это неэффективно?
Поэтому нам нужно использовать ключ для уникальной идентификации каждого узла.
Алгоритм Diff может правильно идентифицировать этот узел
Найдите правильную область местоположения, чтобы вставить новый узел
Роль ключа в основном заключается в эффективном обновлении виртуального DOM.
image-20200505214434701
использоватьv-forПри обновлении отображаемого списка элементов стратегия повторного использования на месте используется по умолчанию; если данные списка изменены, он будет судить, изменено ли значение в соответствии со значением ключа, если изменено, затем повторно визуализировать этот элемент, в противном случае перед повторным использованием Элементы ; мы часто используемindex(то есть нижний индекс массива) какkey, но на самом деле это метод, который не рекомендуется;
4. Реактивные методы массива
Поскольку Vue отзывчив, при изменении данных Vue автоматически обнаружит изменение данных, и представление будет соответственно обновлено.
Vue включает в себя набор методов для наблюдения за компиляцией массива, так что изменение массива также вызовет обновление представления.
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
5.Vue.set изменяет адаптивные данные
Vue.set(vm.items, indexOftem, newValue)
vm.$set(vm.items ,indexOften,newValue)
Параметр 1: массив/объект для изменения
Параметр 2: индекс, который нужно установить/добавить имя свойства
Параметр 3: заданное значение
6. v-если и v-для
когда они находятся в одном узле,v-forсоотношение приоритетовv-ifвыше, значит
v-ifбудет повторяться отдельно для каждогоv-forв цикле.
избегатьv-ifа такжеv-forиспользовать вместе
причина
Если используется суждение if, весь список будет проходиться каждый раз, когда он отображается в Vue, независимо от того, изменилось ли условие суждения.
Преимущества использования вычисляемых свойств
1. Отфильтрованный список будет пересчитываться только при изменении массива пользователей, и фильтрация будет более эффективной.
2. После использования v-for="user in activeusers" мы рендерим
3. При обходе только активных пользователей рендеринг более эффективен.
4. Отделить логику уровня рендеринга, а ремонтопригодность (изменение и расширение логики) сильнее.
Используется во Вьюv-model指令Для достижения двусторонней привязки элементов формы и данных
Данные и шаблоны взаимодействуют друг с другом, при изменении одного сразу обновляется другой
Выводить:
В предыдущем случае мы привязали атрибут имени в объекте данных к тегу через v-bind. При изменении значения имени в данных содержимое тега будет обновляться автоматически.
Теперь это можно сделать: изменить содержимое тега , требуя, чтобы значение атрибута NAME в Data автоматически обновлялось. Тем самым достигается двусторонняя привязка данных. Что мне делать? Это можно использоватьv-modelэто свойство.
image-20200510174213506
разница:
v-bind: Может быть реализована только односторонняя привязка данных, автоматическая привязка от M к v.
v-model: Толькоv-modelДля достижения двусторонней привязки данных. Уведомление,v-model后Нет необходимости в двоеточии
Уведомление
v-modelМожет использоваться только в элементах формы или для пользовательских компонентов. Общие элементы формы включают в себя:input(radio,text,address,email...) ,select, checkbox, textarea.
2. Принцип v-модели
v-model на самом деле является синтаксическим сахаром, и суть его состоит в двух операциях
Используется во Вьюv-modelДирективы для реализации двусторонней привязки элементов формы и данных
Анализ случая:
Когда мы вводим что-то во фрейм данных
Поскольку v-модель во входных данных привязана к сообщению, входное содержимое будет передано в сообщение в режиме реального времени, и сообщение изменится.
Когда сообщение изменяется, поскольку мы используем приведенный выше синтаксис Mustanche для вставки значения сообщения в DOM, DOM будет меняться соответствующим образом.
Таким образом, двусторонняя привязка достигается с помощью v-модели.
Конечно, мы можем использовать v-модель для элементов textarea.
1. Форма привязки v-модели
2.v-модель привязки textarea
4. Привязка v-модели к другим типам в форме
Другие виды в форме, переплетv-model
тип формы
Один выбор/множественный выбор
Связанное значение
v-model: radio
Когда есть несколько переключателей
граница值是value
v-model: checkbox
один флажок
v-модель布尔值
несколько флажков
выбрать несколько соответствующихdataсобственность - это数组
v-model: select
радио
v-modelпривязан к值
Большой выбор
v-modelпривязан к数组
v-model: radio
v-model: checkbox
v-model: select
5. Привязка значений
давать динамичноvalueпросто назначь
мы писали ранееvalueВсе значения в прямо указаны во входных данных определения.
Но на самом деле в разработке значение этих входных данных может быть получено с сервера, а затем определено
Так что мы можем пройтиv-bind:valueДинамически привязать значение к значению
привязка значения
5. Модификаторы для v-модели
модификатор
эффект
.lazy
когда форма失去焦点или нажмите回车Время,dataДанные будут обновлены
.number
Вход преобразуется вnumberтип данных
.trim
Фильтровать обе стороны контента空格
Общие черты Vue
1. Пользовательские инструкции
Зачем нужны пользовательские директивы
Встроенные директивы не соответствуют требованиям
Vue.directive регистрирует глобальные директивы
Пользовательский синтаксис команды (получить фокус)
Концепция: Vue.js позволяет нам настраивать фильтры, которые можно использовать как некоторые общие文本格式化/处理.
Фильтры можно использовать в двух местах: выражения интерполяции усов, выражения v-bind.
Фильтры следует добавлять в конце выражений JavaScript, обозначенных символом «вертикальная черта».
фильтр не меняет реальныйdata, но просто измените отрендеренный результат и верните отфильтрованную версию
image-20200511204822969
Глобальная регистрация является фильтром, без s. Локальный фильтр — это фильтры, у которых есть s
Поддержка каскадной операции (снова фильтровать ранее отфильтрованные данные)
настраиваемый глобальный фильтр
Мы можем использовать глобальный методVue.filter()Настройте глобальный фильтр. В этом случае каждый экземпляр объекта Vue (每一个VM实例), чтобы получить этот фильтр. он получает两个参数: 过滤器的名称,过滤器函数.
Процесс экземпляра Vue от создания до уничтожения, эти процессы будут сопровождаться самовызовом некоторых функций. Мы называем эти функции функциями-ловушками
основной этап
Mount (инициализировать связанные свойства)
beforeCreate
created
beforeMount
mounted
обновление (операции изменения элементов или компонентов)
beforeUpdate
updated
Уничтожить (уничтожить связанные свойства)
beforeDestroy
destroyed
функция ловушки
Обработать
beforeCreate
После инициализации экземпляра наблюдение за данными и настройка событий вызываются до того, как данные и методы, а также структура DOM страницы не будут инициализированы, и ничего нельзя будет сделать.
created
Вызывается сразу после создания экземпляра, данные и методы доступны, но страница не отрисована.
beforeMount
Вызывается перед началом монтирования.В данный момент реальных данных на странице нет.Это просто страница-шаблон.
mouted
el заменяется вновь созданным vm.$el, а хук вызывается после того, как он смонтирован на экземпляре. Данные были фактически отображены на странице.В этой функции-хуке мы можем использовать некоторые сторонние плагины.
beforeUpdate
Вызывается при обновлении данных перед исправлением виртуального DOM. Данные на странице все еще старые
update
Этот хук вызывается после повторного рендеринга виртуального DOM и исправления из-за изменений данных. Данные на странице заменены на последние