История самообучения JL № 26

Серия [История самообучения JL]

[Net Ninja] JS Regular Expressions
[Net Ninja] Vue JS2 (Part1, Part2, Part3)
[Net Ninja] Vuex
[Net Ninja] Python3 (Part1, Part2, Part3)
[Net Ninja] Django (Part1, Part2, Part3)
[Net Ninja] Sass (Part1, Part2)
[Sean Larkin] Webpack4 (Part1, Part2, Part3, Part4)
[Sarah Drasner] VueJS (Part1, Part2, Part3, Part4, 
                       Part5, Part6, Part7)
[Evan You] Advanced VueJS (Part1, Part2(current), Part3,
                           Part4, Part5, Part6, Part7)

🌲 Это вторая часть моего резюме Эвана Ю «Расширенные возможности Vue.js с нуля» на FrontendMasters.

[2. Writing Plugins]
    2-1. Introducing Writing Plugins
    2-2. Challenge 4: Writing a Simple Plugin

[ 2–1. Представляем плагины для написания ]

function (Vue, options) {
  // … plugin code
}

Некоторые из часто используемых методов при написании подключаемого модуля Vue включают API Vue.mixin.

Миксины — это гибкий способ распространения повторно используемых функций для компонентов Vue. Объект миксина может содержать любые параметры компонента. Когда компонент использует миксин, все параметры в миксине будут «смешаны с собственными параметрами компонента. ("Официальный документ")"

Vue.mixin(options)

Лучше всего всегда заключать глобальные миксины в интерфейс плагина. Кроме того, это более последовательно, когда вы видите свою точку входа.

$options
  • Он существует для каждого компонента и содержит объединенный, нормализованный объект опций этого конкретного экземпляра. Причина в том, что мы знаем, что параметры компонента Vue могут поступать из многих мест, включая глобальные миксины, собственное определение компонента и параметры, которые вы передаете ему при создании экземпляра. Все эти параметры необходимо объединить и нормализовать в этот окончательный объект параметров для этого экземпляра, а это $options для каждого экземпляра.
  • Кроме того, он также содержит любые пользовательские параметры, которые вы добавили к этому компоненту. Таким образом, это не обязательно должна быть встроенная опция. Итак, мы просто объединим все здесь.

[ 2–2. Задача 4: Написание простого плагина]

ИНСТРУКЦИЯ:

Создайте подключаемый модуль, который обучает компоненты Vue обрабатывать пользовательскую опцию rules. Параметр rules предполагает наличие объекта, определяющего правила проверки данных в компоненте.

› Функция validate будет выполняться при каждом изменении foo. Если проверка не пройдена, мы запишем в консоль следующее сообщение: «foo должно быть больше единицы».

ОЖИДАЛ:

const vm = new Vue({
  data: { foo: 10 },
  rules: {
    foo: {
      validate: value => value > 1,
      message: 'foo must be greater than one' 
    }
  }
})
vm.foo = 0 // should log: "foo must be greater than one"

› Эта опция rules отсутствует в собственном API Vue. Это совершенно нестандартно. Если вы просто добавите это в ванильный компонент Vue, он ничего не сделает. Vue просто проигнорирует это.

const vm = new Vue({
  data: { foo: 10 },
  created(){
    this.$options.rules
  },
  rules: {
    foo: {
      validate: value => value > 1,
      message: 'foo must be greater than one' 
    }
  }
})
vm.foo = 0 // should log: "foo must be greater than one"

› Добавление created(){ this.$options.rules } позволяет использовать опцию rules. Кстати, мы не хотим, чтобы пользователям нашего плагина всегда приходилось вручную создавать этот хук, чтобы получить доступ к опции rules. Итак, давайте абстрагируем это внутри mixin.

const myPlugin = {
  install(Vue){
    Vue.mixin({
      created(){
        if(this.$options.rules){
          // we can do something
        }
      }
    })
  }
}
const vm = new Vue({
  data: { foo: 10 },
  created(){
    this.$options.rules
  },
  rules: {
    foo: {
      validate: value => value > 1,
      message: 'foo must be greater than one' 
    }
  }
})
vm.foo = 0 // should log: "foo must be greater than one"

› Это основа для создания плагина. Он применит этот глобальный mixin, который будет обучать каждый экземпляр Vue, созданный после этой точки. Они будут вызывать хук created при создании, а затем мы выполним наш код проверки этой пользовательской опции rules.

СОВЕТЫ:

1. Плагин должен установить глобальный примесь

2. Глобальный mixin содержит хук «created».

3. В хуке проверьте наличие this.$options.rules

ШАБЛОН:

<script src="../node_modules/vue/dist/vue.js"></script>
<script>
const RulesPlugin = {
  // Implement this!
}
Vue.use(RulesPlugin)
</script>

РЕШЕНИЕ:

$watch позволяет нам вызывать обратный вызов всякий раз, когда это свойство наблюдения изменяется.

Преподаватель класса Эван Ю является создателем и руководителем проекта Vue.js.

Его можно найти на его личном сайте, GitHub, LinkedIn, Twitter, Medium(Evan You) и Frontend Masters.

Спасибо за чтение! 💕 Если вам понравилась эта запись в блоге, похлопайте👏