Очистить кэш vue js

Обновлено: 04.07.2024

Laravel 8 · Компиляция веб-активов с помощью Mix

Laravel Mix – это пакет, разработанный создателем Laracasts Джеффри Уэй, предлагает гибкий API для определения шагов сборки Webpack для вашего приложения с использованием нескольких распространенных препроцессоров CSS и JavaScript.

Другими словами, Mix упрощает компиляцию и минимизацию файлов CSS и JavaScript вашего приложения. Посредством простой цепочки методов вы можете гибко определять свой сценарий по сборки веб-актива. Например:

Если вы однажды были сбиты с толку и ошеломлены, начав работу с Webpack, то вам понравится Laravel Mix. Однако от вас не требуется использовать его при разработке приложения; вы можете использовать любой желаемый инструмент сборки, или даже не использовать его вовсе. Справедливо и обратное: вы можете использовать Laravel Mix без привязки вашего приложения к фреймворку Laravel.

Если вам нужно начать разработку приложения с помощью Laravel и Tailwind CSS, ознакомьтесь с одним из наших стартовых комплектов приложения.

Установка и настройка

Перед запуском Mix вы должны сначала убедиться, что на вашем компьютере установлены Node.js и NPM:

Вы можете легко установить последнюю версию Node и NPM с помощью простых графических установщиков с официального веб-сайта Node. Или, если вы используете Laravel Sail, вы можете вызывать Node и NPM через Sail:

Установка Laravel Mix

Единственный оставшийся шаг – установить Laravel Mix. В свежей установке Laravel вы найдете файл package.json в вашем корневом каталоге. Файл package.json по умолчанию уже включает в себя все, что вам нужно для начала работы с Laravel Mix. Думайте об этом файле как о вашем файле composer.json , за исключением того, что он определяет зависимости Node вместо зависимостей PHP. Вы можете установить зависимости, на которые он ссылается, запустив:

Mix – это слой конфигурации поверх Webpack, поэтому для запуска задач Mix вам нужно только выполнить один из сценариев NPM, который содержится в файле package.json по умолчанию. Когда вы запускаете сценарии dev или production , все исходники активов CSS и JavaScript вашего приложения будут скомпилированы и помещены в каталог public приложения:

Наблюдение за изменениями исходников веб-активов

Команда npm run watch продолжит работу в консоли и будет следить за изменениями во всех соответствующих файлах CSS и JavaScript. Webpack автоматически перекомпилирует ваши исходники, когда обнаружит изменение в одном из этих файлов:

Webpack может не обнаруживать изменения ваших файлов в определенных локальных средах разработки. Если это наблюдается в вашей системе, рассмотрите возможность использования команды watch-poll :

Работа с таблицами стилей

Файл webpack.mix.js вашего приложения является отправной точкой для компиляции всех веб-активов. Думайте об этом как о легкой конфигурационной обертке вокруг Webpack. Задачи Mix можно объединить в цепочку при определении того, как должны быть скомпилированы ваши веб-активы.

Tailwind CSS – это современный, низкоутилитарный фреймворк для создания удивительных сайтов, не покидая HTML-разметку. Давайте рассмотрим, как начать использовать его в проекте Laravel совместно с Mix. Во-первых, мы должны установить Tailwind с помощью NPM и сгенерировать наш конфигурационный файл Tailwind:

Команда init сгенерирует файл tailwind.config.js . В этом файле вы можете настроить пути ко всем шаблонам вашего приложения и JavaScript, чтобы Tailwind мог очистить неиспользуемые стили при оптимизации CSS для эксплуатационного окружения:

Затем вы должны добавить каждый из «слоев» Tailwind в файл resources/css/app.css вашего приложения:

После того, как вы указали необходимые слои Tailwind, необходимо обновить файл webpack.mix.js вашего приложения, чтобы скомпилировать ваш CSS, использующий Tailwind:

Наконец, вы должны указать свою таблицу стилей в основном шаблоне макета вашего приложения. Многие разработчики приложений предпочитают хранить этот шаблон в resources/views/layouts/app.blade.php . Кроме того, убедитесь, что вы добавили метатег viewport , если он еще не присутствует:

PostCSS – мощный инструмент для преобразования вашего CSS, включен в Laravel Mix из коробки. По умолчанию Mix использует популярный плагин Autoprefixer для автоматического применения всех необходимых префиксов CSS3. Однако вы можете добавлять любые дополнительные плагины, подходящие для вашего приложения.

Сначала установите нужный плагин через NPM и включите его в свой массив плагинов при вызове метода postCss Mix. Метод postCss принимает путь к вашему файлу CSS в качестве первого аргумента, а в качестве второго аргумента – каталог, в который следует поместить скомпилированный файл:

Или вы можете выполнить postCss без дополнительных плагинов, чтобы получить простую компиляцию и минификацию CSS:

Метод sass позволяет вам скомпилировать Sass в CSS, понятный веб-браузерам. Метод sass принимает путь к вашему файлу Sass в качестве своего первого аргумента и каталог, в который должен быть помещен скомпилированный файл, в качестве второго аргумента:

Вы можете скомпилировать несколько файлов Sass в отдельные файлы CSS и даже настроить каталог назначения результирующего CSS, вызывая метод sass несколько раз:

Поскольку Laravel Mix построен поверх Webpack, важно понимать несколько концепций Webpack. Для компиляции CSS Webpack перезапишет и оптимизирует любые вызовы url() в ваших таблицах стилей. Хотя поначалу это может показаться странным, это невероятно мощная функциональность. Представьте, что мы хотим скомпилировать Sass, который включает относительный URL-адрес изображения:

По умолчанию Laravel Mix и Webpack найдут example.jpg , скопируют его в вашу папку public/images , а затем перепишут url() в созданной вами таблице стилей. Таким образом, ваш скомпилированный CSS будет:

Какой бы полезной ни была эта функция, возможно, что ваша существующая структура папок уже настроена так, как вам нравится. В этом случае вы можете отключить перезапись url() следующим образом:

После добавления этой записи в ваш файл webpack.mix.js , Mix больше не будет сопоставлять какой-либо url() или копировать веб-активы в ваш публичный каталог. Другими словами, скомпилированный CSS будет выглядеть так же, как вы его изначально указали:

Карты исходников CSS

Хотя по умолчанию они отключены, карты исходников могут быть активированы путем вызова метода mix.sourceMaps() в вашем файле webpack.mix.js . Хоть это и связано с затратами на компиляцию / производительность, но, в свою очередь, предоставит дополнительную отладочную информацию в инструментах разработчика вашего браузера при использовании скомпилированных веб-активов:

Стиль сопоставления исходников

Webpack предлагает множество стилей сопоставления исходников. По умолчанию стиль сопоставления исходников Mix установлен как eval-source-map , что обеспечивает быстрое время перестроения. Если вы хотите изменить стиль сопоставления, то вы можете сделать это с помощью метода sourceMaps :

Работа с JavaScript

Mix содержит несколько функций, которые помогут вам работать с вашими файлами JavaScript, например, компиляция современного ECMAScript, объединение модулей, минификация и объединение простых файлов JavaScript. Более того, все это работает без проблем, не требуя ни унции специального конфигурирования:

Теперь, с помощью одной строчки кода вы можете воспользоваться следующими преимуществами:

  • синтаксис современного EcmaScript.
  • модули
  • минификация для эксплуатационного режима.

Mix автоматически установит плагины Babel, необходимые для поддержки компиляции однофайловых компонентов Vue при использовании метода vue . Никакой дополнительной настройки не требуется:

После того, как ваш JavaScript скомпилирован, вы можете ссылаться на него в своем приложении:

Mix автоматически установит плагины Babel, необходимые для поддержки React. Для начала добавьте вызов метода react :

За кулисами Mix загрузит и включит соответствующий плагин babel-preset-react Babel. После того, как ваш JavaScript скомпилирован, вы можете ссылаться на него в своем приложении:

Извлечение сторонних библиотек

Одним из потенциальных недостатков объединения всего кода JavaScript для конкретного приложения со сторонними библиотеками, такими как React и Vue, является то, что это затрудняет долгосрочное кеширование. Например, одно обновление кода вашего приложения заставит браузер повторно загрузить все сторонние библиотеки, даже если они не изменились.

Если вы намереваетесь часто обновлять JavaScript своего приложения, вам следует рассмотреть возможность извлечения всех сторонних библиотек в их собственный файл. Таким образом, изменение кода вашего приложения не повлияет на кеширование вашего большого файла vendor.js . Метод extract Mix делает это проще простого:

Метод extract принимает массив всех библиотек или модулей, которые вы хотите извлечь в файл vendor.js . Используя приведенный выше фрагмент в качестве примера, Mix сгенерирует следующие файлы:

  • public/js/manifest.js : The Webpack manifest runtime
  • public/js/vendor.js : Your vendor libraries
  • public/js/app.js : Your application code

Чтобы избежать ошибок JavaScript, обязательно загружайте эти файлы в правильном порядке:

Пользовательская конфигурация Webpack

Иногда требуется дополнительные изменения базовой конфигурации Webpack. Например, у вас может быть специальный загрузчик или плагин, на который нужно сослаться.

Mix содержит полезный метод webpackConfig , который позволяет вам объединить небольшие переопределения конфигурации Webpack. Это особенно привлекательный вариант, поскольку он не требует от вас копирования и поддержки вашей собственной копии файла webpack.config.js . Метод webpackConfig принимает объект, который должен содержать любую специфичную для Webpack конфигурацию, которую вы хотите применить.

Версионирование / очистка кеша

Многие разработчики дополняют имена своих скомпилированных веб-активов меткой времени или уникальным токеном, чтобы заставить браузеры загружать свежие активы вместо устаревших копий кода. Mix может автоматически обработать это за вас, используя метод version .

Метод version добавит уникальный хеш к именам файлов всех скомпилированных исходников, что сделает очистку кеша более удобной:

После создания файла версионирования вы не узнаете его точное имя. Итак, вы должны использовать глобальную функцию mix Laravel в вашем шаблоне для загрузки хешированного веб-актива. Глобальная функция mix фреймворка Laravel автоматически определит текущее имя хешированного файла:

Поскольку файлы с поддержкой версий обычно нужны только в эксплуатационном окружении, вы можете указать, чтобы процесс управления версиями выполнялся только во время запуска npm run prod :

Изменение базовых URL-адресов с помощью Mix

Если ваши скомпилированные веб-активы Mix развернуты отдельно от вашего приложения в CDN, то вам нужно будет изменить базовый URL-адрес, генерируемый функцией mix . Вы можете сделать это, добавив параметр mix_url в конфигурационный файл config/app.php вашего приложения:

После указания URL-адреса, функция mix будет подставлять указанный префикс при создании URL-адресов для веб-активов:

Перезагрузка с помощью Browsersync

BrowserSync может автоматически отслеживать изменения в ваших файлах и вносить изменения в браузер, не требуя обновления страницы вручную. Вы можете включить эту поддержку, вызвав метод mix.browserSync() :

Параметры BrowserSync можно указать путем передачи объекта JavaScript в метод browserSync :

Затем запустите сервер разработки Webpack с помощью команды npm run watch . Теперь, когда вы изменяете скрипт или файл PHP, вы можете наблюдать, как браузер мгновенно обновляет страницу, чтобы отразить ваши изменения.

Вы можете использовать переменные окружения в своем webpack.mix.js , добавив к одной из переменных префикс MIX_ в вашем файле .env :

После того, как переменная была определена в вашем файле .env , вы можете получить к ней доступ через объект process.env . Однако, вам нужно будет перезапустить задание, если значение переменной среды изменится во время ее выполнения:

Когда доступно, Mix будет автоматически отображать уведомления ОС при компиляции, давая вам мгновенную информацию о том, была ли компиляция успешной или нет. Однако, могут быть случаи, когда вы предпочтете отключить эти уведомления. Одним из таких примеров может быть запуск Mix на вашем рабочем сервере. Уведомления можно отключить с помощью метода disableNotifications :

Мы развернули последний код JavaScript, но мы не можем получить последний код JavaScript.

От редакции. Этот вопрос частично дублируется в следующих местах, и ответ на первый из следующих вопросов, вероятно, является лучшим. Этот принятый ответ больше не является идеальным решением.

Это смущает меня: «Мы развернули последний код JavaScript, но мы не смогли получить последний код JavaScript» Я предполагаю, что вы имеете в виду, как заставить клиентские браузеры использовать вашу последнюю версию javascript, а не их кэшированную версию - в этом случае вам нужен ответ Грега. Если вы хотите знать, как это сделать в своем браузере, это ответ Дэвида Джонстона. Обычный подход заключается в том, чтобы прикрепить ?version=xxx файлы к связанным JS-файлам на этапе сборки. Каждая новая сборка будет запрашивать новую версию файла JS. @JuanMendes Это не всегда работает. Этот же шаг предлагается, когда люди сталкиваются с проблемами, пытаясь увидеть последний значок. Это просто не гарантировано работать.

Вы можете вызвать window.location.reload (true), чтобы перезагрузить текущую страницу. Он будет игнорировать любые кэшированные элементы и получать новые копии страницы, CSS, изображений, JavaScript и т. Д. С сервера. Это не очищает весь кеш, но имеет эффект очистки кеша для страницы, на которой вы находитесь.

Однако вашей лучшей стратегией является создание версии пути или имени файла, как указано в различных других ответах. Кроме того, см. Revving Filenames: не используйте строку запроса по причинам, которые не следует использовать в ?v=n качестве схемы управления версиями.

Вау, спасибо! Это хорошо работает и для кеша приложений HTML5, загруженного из файла cache.manifest. У меня был старый манифест, который не удалялся из памяти, поэтому один браузер, в котором он был кэширован, просто не отображал новые файлы. Я набрал это в консоли javascript и работал нормально. Спасибо! но с изменением имени файла . разве вы не сохраните все предыдущие версии на месте? в противном случае вы получите много неудачных попыток от поисковых систем и что не читать старые версии (или закладки / связанные изображения) Это то же самое, что пользователь нажимает кнопку обновления? @Manuel Отключит доступ к странице только из кеша того URL, который вы назвали location.reload (true). Он никогда не удаляет исходную страницу из кэша, так как он просто добавляет метку времени к новому запросу, и если на этой странице выполняются другие вызовы, выполняемые асинхронно, эти запросы НЕ будут отключены. Например. Если вы обновите страницу с помощью reload (true), которая загружает некоторый html, и на этой странице есть скрипт, который выполняет второй вызов ajax для отображения большего количества html на той же странице, во втором запросе не будет отключено кэширование.

Вы не можете очистить кеш с помощью JavaScript. Распространенным способом является добавление номера редакции или последней обновленной метки времени в файл, например так:

Однако обратите внимание, что многие прокси не будут кэшировать файл, когда у него есть строка запроса Смотрите ответ Кевина Хакансона . Как я могу очистить кеш, когда весь HTML был кэширован? Это не повлияет, даже если номер версии добавлен из-за кэшированного HTML. Помогите Если я не могу очистить элемент кэша, то почему MDN говорит, что я могу? Чего мне не хватает? Я попробовал то, что говорит MDN, но не повезло.

Попробуйте изменить src файла JavaScript? Из этого:

Этот метод должен заставить ваш браузер загрузить новую копию файла JS.

это ничего не делает, кроме как быть чем-то другим. это может быть? 12345 или? Кайл Значит, имя файла тоже нужно менять? Или просто путь src, который нужно изменить?

Помимо кэширования каждый час или каждую неделю, вы можете кэшировать в соответствии с данными файла.

или даже использовать время модификации файла:

Могу ли я проверить, правильно ли я понимаю? С опцией 1 при изменении файла изменяется хэш контрольной суммы md5, который затем изменяет URL-адрес. Браузер видит новый URL и запускает новую загрузку файла. Полученные данные, добавленные к URL, игнорируются сервером. Если это так, чертовски приятно. Кроме того, интенсивно ли использует MD5 весь файловый процессор? Я подумываю о том, чтобы сделать это для файлов css и js навсегда, но я не хотел бы видеть снижение скорости сервера из-за этого. Использование контрольной суммы - хорошая идея, но это должно быть сделано правильно. Вычисляя его, каждый запрос для каждого файла значительно снизит вашу производительность. Querystring не подходит для кеширования, смотрите другие ответы. Правильное использование - добавить контрольную сумму (часть?) Или номер версии к имени файла и использовать вместо этого это новое имя (вы можете использовать скрипт сборки, чтобы сделать это автоматически при развертывании). Смотри ворчание , рев и усмин .

Вы также можете принудительно перезагружать код каждый час, например, в PHP:

@GMsoF - это просто дополнительный параметр get, который используется (в данном случае), чтобы сообщить браузеру, что это «другой» файл. Так что браузер откажется от кэшированной версии и загрузит эту. Это часто используется с «последней датой изменения» файла. Я надеюсь, что это имеет смысл ;-)

поместите это в конце вашего шаблона:

пожалуйста, предоставьте некоторые объяснения вашего решения @GabrielEspinoza он перезагружает файлы с помощью javascript, что позволяет обновлять кэши.

попробуйте использовать это

Вот фрагмент того, что я использую для своего последнего проекта.

Наш процесс публикации генерирует файл с номером ревизии текущей сборки. Это работает с помощью URL, кодирующего этот файл и использующего его в качестве кеша. В случае отработки отказа, если этот файл не существует, используются год и номер недели, чтобы кэширование продолжало работать, и оно будет обновляться не реже одного раза в неделю.

Кроме того, это обеспечивает очистку кеша при каждой загрузке страницы в среде разработки, поэтому разработчикам не нужно беспокоиться об очистке кеша для любых ресурсов (вызовов javascript, css, ajax и т. Д.).

или вы можете просто прочитать js файл сервером с помощью file_get_contets, а затем добавить в заголовок echo содержимое js

Возможно, «очистка кеша» не так проста, как должна быть. Вместо очистки кеша в моих браузерах я понял, что «касание» файла фактически изменит дату кеширования исходного файла на сервере (проверено на Edge, Chrome и Firefox), и большинство браузеров автоматически загрузят самую свежую свежую копию что на вашем сервере (код, графика и любые мультимедиа тоже). Я предлагаю вам просто скопировать самые последние сценарии на сервере и решить проблему "сделать что-то на ощупь" перед запуском вашей программы, поэтому она изменит дату всех ваших проблемных файлов на самую последнюю дату и время, а затем загрузит свежую копию в ваш браузер:

. остальная часть вашей программы .

Мне потребовалось некоторое время, чтобы решить эту проблему (поскольку многие браузеры по-разному работают с разными командами, но все они проверяют время файлов и сравнивают их с загруженной в браузере копией, если обновление даты и времени выполнят обновление), если вы не может идти по правильному пути, всегда есть другое полезное и лучшее решение. С наилучшими пожеланиями и счастливого кемпинга.

Мне нравится этот подход, но, возможно, я реализую это в неправильной области? Кто-нибудь знает, где добавить это в настройке WordPress? Я добавил его в файл functions.php с прямыми ссылками на файлы JavaScript и CSS, но мне все равно пришлось сделать перезагрузку, чтобы заметить изменения. То, что вам нужно сделать, находится в вашем главном html-каталоге WordPress, отредактируйте ваш index.php для вызова или выполните команду Touch () для файлов, которые вам нужно обновить и загрузить. У меня были проблемы с небольшими фото и js-файлами, которые застряли в кеше. Я пробовал большинство методов, описанных для освобождения из памяти, но лучший способ - загрузить текущий свежий правильный. Вы можете сделать это, просто выполнив «Touch Thing», так как он ничего не изменяет в файле, просто обновляет текущее время и дату, поэтому обманывает ваш браузер, думая, что его другая версия файла и проблема исправлены. Работает в большинстве браузеров

У меня были некоторые проблемы с кодом, предложенным yboussard. Внутренняя J-петля не работает. Вот модифицированный код, который я использую с успехом.

banner

Get $10 off my new course, Vue.js: The Composition API, TypeScript and Testing with discount code HANDBOOK at the checkout. 🎉 . It's on both Gumroad and Udemy. Preview it here.

Это руководство было написано для Vue.js 3 и Vue Test Utils v2.

Версия для Vue.js 2 здесь.

Так как роутер обычно включает в себя несколько компонентов, работающих вместе, тесты для роутера занимают место в пирамиде тестирования

на уровне e2e/интеграционных тестов. Тем не менее, иметь несколько модульных тестов вокруг роутинга не помешает.

Как обсуждалось в предыдущих секциях, есть два способа тестирования компонентов, которые работают с роутером:

  1. использовать настоящий экземпляр роутера
  2. замокать глобальные объекты $route и $router

Так как большинство Vue приложений использует официальную библиотеку Vue Router, в этом руководстве фокусируемся на ней.

Исходный код для тестов на этой странице можно найти здесь

Создадим простой <App> , у которого есть путь /nested-child . Перейдя на /nested-child , будет отрисован компонент <NestedRoute> . Сделаем файл App.vue и вставим следующий минимальный компонент:

<NestedRoute> также минимален:

Теперь нам нужно несколько маршрутов для тестирования. Давайте начнём с такого маршрута:

В настоящем приложении, вы обычно создаёте файл router.js и импортируете все созданные маршруты, а мы напишем так:

Поступим так же, как и с Vuex – создадим отдельный роутер для каждого теста. Это даст нам больше контроля над состоянием приложения в течение модульного тестирования.

Давайте посмотрим на код, а затем обсудим, что он делает. Мы тестируем App.vue , поэтому в App.spec.js напишем следующее:

Обратите внимание, что тесты помечены как await и вызывают nextTick . Смотрите здесь для получения дополнительной информации о том, почему.

Ещё один интересный момент. Перед установкой компонента мы делаем следующее:

Vue Router 4 (тот, который работает с Vue 3) имеет асинхронную маршрутизацию. Это означает, что перед установкой компонента нам необходимо убедиться, что роутер завершил начальный переход. Это легко сделать с помощью await router.isReady() .

Обратите внимание на то, что мы используем mount . Если мы используем shallowMount , то вместо <router-link> будет заглушка.

Использовать mount хорошо в некоторых случаях, но иногда - это не идеально. Например, когда вы отрисовываете весь компонент <App> , содержащий большое дерево с множеством компонентов, у которых есть дочерние компоненты и т.д. У всех компонентов сработают хуки жизненного цикла, где могут быть обращения к API и т.д.

Если вы используете Jest, его мощная система для моков позволяет элегантно решить эту проблему. Вы можете просто использовать мок для дочерних компонентов, в нашем случае для <NestedRoute> . Используем следующий мок и тесты всё ещё пройдут проверку:

Иногда настоящий роутер не нужен. Давайте обновим <NestedRoute> , чтобы он показывал имя пользователя в зависимости от текущего маршрута. В этот раз мы применим подход TDD для реализации теста. Вот базовый тест, который отрисовывает компонент и делает проверку:

У нас ещё нет <div >, поэтому запуск теста выдаст ошибку:

Теперь тест упадёт со следующей ошибкой:

Это потому, что $route не существует. Мы можем использовать настоящий роутер, но в этом случае легче использовать mocks в опции монтирования:

Теперь тест проходит проверку. В этом случае нам не нужно переходить куда-то или делать что-либо связанное с реализацией роутера, поэтому использование mocks оправдано. Нам не важно откуда берётся username в строке поиска, нам важно только то, что оно там есть.

Иногда сервер будет обрабатывать часть роутинга, в отличие от клиентской маршрутизации, с помощью Vue Router. В таких случаях использовать mocks для установки поисковой строки в тестах, является хорошей альтернативой использования реального экземпляра Vue Router.

Vue Router предоставляет несколько типов хуков, которые называются навигационными хуками

. Два таких примера:

  1. Глобальные хуки завершения перехода ( router.beforeEach ). Объявляются в экземпляре роутера.
  2. Хуки для конкретных компонентов, такие как beforeRouteEnter . Объявляются в компонентах.

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

Представим: у вас есть функция bustCache , которая должна вызываться на каждом маршруте, содержащим мета поле shouldBustCache . Ваши пути выглядели бы примерно так:

Используя мета поля shouldBustCache , вы хотите очистить текущий кэш, чтобы гарантировать, что пользователь не получит устаревшие данные. Реализация может выглядеть так:

В нашем модульном тесте, вы можете импортировать экземпляр роутера и попытаться вызвать beforeEach , написав router.beforeHooks[0]() . Это приведёт к ошибке в строке с next , так как вы не передали правильные аргументы. Вместо этого применяется стратегия, при которой нужно отделить и независимо экспортировать хук навигации beforeEach , перед его подключением к роутеру. Как насчёт такого:

Теперь писать тесты легко, хоть и немного долго:

Главное что нас интересует - это то, что мы применяем мок для всего модуля с помощью jest.mock , и сбрасываем мок с помощью хука afterEach . Экспортируя beforeEach , как обычную, разделённую функцию JavaScript, это становится банально тестировать.

Чтобы убедиться, что хук на самом деле вызывает bustCache и отображает самые последние данные, можно использовать инструмент тестирования e2e, такой, как Cypress.io

, который поставляется с приложениями, созданными с использованием vue-cli.

Хуки для конкретных компонентов также легко тестировать, если рассматривать их, как обычные функции JavaScript. Допустим, мы добавили хук beforeRouteLeave к <NestedRoute> :

Мы можем тестировать это также, как и глобальные хуки:

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

Lorem ipsum dolor

JavaScript error, что это значит

  • нарушение в каких-либо процессах приложения ;
  • повреждение системных файлов;
  • отключение какой-либо службы;
  • и др.
  1. Первое , что необходимо выполнить , — это проверить компьютер на предмет заражения вирусом, потому что вирусы очень часто провоцируют подобные ошибки. А спонсором данного материала является сайт Уфавип, на котором размещены анкеты всех шлюх в Уфе из Черниковки. На нем вы непременно сможете подобрать проститутку, подходящую вам как в плане цены, так и в плане предоставляемых ею услуг. Если антивирус обнаружил вирус, то исключите его и попробуйте заново запустить приложение, которое вызвало проблему «JavaScript error».
  2. Нужно обновить программное обеспечение, которое вызвало ошибку , и саму операционную систему. Из-за отсутствия обновлений возникают подобные проблемы. А иногда ошибка может возникнуть из-за того , ч то один компонент обновился, а другой — нет : например, программу вы обновили, а ОС — нет. В результате выл езает «JavaScript error», а вы бежите в и нтернет узнавать, что это значит.
  3. Еще одним популярным решением является полный «снос» проблемного ПО, а потом его переустановка.
  4. Также при ошибке «JavaScript error» может помочь восстановление операционной системы до той даты, когда она функционировала нормально.

Заключение

JavaScript error имеет множество разновидностей, но практически все они решаются перечисленными выше действиями. Если ни один из способов вам не помог — это значит, что самое время обратиться в специализированный сервис, потому как есть шанс, что проблема расположена намного «глубже», чем может достать обычный пользователь.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Читайте также: