представлять
MpvueЭто интерфейсная среда для разработки небольших программ с использованием Vue.js. Фреймворк основан на ядре Vue.js, а среда выполнения и реализация компилятора Vue.js изменены таким образом, чтобы он мог работать в среде апплета, тем самым предоставляя весь набор возможностей разработки Vue.js для разработки апплета, и одновременно усложняя набор кода.Можно использовать в апплетах и в Интернете. Эта статья будетИТ-дом LiteПроцесс веб-преобразования апплета является подсказкой, которая кратко знакомит с основными этапами преобразования и некоторыми вопросами, требующими внимания.
Структура каталогов
Некоторые файлы, не связанные с конвертацией, опущены
├─build
├─config
├─src
│ ├─components
│ ├─pages
│ ├─store
│ ├─styles
│ ├─utils
│ │ ├─api.js
│ │ ├─index.js
│ │ ├─request.js
│ │ └─wx.js
│ ├─App.vue
│ └─main.js
├─package-lock.json
└─package.json
Шаги конверсии
0. Предварительная подготовка
- Рекомендуется использовать git для управления ветками
- Старайтесь избегать использования ненужных тегов, специфичных для апплета, таких как текст, изображение и т. д.#9137744
- Избегайте прямого использования объектов wx, используйте
import wx from 'wx'
Представлен таким образом, чтобы его можно было легко переписать в Интернете.#c3ef6e7
// src/utils/wx.js
export default wx
- использоватьflyioВ качестве библиотеки запросов настройте псевдоним, чтобы он указывал на flyio.
flyio/dist/npm/wx
- Создайте новую ветку веб-версии на основе исходной ветки
1. Измените конфигурацию упаковки
- Он может быть изменен на основе исходной конфигурации, в основном с использованием элементов конфигурации, связанных с входом, целью и загрузчиком.Здесь я напрямую генерирую новый проект через vue-cli, копирую папку сборки, конфигурации и файлы конфигурации eslint, babel и т. д., чтобы заменить исходный Если есть конфигурация, используйте package.json нового проекта и внесите соответствующие изменения.При создании нового проекта старайтесь, чтобы параметры соответствовали исходному проекту.#ece3a76
- Измените main.js, укажите элемент монтирования, если все пройдет успешно, выполните после этого шага
npm run dev
Он уже может работать, если есть ошибка, вы можете решить соответствующую ошибку
2. Настройте маршрутизацию
- Добавьте vue-router и настройте его соответствующим образом, рекомендуется использовать режим истории#ddf94bc
- Измените параметры маршрутизации, чтобы получить соответствующий код#b949197
- Используйте router-link для замены тега, чтобы избежать перезагрузки страницы#eb09297
3. Настройте интерфейс запроса
- Настройте псевдоним, чтобы указать flyio на
flyio/dist/npm/fly
- В апплете нет междоменной проблемы, но веб должен взаимодействовать с серверной частью, чтобы перенаправить запрос или решить эту проблему другими способами.#f963975
4. Преобразование компонентов апплета и API
- Нижняя панель навигации, собственная реализация макета#8d6d98b
.nav(v-if="$route.meta.nav")
a.nav-item(href="/pages/news/list")
img.nav-icon(v-if="$route.name === 'NewsList'", src="/static/assets/news-active.png")
img.nav-icon(v-else, src="/static/assets/news.png")
.nav-title(:class="{ active: $route.name === 'NewsList' }") 资讯
a.nav-item(href="/pages/quanzi/list")
img.nav-icon(v-if="$route.name === 'QuanziList'", src="/static/assets/quanzi-active.png")
img.nav-icon(v-else, src="/static/assets/quanzi.png")
.nav-title(:class="{ active: $route.name === 'QuanziList' }") 圈子
- компоненты расширенного текста, реализованные с использованием v-html#1945f3f
- компонент swiper, используйтеvue-swiper-componentвыполнить#f4a4e1a
- всплывающие и загрузочные интерфейсы, используйтеvue2-toastвыполнить#cb1d9d3
// src/utils/wx.js
import Vue from 'vue'
export default {
showNavigationBarLoading () {
Vue.prototype.$loading('加载中')
},
hideNavigationBarLoading () {
Vue.prototype.$loading.close()
},
showToast ({ title }) {
Vue.prototype.$toast.center(title)
}
}
- Потяните вниз, чтобы обновить, и потяните вверх, чтобы загрузить, используйтеvue-pull-toвыполнить#e23b810
#app
pull-to(
ref="scroller",
:top-load-method="refresh",
:bottom-load-method="loadmore",
:is-top-bounce="!!onPullDownRefresh",
:is-bottom-bounce="!!onReachBottom",
@scroll="saveScrollPosition")
keep-alive
router-view(ref="current")
import PullTo from 'vue-pull-to'
export default {
name: 'App',
mpType: 'app',
components: {
PullTo
},
data () {
return {
onPullDownRefresh: null,
onReachBottom: null
}
},
methods: {
async refresh (loaded) {
await this.onPullDownRefresh.call(this.$refs.current)
loaded()
},
async loadmore (loaded) {
await this.onReachBottom.call(this.$refs.current)
loaded()
},
saveScrollPosition (e) {
const { current } = this.$refs
current.scrollTop = e.srcElement.scrollTop
}
},
watch: {
$route () {
this.$nextTick(() => {
const { current } = this.$refs
if (!current) return
this.onPullDownRefresh = current.$options.onPullDownRefresh
this.onReachBottom = current.$options.onReachBottom
})
}
}
}
5.Webоптимизация
- использоватьminiresetСбросить стиль браузера по умолчанию Стиль некоторых тегов в апплете по умолчанию отличается от стиля браузера и требует обработки.#e98f5ba
- представлятьbabel-polyfill, для улучшения совместимости#c184166
поддерживать
После того, как первоначальное преобразование веб-версии завершено, вы можете снова переключиться на основную ветку.Последующие функции и исправления выполняются в основной ветке.После выпуска основной ветки переключитесь на веб-ветвь для операции слияния, что может вызвать небольшое количество конфликтов, но это также будет легче решить.Наконец, вы можете иметь дело с недавно введенными функциями апплета.В целом ремонтопригодность относительно хороша.
Суммировать
Весь процесс конвертации проходит относительно гладко.Основная часть завершается примерно за час.По сравнению с апплетом веб-окружение более открытое,поэтому большая часть api апплета может быть смоделирована различными способами.Ветвление также можно смело использовать различные функции на стороне браузера, но старайтесь не изменять исходный код стилей и скриптов напрямую, чего можно добиться с помощью примесей, тегов новых стилей и т. д., чтобы избежать конфликтов.
Перспектива
- Унифицированная библиотека пользовательского интерфейса на обоих концах, в настоящее время можно использовать только некоторые простые библиотеки классов css.
- Улучшенная поддержка маршрутизации. В идеале файл main.js каждой страницы может быть автоматически сгенерирован через файл конфигурации vue-router, а запись может быть настроена. При разработке файла .vue его можно использовать напрямую.
this.$route
this.$router
а такжеrouter-link
Выполняйте связанные операции, чтобы каждый раз не вносить ручные изменения
прикрепил
- Git-репозиторий
- ИТ-дом Lite:ithome-lite
- Тип:mpvue
- Шаблон проекта:mpvue-quickstart
- Оптимизация конфигурации:mpvue-entry
- Совместимость с маршрутизацией (используйте с осторожностью):mpvue-router-patch
- Инструменты упаковки (веб-упаковка уже поддерживается):mpvue-packager
- Demo
- Интернет-версия IT Home Lite:ithome.f-loat.xyz