uni-app (сборник изящных "разминирования")

внешний интерфейс uni-app

HTTP-запрос

вторичная инкапсуляция uni.request

междоменная проблема h5

В это время вы можете почувствовать, что все в порядке, молча откройте ТЕРМИНАЛ и быстро нажмите на клавиатуру,

npm run dev:mp-weixin

npm run dev:h5

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

На стороне h5 вроде нет проблем, и доступ к интерфейсу очень плавный.Взгляните на сторону апплета WeChat, и на странице много нулей. Откройте сеть и увидите, что поле явно возвращает null, почему оно становится нулевой строкой и отображается.

Решение выглядит следующим образом:

Оптимизация: сделать асинхронность более элегантной (имитировать формат асинхронного возврата узла [ошибка, разрешение])

Оптимизация: проблема с защитой от сотрясения (форма отправляется несколько раз, проверка правил поля формы, мониторинг прокрутки)

Когда вы не понимаете, что такое антишейк, нажмите на свой аватар «Наггетс» -> «Написать статью» -> начните писать свой блог, вы обнаружите эффект автоматического сохранения, откройте сеть и внимательно наблюдайте, вы найдет Если вы не вводите текст в течение 2-3 секунд в процессе написания блога, будет отправлен запрос updateDraft для сохранения вашего блога в черновике~~~ Вы чувствуете, что сразу что-то понимаете?

Код спускайся вниз — это блог старшей фронтенд-леди некоего Донга, краткий анализ волны


Имитация Vue-маршрутизатора (uni-simple-router)

Конкретный адрес плагина, который можно переместить к большому парню:Боюсь 1-solve.byte IMG.com/to S-talent-i-he 2…

Таким образом, маршрутизатор может работать так же элегантно, как vue, эксклюзивная защита маршрутизации на уровне страницы (beforeEnter), глобальная защита маршрутизации (beforeEach, afterEach), базовая передача, замена и т. д.


обновление страницы vuex ясно проблема

постоянство vuex: vuex-persistedstate плюс mp-storage (поддержка универсальных многотерминальных прокладок хранилища), вы также можете распечатать журнал vuex в среде разработки, vuex может принимать localStorage, sessionStorage, файлы cookie и т. д.

Мой выбор в проекте: localStorage.

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

Ниже мое решение.


Вход (бесплатный вход через встроенный браузер wechat, бесплатный вход через апплет wechat, вход с обычным кодом подтверждения)

Обычный вход с кодом подтверждения

Просто пройдите проверку JWT. Токен можно кэшировать локально.

Встроенный браузер WeChat без входа в систему

(Просто перейдите непосредственно в WeChat SDK, перенаправьте и измените код, чтобы получить ссылку openId. Teleport:Билеты.WeChat.QQ.com/wiki?Он = горячая вода...)

Бесплатный вход в апплет Wechat (аналог апплета Alipay, authCode)

uni.login, чтобы получить код. Когда вы входите в систему в первый раз, code+mobile+icode выбрасывается на серверную часть, и серверная часть сохраняет openId в библиотеке. При повторном входе код выбрасывается на серверную часть, и серверная часть сравнивает openId текущего пользователя с openId в таблице.


Оплата (оплата Alipay h5, оплата через апплет WeChat, оплата через встроенный браузер WeChat)

Советы: сложность оплаты находится на заднем конце. Просто съешьте дыню молча на переднем конце

Платеж Alipay h5

// Пример кода (базовая отправка формы)

const div = document.createElement("div");

div.innerHTML = res;

document.body.appendChild(div);

document.forms[0].submit();

Платежный апплет микроканала

uni.requestPayment() Можно проверить различные платежные поля WeChat (например, nonceStr, paySign и т. д.).

Встроенная оплата браузера WeChat

Перейдите в WeChat SDK, и вы сможете проверить подпись различных платежных полей WeChat (таких как nonceStr, paySign и т. д.) по ссылке телепорта:Боюсь, что есть. WeChat.QQ.com/wiki/doc/AP…)


Упаковка компонентов

Параметры передачи реквизита (проверка формата, проверка значения и т. д.), слот-слот (наиболее часто используется слот области). К пользовательским компонентам в проекте относятся: компонент платежной клавиатуры, компонент фильтра-фильтра (с адсорбцией сверху) и др.

Когда мы инкапсулировали эти компоненты, думали ли мы когда-нибудь, что объем требований, которые мы инкапсулируем сейчас, — это только проект, как мы можем удовлетворить 90% или более бизнес-требований, таких как antd и element. В это время вы можете перейти к блогу босса Али:nuggets.capable/post/684490…


прокатное проникновение

  1. Когда в модальном слое нет прокрутки, когда модальное отображается, можно напрямую отключить touchmove.
  2. Когда модальный слой имеет прокрутку, страница{ положение: фиксированное; верх:0; высота:100%; переполнение: скрыто; } Модальный слой использует вид прокрутки, который может решить проблему проникновения прокрутки.

Авторизация апплета WeChat отключена (авторизация местоположения карты ChooseLocation, авторизация шагов WeChat getRunData, личная информация WeChat getUserInfo)

Пример: когда вы входите в апплет в первый раз и кнопка вручную запускает getUserInfo, появляется всплывающая авторизация WeChat. Если вы нажмете «Отмена», авторизация будет отклонена (Советы: В случае, если апплет не будет удален вручную, после того, как пользователь откажется от авторизации, повторный вызов API разрешений, такого как getUserInfo, не вызовет всплывающее окно авторизации, а перейти непосредственно к обратному вызову ошибки getUserInfo), такое взаимодействие очень недружественно.

Решение: getSetting для получения авторизации пользователя, если авторизация пользователя закрыта, showModal направляет пользователя вручную открыть авторизацию WeChat. Если пользователь нажимает «ОК» в модальном окне, он напрямую вызывает openSetting (открывает интерфейс настроек и помогает пользователю включить авторизацию). Если пользователь нажмет «Отмена» в модальном окне, при следующем входе в апплет он перейдет к showModal из getSetting, чтобы предложить пользователю активировать авторизацию вручную.


отладка

Сторона h5: Плагин vconsole позволяет просматривать лог-лог в симуляции реальной машины, что удобно для своевременного поиска и решения проблем.

Небольшая программа: реальная отладка машин крупных производителей была очень совершенной. Апплет WeChat недавно обновил автоматизированное тестирование (версия узла), чтобы облегчить тестирование.


Финальная битва: выпустить апплет, выпустить h5

Выпуск h5: все еще выпуск jenkins, такой же, как и обычные веб-проекты vue и react.

Небольшой выпуск программы: Самопроверка => Обзор => Выпуск (возможно, придется пройти через NNN раз в середине... если проверка не удалась, сохраняйте спокойствие)