предисловие
Буквально в последний день 2020 года я обновил проект небольшой компании доvue3, проект очень простой, основная функция - пазл H5 (внутренний проект компании, неудобно давать ссылку)
Первоначальная структура проекта:vue2 + vue-cli2 + vant
Обновленная архитектура проекта:vue3 + vite1.0 + vant
Один день перепрошить и выйти в интернет, в Новый год все работает нормально😘
Давайте не будем скромными или высокомерными, давайте обсудимvue3а такжеvite1.0
viteОбновлен до 2.0
В Новый год Ю Юйси сделала нам новогодний подарок и выпустилаviteВерсия 2.0
Разве это не шокирует!1.0еще не используется,2.0вышел из?
не паникуйте, по-моему2.0Основная точка обновленияviteа такжеvueРазвязка, и есть выходvite официальная документация веб-сайта, хоть и на английском, но если терпеливо читать, то понять можно
я используюviteподводные камни, встречающиеся в
Многие люди на самом деле не принимаютviteДля формальной разработки проекта просто используйтеviteнаезжатьvue3Запустите демо. потому что теперь на основеwebpackСооруженные леса достаточно устойчивы и просты в использовании.
viteПреимущества очевидны, и я лично думаю, что он, вероятно, будет заменен в будущем.webpack,ЭтоviteКак это работает в формальной разработке проекта?
Ниже яviteЧто касается слотов, встречающихся в использовании, я поделюсь с вами текущим этапом.viteЕсли есть какие-то неприятные моменты в использовании, если есть какая-то ошибка, пожалуйста, оставьте комментарий.
requireнельзя использовать
В использованииvue-cliКогда для нужд бизнеса нам может понадобиться сослаться на картинку, подобную этой
{
imgUrl:require("../assets/images/bg.png")
}
затем вtemplateиспользуется в
<img :src="imgUrl" alt="">
Как путь изображения является динамическим, нам также нужно использоватьrequireСсылка, чтобы фреймворк мог анализировать правильный путь при упаковке
Но эта схема цитирования изображенийviteнельзя использовать в браузере, браузер сообщитrequireсвязанные ошибки
Такая ошибка, естественно, понятна, потому чтоviteИспользуйте собственный браузерmoduleразбиратьjs, покаrequireСинтаксисnodeГрамматика, естественная ошибка отчета, ноviteРазумное решение не дается.
Наконец, необходимоrequireИмпортированные изображения помещаются вpublicпапка 😟, так что путь до и после упаковки не будет обрабатываться, что может обеспечить правильность пути
Глобальный файл css не может быть настроен
существуетvue-cliв мы можем использоватьcss预处理器чтобы извлечь общедоступные переменные css и функции css и поместить их в файл, а затемvue.config.jsв следующей конфигурации
module.exports = {
css: {
// 不用在每一个页面都进行引入样式,就能直接引用。
loaderOptions: {
sass: {
prependData: `@import '@/assets/scss/variables.scss';`
}
}
}
}
так что мы можем использовать любойsassможно использовать в файлеsassПеременная
но вviteОднако в 🙄 такой конфигурации нет, официальный также предоставляет, как настроить переменные css.
export default {
css: {
preprocessorOptions: {
scss: {
additionalData: `$injectedColor: orange;`
}
}
}
}
Однако, если я хочу извлечь все переменные и функции в один файл, например:
export default {
css: {
preprocessorOptions: {
scss: {
additionalData: "@import '../assets/scss/_base.scss';" // 无效
}
}
}
}
открытие не работает
идтиviteизissuesЯ обнаружил, что кто-то также упомянул подобную проблему
Ответ Юйси тоже очень прост
означает использоватьpoctss-importНастроить глобальный css, но не сказано, как его настроить (если знаете, можете прокомментировать ниже)
Сообщение об ошибке не является дружественным
в сравнении сvue-cli,viteПодсказка об ошибке не очень удобна, и иногда страница не сообщает об ошибке или что-то в этом роде. Когда это происходит, мы можем перезапустить фреймворк, чтобы попробовать, и мы ссылаемся.vueфайл, имя суффикса не может быть опущено.
рекомендуется
viteОн уже достаточно совершенен, и может быть лучше, чем какое-то инженерное и общественное строительство.webpackЭто немного хуже, но общий опыт таков, что многие места могут быть перенесены без проблем, и скорость действительно выше, чемwebpackБыстро, пакет, который выходит, лучше, чемwebpackSmall, ниже приведено сравнение размера пакета одного и того же кода:
Просмотры на vue3
vue3Внутреннюю оптимизацию обсуждать не будем, поговорим об опыте разработки
Увеличенное количество кода
можно почувствовать при использованииvue3когда все становится функцией, а при использованииvuexа такжеvue-routerтоже очень разные
import { useRoute, useRouter } from "vue-router";
import { useStore } from "vuex";
export default {
setup() {
const route = useRoute();
const router = useRouter();
const store = useStore();
}
Незримо увеличилось количество кода
Код становится более гибким
Самое большое обновление vue3composition-api, Новый синтаксис и структура кода с точки зрения того, что должен делать API, действительно должны повысить гибкость кода, и организация кода действительно намного выше.
Однако в реальной разработке мы, скорее всего, случайно напишемsetupВ случае большого количества кода вы также можете столкнуться со следующими сценариями:
同事小张: 可以把代码抽离出来,放到不同的文件夹,便于维护啊!
我: 抽离出来就又会多出来几个js文件,对我来说并不便于维护啊!
同事小张: 你懂啥,我看你就是懒吧!
我: 是啊,时间紧任务重,哪有时间整理啊!
Можно только сказать, что между идеалом и реальностью всегда есть разница.Все это палка о двух концах, как вы думаете?
наконец
Если вы что-то получили, пожалуйста, дайте щедрый палец вверх 😚