Использование vue3 для обучения vue3

Vue.js

Зачем изучать vue3?

Vue2.0 теперь также является относительно стабильной версией, а сообщество и окружающие области относительно полны.Если это не является ненужным, нам не нужно спешить с обновлением до vue3.0 напрямую;
Тогда почему мы все еще должны учиться, главным образом, понимать преимущества и особенности VUE3.0 по сравнению с 2.0, так что после улучшения общества и окружающих версию 3.0 мы напрямую обновляем до 3,0, и улучшить Технология и увеличение зарплаты, в конце концов, когда 3.0 впервые вышло, он привлек внимание различных бигмиков в отрасли. Теперь самый популярный передовой круг - VUE3.0, так что ли это узнать новые знания или учиться Отличное программирование идей, или для того, чтобы увеличить зарплату, нам всем нужно посмотреть и учиться.

Как перейти с версии 2.0 на версию 3.0?

Прежде всего, если мы хотим испытать версию 3.0, нам все равно придется сначала выполнить обновление.Вот несколько способов обновления до версии 3.0;

1. Первый способ - использовать официальные леса vue-cli для обновления, если есть студенты, которые не понимают, вы можете перейти на официальный сайт, чтобы проверитьvue-cli

// Сначала обновите скаффолдинг до последней версии, если он не был установлен ранее, прямая глобальная установка будет последней версии 4.0
npm install -g @vue/cli
or
yarn global add @vue/cli

// Если вы уже установили его, вы можете обновить версию
npm update -g @vue/cli
or
yarn global upgrade --latest @vue/cli

ps: после обновления версии до последней можно сразу начать установку.Сначала создайте проект vue3.0

vue create vue3 // По умолчанию для создания может быть выбрана версия 3.0, а после создания можно запустить опыт
cd vue3 // после ввода
yarn serve

пс: Если вы забыли выбрать 3.0? Ничего страшного, можно и в проект зайти для установки

// Если созданный вами проект имеет версию 2.0, выбранную по умолчанию, просто нажмите операцию ниже
yarn add vue-next // add vue-next автоматически обновится до версии vue3

2. Второй способ — использовать установку vite, которая тоже является великим шедевром.адрес гитхаба

// Сначала нам нужно клонировать код vite в локальный
git clone GitHub.com/Вите есть/Вите…

cd vite // вводим файл

пряжа // начинаем установку зависимостей

сборка пряжи // упаковка

yarn link

ps: начните создавать свой проект

yarn create vite-app project-name
cd project-name
yarn
yarn dev

ps: После выполнения вышеуказанных операций можно приступать к приятному опыту vue3.0

Краткое введение и использование API композиции vue3Официальное руководство по использованию API композиции

1. Во-первых, давайте познакомимся с API композиции

Что такое составной API? Буквальная интерпретация — это комбинированный API, который состоит в том, чтобы разделить многие исходные низкоуровневые методы и сделать их доступными для всех;
Например, оригинальный метод может быть записан только в методах, но в vue3 есть определенные изменения, и его следует использовать в настройке;

Давайте рассмотрим несколько API, которые я считаю более важными. Давайте кратко представим, как их использовать?

1.createApp // Как следует из названия, создайте экземпляр APP, но как его использовать?

// 先导入createApp模块
import { createApp } from 'vue';
import App from './App.vue';

// 使用createApp方法将我们的入口文件放进去,最后挂载
createApp(App).mount('#app');

2.onMounted // Отличается от предыдущего способа написания, но есть еще один на

// 先导入onMounted模块
import { onMounted, defineComponent } from 'vue';

export default defineComponent({
    setup () {
        // 使用的时候需要放在setup里边
        onMounted(() => {
            console.log('组件挂在结束开始打印。。。')
        })
    }
})

3. свойства вычисляемого компьютера

import { computed, ref } from 'vue';

// 基本操作
const count = ref(1)
const plusOne = computed(() => count.value + 1)

console.log(plusOne.value) // 2

plusOne.value++ // 错误!
import { computed, ref } from 'vue';

// 可以修改值
const count = ref(1)
const plusOne = computed({
  get: () => count.value + 1,
  set: (val) => {
    count.value = val - 1
  },
})

plusOne.value = 1
console.log(count.value) // 0

4. смотреть слушатель

import { reactive, watch } from 'vue';
// 侦听一个 getter
const state = reactive({ count: 0 })
watch(
  () => state.count,
  (count, prevCount) => {
    /* ... */
  }
)

// 直接侦听一个 ref
const count = ref(0)
watch(count, (count, prevCount) => {
  /* ... */
})

5. Обновленная версия прослушивателя watchEffect, который немедленно выполняет переданную функцию, оперативно отслеживает ее зависимости и повторно запускает функцию при изменении ее зависимостей.

const count = ref(0)

watchEffect(() => console.log(count.value))
// -> 打印出 0

setTimeout(() => {
  count.value++
  // -> 打印出 1
}, 100)

Остановить прослушивание Когда watchEffect вызывается в функции setup() компонента или обработчике жизненного цикла, слушатель будет связан с жизненным циклом компонента и автоматически остановится, когда компонент будет выгружен.

const stop = watchEffect(() => {
  /* ... */
})

// 之后
stop()

6.reactive Получает обычный объект и возвращает реактивный прокси для обычного объекта. Это эквивалентно Vue.observable() в 2.x. Обратите внимание, что в исходном коде четко указано, что объект должен быть передан, иначе будет выдано исключение. Если вы хотите использовать отзывчивость для одной переменной, вы можете использовать ref, как описано ниже

const obj = reactive({ count: 0 }) // 返回的就是响应式对象
// 使用
obj.count ++
console.log(obj.count) // 输出的是1

Если вы хотите использовать эту переменную в компоненте, вам нужно вернуть ее в настройках

первая форма возврата

<template>
	<!-- 这种形式在组件内使用的时候需要obj.count -->
	<p>{{ obj.count }}</p> 
</template>
import { reactive } from 'vue';

export default defineComponent({
    setup () {
        const obj = reactive({ count: 0 })
        return { obj } // 这种形式在组件内使用的时候需要obj.count
    }
})

Вторая форма возврата

<template>
	<!-- 这种形式在组件内使用的时候跟之前一样 -->
	<p>{{ count }}</p> 
</template>
import { reactive, toRefs } from 'vue';

export default defineComponent({
    setup () {
        const obj = reactive({ count: 0 })
        return { ...toRefs(obj) }
    }
})

7.toRefs преобразует отзывчивый объект в обычный объект, каждое свойство обычного объекта является ref , что соответствует свойству отзывчивого объекта один к одному.

Почему приведенный выше пример завернут в toRefs, ведь он такой, реактивный, по сути, прокси используется для проксирования всего объекта, и в ответ возвращается весь объект, но что делать, если в объекте много уровней, Если в объекте еще есть объект, то объект внутри не отзывчивый, поэтому его оборачивают toRefs, что эквивалентно атрибутам во всем объекте.Внутри исходного кода сделана рекурсия, и все атрибуты были оценены, если это ссылочный тип, он снова будет использовать прокси для прокси, поэтому свойства всего объекта реагируют, что является следующим способом записи;

import { reactive, toRefs } from 'vue';

export default defineComponent({
    setup () {
        const obj = reactive({ count: 0 })
        return { ...toRefs(obj) }
    }
})

8.ref принимает значение параметра и возвращает реактивный и изменяемый объект ref. Объект ref имеет единственное свойство .value, которое указывает на внутреннее значение.

const count = ref(0)
console.log(count.value) // 0

count.value++
console.log(count.value) // 1

9.toRef можно использовать для создания ссылки на свойства реактивного объекта. Этот ref может быть передан и остается отзывчивым.

const state = reactive({
  foo: 1,
  bar: 2,
})

const fooRef = toRef(state, 'foo')

fooRef.value++
console.log(state.foo) // 2

state.foo++
console.log(fooRef.value) // 3

10.nextTick имеет ту же функцию, что и предыдущая, но способ написания немного отличается, если вы хотите узнать больше об этом, вы можете прочитать это здесьмеханизм асинхронного обновления vue nextTick

import { nextTick } from 'vue';

export default defineComponent({
    setup () {
        nextTick(() => {
        	console.log('--- DOM更新了 ---')
        })
    }
})

Здесь сначала будет представлено введение API композиции Заинтересованные студенты могут прочитать его здесь:
composition API
Умственная нагрузка API композиции Vue
ps: Заинтересованные студенты, я хочу использовать его, но я не знаю, как его использовать Я написал простую демонстрацию, чтобы помочь вам ознакомиться с ним.vue3 demo