предисловие
Большинство недавно разработанных страниц и функций в основном основаны на таблицах, получаемых из интерфейса.JSON
Большая часть данных должна быть обработана, например, метка времени должна быть преобразована или код состояния экранирован. Для таких проблем основные основные фреймворки предоставляют методы, аналогичные фильтрации.Vue
, обычно определяемый на страницеfilter
Затем в файле шаблона используйте|
для обработки.
Этот метод гораздо удобнее для обхода массива и промывки данных раньше, но когда я обнаружил, что многие страницы имеют одинаковыеfilter
Когда мне приходилось копировать каждую страницу, это было очень больно, поэтому я решил использоватьVue.mixin()
выполнитьОдин код, бесконечное повторное использование.
Наконец, всеfilter
упакован вvue
Плагин вызывается при использованииVue.use()
можно, даже загрузитьnpm
Пакет, разработка различных проектов, когда вы можете напрямуюinstall
использовать. (Учитывая, что последнее обновление относительно быстрое, этап упаковки и загрузки сначала будет медленным и будет завершен после того, как версия станет немного стабильной)
текст
Хватит болтовни, приступим к делу.
Что такое Vue.mixin
изучить новый фреймворк илиAPI
, лучше всего зайти на официальный сайт, вот вложениеVue.mixin()[Нажмите на меня для просмотра]Официальное описание.
объяснить одним предложением,Vue.mixin()
Вы можете смешивать пользовательские методы, которые вы создаетевсе Vue
пример.
образец кода
Vue.mixin({
created: function(){
console.log("success")
}
})
Запустите свой проект, вы обнаружите, что он выводится в консоль.success
.
Когда эффект выходит, смысл выходит, всеVue
примерcreated
методыизменить нанаш пользовательский метод.
Использование Vue.mixin()
Следующая идея очень проста, мы объединяем всеfilter
функция в файл, вmain.js
можно импортировать.
Прерывание перед кодом, код очень простой, но мы можем написать более стандартизированно о том, как это сделать, вVue
На официальном сайте есть более подробнаяРуководство по стилю [Нажмите, чтобы посмотреть]можно обратиться.
Поскольку наш пользовательский метод будет смешанным во всех случаях, если мы будем следовать предыдущему методу, он неизбежно столкнется с опасностью перезаписи исходного метода.Согласно официальной рекомендации, имя смешанного пользовательского метода должно иметь префикс$_
привык различать.
Создаватьconfig.js
Файл, используемый для сохранения значения, соответствующего коду состояния, и раскрытия его
export const typeConfig = {
1: "type one",
2: "type two",
3: "type three"
}
создать еще одинfilters.js
файл для хранения всех пользовательских функций
import { typeConfig } from "./config"
export default {
filters: {
$_filterType: (value) => {
return typeConfig[value] || "type undefined"
}
}
}
Наконец, вmain.js
импортировать нашиfilters
Набор методов
import filter from "./filters"
Vue.mixin(filter)
Далее мы можем.vue
Не стесняйтесь использовать пользовательские функции в файле шаблона
<template>
<div>{{typeStatus | $_filterType}}<div>
</template>
плагин упаковки
Тогда просто применитеVue
Как сделать плагин. После создания плагина вы можетеVue.use(myPlugin)
приходи в употребление.
Сначала добавьте плагинОфициальный документ[Нажмите на меня для просмотра].
В одном предложении упакованный плагин нуждается вinstall
способ загрузки плагина вVue
начальство.
оVue.use()
исходный код
function initUse (Vue) {
Vue.use = function (plugin) {
var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
if (installedPlugins.indexOf(plugin) > -1) {
return this
}
// additional parameters
var args = toArray(arguments, 1);
args.unshift(this);
if (typeof plugin.install === 'function') {
plugin.install.apply(plugin, args);
} else if (typeof plugin === 'function') {
plugin.apply(null, args);
}
installedPlugins.push(plugin);
return this
};
}
Очень интуитивно видеть его в финальном звонке.plugin.install
метод, все, что нам нужно сделать, это справиться с этимinstall
функция.
код выше
config.js
Файл по-прежнему нужен, и здесь сохранен escape-текст, соответствующий всем кодам состояния.
СоздаватьmyPlugin.js
файл, это плагин, который мы написали
import { typeConfig } from "./config"
myPlugin.install = (Vue) => {
Vue.mixin({
filters: {
$_filterType: (value) => {
return typeConfig[value] || "type undefined"
}
}
})
}
export default myPlugin
плагинinstall
Первый параметр функцииVue
, и вы также можете передать некоторые пользовательские параметры позже.
существуетmain.js
файл, мы неVue.mixin()
использовать вместо этогоVue.use()
чтобы завершить загрузку плагина.
import myPlugin from "./myPlugin"
Vue.use(myPlugin)
На данный момент мы завершили небольшой плагин и поместили наш экранирующий фильтр кода состояния во все экземпляры Vue, в.vue
В файле шаблона мы можем использовать {{ typeStatus | $_filterType }}, чтобы экранировать код состояния.
Эпилог
Vue.mixin()
Вы можете смешивать пользовательские методывсе Vue
в экземпляре.
В целях быстрой разработки, ряд лбов подумал об этом методе, но хороший ли это метод, нужно проверить, хотя нельзя сказать, что он повлияет на исходный код, новсе Vue
Примеры также включаютсторонние шаблоны.
Эта статья может быть воспроизведена по желанию с указанием исходного адреса.
Если вы считаете, что мой пост в блоге полезен для вас, пожалуйста, не стесняйтесь оценить его.Нравится также средство, чтобы сделать меня мотивированным =3=.
быть улучшенным
Опубликовать пакет npm
новый предмет
Использование фильтра в v-html (28 мая 2018 г.)
Недавно я столкнулся с проблемой, которая также связана с фильтрацией кодов состояния, но достигнутый эффект заключается в отображении разных кодов состояния через разные коды состояния.icon
значок, он отличается от приведенного выше текстового фильтра, который использовался выше{{ styleStatus | $_filterStyleStatus }}
это использоватьv-text
Рендеринг, если вам нужно рендеритьhtml
Этикетки — головная боль.
По практике предшественников он такой, добавлю кусок кода по желанию.
...
<span v-if="item.iconType === 1" class="icon icon-up"></span>
<span v-if="item.iconType === 2" class="icon icon-down"></span>
<span v-if="item.iconType === 3" class="icon icon-left"></span>
<span v-if="item.iconType === 4" class="icon icon-right"></span>
...
Не делайте! Это слишком немодно и слишком некруто, я инстинктивно отвергаю такой способ письма, но проблема все равно должна быть решена, поэтому я ищу другие пути.
смотреть вVue
документация, одна изAPI
$options
Официальный документ[Нажмите на меня для просмотра]Это привлекло мое внимание, мне просто нужен способ получить доступ к текущемуVue
примерAPI
, погладив по головке, план выполнен.
Во-первых, ещеconfig.js
Код состояния, соответствующий объекту, определен в файле, здесь мы устанавливаем его соответствующее содержимое какhtml
пункт.
export const iconStatus = {
1: "<span class='icon icon-up'></span>",
2: "<span class='icon icon-down'></span>",
3: "<span class='icon icon-left'></span>",
4: "<span class='icon icon-right'></span>"
}
Далее мыfilters.js
Внесите его в файл, написание остается таким же, как и раньшеfilters
Такой же.
import { iconStatus } from "./config"
export default {
$_filterIcon: (value) => {
return iconStatus[value] || "icon undefined"
}
}
Изюминка здесь, где нам нужно отрендерить в файле шаблона, использоватьv-html
рендерить.
<span v-html="$options.filters.$_filterIcon(item.iconType)"></span>
Все готово, вам нужно отрендерить в соответствии с кодом состояния позжеicon
Везде можно сделать так.
Оказывается, быть ленивым не обязательно плохо. Ключ в том, чтобы смотреть в сторону лени, хотя название этого блогабыть ленивым, а на самом деле я просто устал от повторяющегося и бессмысленного перемещения кода.Я совсем не ленюсь при поиске соответствующих решений.Наоборот, при поиске более быстрых, качественных и удобных методов постепенно нахожу Назад к приколу ввод кода.