Адрес столбца:Анализ исходного кода Vue и практика
Эта статья:я 970
Оригинальная ссылка:nuggets.capable/post/704076…
✨ Открытие
RT, почему мы на Vue3? Влияет ли использование Vue3 на мой Ferrari?
Недавно выпущенный в Vue33.2
После большой версии статей о Vue3 на Nuggets становится все больше и больше.Я изначально хотел дать пулям летать какое-то время, но недавно компания запустила проект Vue3, и я сам его изучил.
Вчера я был верным сторонником API параметров Vue2.В результате, после того, как я сегодня поработал над API композиции Vue3, я назвал Vue3 действительно ароматным!
Далее мы начнем с анализа преимуществ и недостатков Vue2 и объединим изображения и варианты использования, чтобы понять преимущества Vue3.
Vue2 ⚔ Vue3
Vue2
преимущество
Нельзя отрицать, что Vue 2 добился успеха.В рейтинге Github Front-End также можно увидеть, что склад Vue занимает первое место с достаточным количеством поклонников и достаточным количеством активных пользователей.
На 12 000+ звезд больше, чем у React
С моей точки зрения, наибольший вклад вносят эти трое:
- отзывчивые данные
- Options API
- SFC
Кроме этих трех генералов, непременноVuex
/Vue-Router
Эти два героя, а также множество периферийных плагинов и активное сообщество.
недостаток
Когда нести только один компонент логики, использование Options API для написания сборки очень ясно.
Однако в нашем реальном бизнес-сценарии родительский компонент всегда содержит несколько подкомпонентов, родительским компонентам требуется логика для проходов подкомпонентов, обработки событий подкомпонентов, прямых операций с подкомпонентами и обработки большого количества портов настройки. наши родительские компоненты в это время усложнятся.
С точки зрения специалистов по сопровождению кода, предполагая, что в настоящее время существует 10 методов функций, естественно, мы должны поместить их вmethods
, и эти 10 методов функций работают с 10 данными соответственно, и эти 10 данных необходимо обрабатывать отдельно.Watch
работать.
В это время мыVue2
изOptions API
писать, только что закончил 10method
,10data
,10watch
, мы разделим исходные 10 методов функций на 30 разных мест.
В настоящее время код родительского компонента очень недружелюбен к сопровождающим кода.
Кто-то может сказать, что такой способ написания кода может увеличить объем кода, а начальник хвалит меня за то, что я классный! хахаха 😂
Vue3
преимущество
Свобода, свобода или свобода ТМ!
- Лучшая производительность, лучшее встряхивание дерева
- Composition API + setup
- Улучшенная поддержка TypeScript
возможные недостатки
Vue3: дает свободу перебарщивать
использоватьComposition API
существуетsetup
После всего веселья на сцене может возникнуть вопрос: как красиво организовать код?
Код не может быть организован элегантно, и одинаково сложно поддерживать после увеличения количества кода.
Изменение правописания SFC
Vue2 обычный файл Vue
<template>
<div>
<p>{{ person.name }}</p>
<p>{{ car.name }}</p>
</div>
</template>
<script>
export default {
name: "Person",
data() {
return {
person: {
name: "小明",
sex: "male",
},
car: {
name: "宝马",
price: "40w",
}
};
},
watch:{
'person.name': (value) => {
console.log(`名字被修改了, 修改为 ${value}`)
},
'person.sex': (value) => {
console.log(`性别被修改了, 修改为 ${value}`)
}
},
methods: {
changePersonName() {
this.person.name = "小浪";
},
changeCarPrice() {
this.car.price = "80w";
}
},
};
</script>
Переписать с помощью Vue3 Composition API
<template>
<p>{{ person.name }}</p>
<p>{{ car.name }}</p>
</template>
<script lang="ts" setup>
import { reactive, watch } from "vue";
// person的逻辑
const person = reactive<{ name: string; sex: string }>({
name: "小明",
sex: "male",
});
watch(
() => [person.name, person.sex],
([nameVal, sexVal]) => {
console.log(`名字被修改了, 修改为 ${nameVal}`);
console.log(`名字被修改了, 修改为 ${sexVal}`);
}
);
function changePersonName() {
person.name = "小浪";
}
// car的逻辑
const car = reactive<{ name: string; price: string }>({
name: "宝马",
price: "40w",
});
function changeCarPrice() {
car.price = "80w";
}
</script>
Используйте Vue3, чтобы настроить Hook для дальнейшего разделения
<template>
<p>{{ person.name }}</p>
<p>{{ car.name }}</p>
<p>{{ animal.name }}</p>
</template>
<script lang="ts" setup>
import { usePerson, useCar, useAnimal } from "./hooks";
const { person, changePersonName } = usePerson();
const { car } = useCar();
</script>
// usePerson.ts
import { reactive, watch } from "vue";
export default function usePerson() {
const person = reactive<{ name: string; sex: string }>({
name: "小明",
sex: "male",
});
watch(
() => [person.name, person.sex],
([nameVal, sexVal]) => {
console.log(`名字被修改了, 修改为 ${nameVal}`);
console.log(`名字被修改了, 修改为 ${sexVal}`);
}
);
function changePersonName() {
person.name = "小浪";
}
return {
person,
changePersonName,
};
}
// useCar.ts
import { reactive } from "vue";
export default function useCar() {
const car = reactive<{ name: string; price: string }>({
name: "宝马",
price: "40w",
});
function changeCarPrice() {
car.price = "80w";
}
return {
car,
changeCarPrice,
};
}
После сравнения мы обнаружим, что Vue3 позволяет нам лучше организовать наш код.person
а такжеcar
Вся логика вынесена в отдельный блок
Это просто преимущество организации кода? Нет нет нет, давайте посмотрим на некоторые изменения в шаблоне
-
<template>
Начальная нота в этикетке может быть опущена<div>
ярлык, потому чтоVue3
при условии片段
возможность использоватьVue-detools
, вы можете видеть, что естьfragment
отметка
-
Watch
Вам не нужно перечислять более одного.Vue3
Поддержка прослушивания нескольких источников в - очень естественно использовать
TypeScript
, ограничения типа проще
представление
Vue3 в основном улучшен в этих аспектах
- этап компиляции. Оптимизируйте алгоритм сравнения, статическое ускорение и т. д.
- Отзывчивая система.
Proxy()
заменятьObject.defineProperty()
слушающий объект. Слушайте объект без дальнейшего обхода,Proxy()
можно захватить весь объект - Объем упаковки уменьшен. Метод записи Compostion API может лучше выполнять встряхивание дерева, уменьшать код, который не вводится в контексте, и уменьшать размер упакованных файлов.
- новый
片段
характеристика. файлы Vue<template>
Внутри тега больше нет необходимости принудительно объявлять<div>
Метки, экономящие дополнительные накладные расходы узла
🎤 Резюме
Есть еще много преимуществ и новых функций Vue3.Эта статья в основном начинается сVue2/3版本的优缺点
а такжеSFC写法变化
Эти два аспекта задействованы, и мы расскажем вам, почему мы хотим использовать Vue3.
Vue3 - очень ароматный и лучше поддерживает Tymdercript, что делает Vue3 первым выбором для проектов Vue Projects Enterprise, а также различные новые функции также удовлетворяют тенденцию развития технологии развития.
т.е. браузер: тогда я иду?
👓 наконец
Перевести Перевести Что такое Vue3?
Если эта статья была вам полезна, то, пожалуйста, используйте свою маленькую руку, чтобы поставить лайк 👍, каждый ваш лайк - это большой стимул для меня продолжать творить!
использованная литература
Интервьюер: В каких аспектах в основном отражаются улучшения производительности Vue3.0?
Учебник по Vue3: где Vue 3.x быстр?
разное
Последний день ежегодного списка популярных авторов Nuggets, каждый может проголосовать за нашу команду~IDuxFE@Sangfor Команда разработчиков интерфейсаСпасибо за вашу поддержку~