адрес проектаvue-adminприветственная звезда
исходный адресWoohoo.C code.live/Len too/list…
передовой
В последние месяцы я взял на себя планирование реконструкции старого проекта, сколько ему лет? Это front-end проект бронзового века, проект, в котором front-end и back-end находятся в одном котле, и инструменты упаковки вообще не используются.
- За кулисами
php
+YII
визуализировать страницу - внешний интерфейс
html
,css
,js
Три мушкетера плюсjQuery
Копипаста сухая.
Переднего конца недостаточно для заднего конца. Если требования к внешнему интерфейсу не очень сложны, персонал внутреннего отдела иногда будет выполнять некоторую работу по внешнему интерфейсу.
Позже я также стал отвечать за разработку требований к этому проекту. После того, как я выдвинул несколько требований, я чувствую, что меня тошнит кровью для пользователя, который привык к модульной разработке ES6 плюс веб-пакет.
JS-файл во внешнем интерфейсе2000
строка кода, несколько4-5000
, не беда, если кода будет слишком много, ключ в том, что написанный код не имеет никаких спецификаций, начиная с файла
function funName () {}
function funName () {}
function funName () {}
...
// 或者是
$(function(){})
$(function(){})
$(function(){})
...
Это нормально, ключajax
Обработка обратного вызова для... 6-700 строк кода
Позже я посмотрел, с чем будет иметь дело такой длинный код, и результат был... Оказывается, цикл for занимает600Несколько строк кода.
Забудь об этом, я не хочу больше говорить, чем больше я говорю, тем больше я устаю.
Ведь бери деньги людей и спасай людей от бедствий. Есть еще работа, которую нужно сделать.
1. Планирование рефакторинга
Одна из самых больших проблем такого рода проектов заключается в том, что нет модульной разработки, и все функции написаны в одномjs
в файле. После разработки нескольких требований я резюмировал следующие неэффективные процессы.
существующие проблемы
- Без модульной разработки
js
файл тысячи строк кода. Уровень повторного использования кода низкий. Я слышал, что в некоторых компаниях есть десятки тысяч строк кода. Ищите их психологическую теневую зону -
PHP
Различный синтаксис шаблонов, сотрудники внешнего интерфейса сказали, что они не могут понять - Все файлы ресурсов добавляются вручную с номерами версий.
- Карту спрайтов нужно синтезировать вручную (это самое ямочное, да и эффективность особо низкая)
- Сжатие изображений также выполняется вручную.
- различные консоли
console.log
Вывод - ...
2. Доступ к модульной разработке
Учитывая, что текущий уровень интерфейса команды не очень высок, это легко использоватьvue
, затем используйтеvue-cli3
построить одинvue
проект, а затем выполните некоторые настройки для совместимости с существующими проектами.Эти конфигурации различаются в зависимости от проекта, поэтому я не буду вдаваться в подробности.
На самом деле использоватьvue-cli3
Построенный проект помог нам решить большинство проблем.
- модульная разработка,
vue
Встроенная поддержка модульной разработки - В файлах ресурсов вручную добавляются номера версий, используйте
webpack
Имя упакованного файла будет иметьhash
ценность. Таким образом, проблема номера версии также решена.
Итак, давайте решим этоvue-cli3
Проблемы, которые нам не помогли
3. Сжатие изображений
Нет соединенияwebpack
Перед сжатием изображений мы все использовали онлайн-сайт сжатия изображений, помещали изображение, а затем генерировали сжатое изображение для использования.
Если есть только одно или два изображения, можно сказать, что если изображений много, этот метод определенно не эффективен.
Чтобы не работать сверхурочно, она должна быть автоматизирована. Освободите руки.
- Установите необходимые библиотеки
npm install img-loader imagemin imagemin-jpegtran imagemin-pngquant --save-dev
- существует
vue.config.js
Средняя конфигурация
Затем посмотрите на эффект после упаковкиnpm run build
- размер несжатого изображения
622kb
- Размер сжатого изображения
351kb
В принципе разницы не видно.
Примечание: попробуйтеproduction
Среда сжимается, т.dev
Нет необходимости сжимать в среде, что влияет на скорость упаковки.
4. Спрайт
Нет соединенияwebpack
Прежде чем автоматически синтезировать спрайты, мы все пользовались онлайн-сайтом по синтезу спрайтов, закидывали туда кучу маленьких картинок, а потом сами измеряли.background-position
чтобы расположить фоновое изображение. Когда несколько изображений имеют разный размер.background-position
Расчет более хлопотный.
4.1 Автоматический синтез спрайтов
- Установить зависимости
npm install postcss-sprites --save-dev
- существует
postcss.config.js
Добавить конфигурацию
Затем в коде вы можете напрямую ссылаться на изображение
4.1 Группировка спрайтов
Если ссылаться на много маленьких изображений, результирующий спрайт в конечном итоге будет большим. В это время вам нужно сгруппировать спрайты. Спрайты одного модуля объединены в один. так же
- Исправлять
postcss.config.js
конфигурация, добавитьgroupBy
Атрибуты
Если вам нужно сгруппировать, просто создайте новый каталог в assets/sprites, картинки в этом каталоге будут объединены в одно изображение спрайта.
5. Используйте vw,vh адаптивный
Предыдущие проекты использовалиpx
в пикселях, а размер черновика дизайна1920x938
.
существует1920*1080
Это нормально видеть его на экране продукта, но у некоторых клиентов есть ноутбук, и он слишком велик, чтобы использовать ноутбук для просмотра. Никакой адаптации не делается.
Если вы хотите взять один за другимpx
Превратиться вrem
илиvw/vh
Если да, то нагрузка огромная.
Есть ли инструмент для прямого преобразования текущегоpx
Преобразовать напрямую вvw/vh
Шерстяная ткань?
Наверняка есть!postcss-px-to-viewport
- Установить зависимости
npm i postcss-px-to-viewport --save-dev
- Исправлять
postcss.config.js
конфигурация файла
Через F12 можно узнать, что всеpx
единицы были преобразованы вvw
6. production
Окружение автоматически удаляетсяconsole.log
Помните, что есть требование удалить все элементы в проектеconsole.log
Код, я тогда запутался, там столько страниц.
использоватьvscode
Глобальный поиск, нашел десятки страниц с этим утверждением.
Если удалять все вручную, то это долго и неэффективно. Так что я думал удалить его через плагин
- Установите необходимые библиотеки
npm install babel-plugin-transform-remove-console --save-dev
- Исправлять
babel.config.js
настроить
существуетnpm run build
автоматически удаляется, когдаconsole.log
7. Другие оптимизации
Если у вас есть лучшие практические методы, добро пожаловать в область комментариев за советом! !
адрес проектаvue-adminприветственная звезда
Добро пожаловать, чтобы следовать
Добро пожаловать в общедоступный номер»разработка кода», делясь последней технической информацией каждый день