«Это первый день моего участия в первом испытании обновлений 2022 года. Подробную информацию о мероприятии см.:Вызов первого обновления 2022 г.".
предисловие
Недавно я возился с Vue3 + Vite2 и столкнулся со многими проблемами, я разобрался с 5 небольшими знаниями, которые могут повысить эффективность разработки, сделав разработку вашего проекта Vue3 более плавной и гладкой.
1. Улучшение имени установки
Vue3
изsetup
Синтаксический сахар — это хорошо, но использованиеsetup
Первая проблема, связанная с грамматикой, заключается в том, что ее нельзя настроить под себя.name
, а мы используемkeep-alive
часто требуетсяname
, решение этой проблемы обычно заключается в написании двухscript
теги для разрешения, используетсяsetup
, один не используется, но это обязательно неэлегантно.
<script lang="ts">
import { defineComponent, onMounted } from 'vue'
export default defineComponent({
name: 'OrderList'
})
</script>
<script lang="ts" setup>
onMounted(() => {
console.log('mounted===')
})
</script>
С помощью плагиновvite-plugin-vue-setup-extend
Это позволяет нам решить эту проблему более элегантно, без необходимости писать дваscript
ярлык, вы можете напрямуюscript
указано на этикеткеname
.
Установить
npm i vite-plugin-vue-setup-extend -D
настроить
// vite.config.ts
import { defineConfig } from 'vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
export default defineConfig({
plugins: [
VueSetupExtend()
]
})
использовать
<script lang="ts" setup name="OrderList">
import { onMounted } from 'vue'
onMounted(() => {
console.log('mounted===')
})
</script>
2. Автоматический импорт API
setup
Синтаксис избавляет нас от необходимости помещать переменные и методы один за другим.return
Вы можете использовать его на шаблоне, когда выходите на улицу, что значительно освобождает наши руки. Однако для некоторых часто используемыхVue
API, напримерref
,computed
,watch
д., или нам нужно делать это вручную на странице каждый разimport
.
мы можем пройтиunplugin-auto-import
Реализуйте автоматический импорт без необходимостиimport
Может использоваться в файлеVue
API.
Установить
npm i unplugin-auto-import -D
настроить
// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
export default defineConfig({
plugins: [
AutoImport({
// 可以自定义文件生成的位置,默认是根目录下,使用ts的建议放src目录下
dts: 'src/auto-imports.d.ts',
imports: ['vue']
})
]
})
Конфигурация установки будет сгенерирована автоматическиauto-imports.d.ts
документ.
// auto-imports.d.ts
// Generated by 'unplugin-auto-import'
// We suggest you to commit this file into source control
declare global {
const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp']
const customRef: typeof import('vue')['customRef']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const effectScope: typeof import('vue')['effectScope']
const EffectScope: typeof import('vue')['EffectScope']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
// ...
}
export {}
использовать
<script lang="ts" setup name="OrderList">
// 不用import,直接使用ref
const count = ref(0)
onMounted(() => {
console.log('mounted===')
})
</script>
Над намиvite.config.ts
Конфигурация была введена толькоvue
,imports: ['vue']
,Кромеvue
Вы также можете импортировать другие в соответствии с документацией, такой какvue-router
,vue-use
Ждать.
Лично рекомендуется автоматически импортировать только некоторые знакомые API, такие какvue
Мы знакомы с API .VueUse
Эта библиотека или использованиеimport
Лучше ведь в редакторе есть подсказки, а ошибки писать не просто.
решитьeslint
ошибка
В отсутствиеimport
использование приведет кeslint
Подскажите сообщить об ошибке, можно пройтиeslintrc.js
Установить плагин**vue-global-api**
решить.
// 安装依赖
npm i vue-global-api -D
// eslintrc.js
module.exports = {
extends: [
'vue-global-api'
]
}
3. Прощай.значение
Как мы все знаем,ref
Когда нас просят получить доступ к переменным, нам нужно добавить.value
, что заставляет многих разработчиков чувствовать себя некомфортно.
let count = ref(1)
const addCount = () => {
count.value += 1
}
Позже Ю Да также представил новыйref
Предложение синтаксического сахара.
ref: count = 1
const addCount = () => {
count += 1
}
Как только предложение вышло, оно вызвало дискуссию в сообществе.Прошло уже много времени, и тема бреда уже не здесь.
Здесь я представляю другой способ написания, и это также план, который позже опубликовал официальный представитель.ref
добавленный$
, эта функция по умолчанию отключена, и ее необходимо включить вручную.
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [
vue({
refTransform: true // 开启ref转换
})
]
})
После открытия вы можете написать:
let count = $ref(1)
const addCount = () => {
count++
}
Синтаксический сахар немного отличается в зависимости от конфигурации версии.Ниже приведены версии соответствующих плагинов, которые я использую:
"vue": "^3.2.2",
"@vitejs/plugin-vue": "^1.9.0",
"@vue/compiler-sfc": "^3.2.5",
"vite": "^2.6.13"
4. Автоматически импортировать изображения
существуетVue2
Мы часто обращаемся к таким картинкам:
<img :src="require('@/assets/image/logo.png')" />
но вVite
не поддерживается вrequire
, эталонное изображение становится следующим:
<template>
<img :src="Logo" />
</template>
<script lang="ts" setup>
import Logo from '@/assets/image/logo.png'
</script>
Каждый раз, когда вы используете изображение, вы должныimport
Очевидно, что у каждого пора касаться рыбы, то мы можем использовать помощьvite-plugin-vue-images
для автоматического импорта изображений.
Shuangguishuang, но склонный к переменным конфликтам, используйте с осторожностью!
Установить
npm i vite-plugin-vue-images -D
настроить
// vite.config.ts
import { defineConfig } from 'vite'
import ViteImages from 'vite-plugin-vue-images'
export default defineConfig({
plugins: [
ViteImages({
dirs: ['src/assets/image'] // 指明图片存放目录
})
]
})
использовать
<template>
<!-- 直接使用 -->
<img :src="Logo" />
</template>
<script lang="ts" setup>
// import Logo from '@/assets/image/logo.png'
</script>
5. Игнорируйте суффикс .vue
Я считаю, что многие людиVue2
При разработке файлы импорта игнорируют суффикс .vue. но вVite
, игнорирование суффикса .vue вызовет ошибку.
import Home from '@/views/home' // error
import Home from '@/views/home.vue' // ok
Согласно ответу Ю Да, необходимость писать суффиксы на самом деле намеренно разработана таким образом, чтобы побудить всех писать таким образом.
Но если очень не хочется писать, официал тоже оказывает поддержку.
// vite.config.ts
import { defineConfig } from 'vite'
export default defineConfig({
resolve: {
extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
}
})
Здесь следует отметить, что ручная настройкаextensions
Не забудьте добавить суффикс к файлам других типов, потому что другие типы файлов, такие как js, по умолчанию могут быть импортированы без суффикса.
Хотя это можно сделать, ведь в официальной документации сказано, что игнорировать суффикс .vue не рекомендуется, поэтому в реальной разработке рекомендуется писать .vue честно.
благодарный
Это здесь.Спасибо за чтение!予人玫瑰,手有余香,别忘了动动手指поставить лайк❤️.
Если в этой статье есть какие-либо ошибки или недостатки, пожалуйста, исправьте их в комментариях!