Heim > WeChat-Applet > Mini-Programmentwicklung > Zusammenfassung der WeChat Mini-Programmentwicklungstechnologie

Zusammenfassung der WeChat Mini-Programmentwicklungstechnologie

阿神
Freigeben: 2017-01-17 11:07:06
Original
5745 Leute haben es durchsucht

Einführung

Das Miniprogramm wurde am ersten Tag des Starts des WeChat-Miniprogramms offiziell veröffentlicht und überwältigte den Freundeskreis der Weibo-Medien. In diesem Artikel geht es hauptsächlich um die technische Zusammenfassung der Entwicklung des Mobike Mini-Programms und darum, wie man innerhalb eines Entwicklungszyklus Schritt für Schritt vom Lernen zum Fortgeschrittenen gelangt.

Umdenken

1. WeChat-Miniprogramme haben keine gemeinsamen HTML-Tags . Es handelt sich um benutzerdefinierte WeChat-Komponenten, die React ähneln, z. B. Ansicht, Text, Karte usw.

2 Es gibt keine Fenstervariable, aber WeChat stellt den globalen Methodensatz wx bereit

3. Es gibt keinen Tag-Link, Iframes können nicht verschachtelt werden

Ereignisbindung und bedingtes Rendering ähneln Angular, alle in WXML geschrieben

5. Die Datenbindung verwendet die Moustache-Syntax mit doppelten Klammern

6 .Das DOM kann nicht bedient werden. Ändern Sie die Ansichtsanzeige durch Ändern der Seitendaten (ähnlich dem Status von React).

Wenn Sie also mit allen oben genannten Front-End-Technologie-Stacks vertraut sind, sind Sie hier genau richtig wird sich bei der Entwicklung von WeChat-Applets wohlfühlen.

Lebenszyklus

Sie können verstehen, dass der Mini Das Programm lautet: Für eine einseitige H5-Webseite werden alle Elemente einmal geladen, was zum Konzept des Lebenszyklus führt:

Zusammenfassung der WeChat Mini-Programmentwicklungstechnologie

1 Zum ersten Mal öffnen, initialisieren Miniprogramm

2. Nach der Initialisierung des Miniprogramms wird das onShow-Ereignis ausgelöst

3. Das Miniprogramm wird in den Hintergrund geschaltet (Bildschirm aus, APP wechseln usw.). onHide wird ausgelöst

4. Das Applet wechselt vom Hintergrund in den Vordergrund und löst erneut onShow

aus. 5. Das Applet macht einen Fehler und löst onError aus

Jede Seite wird ebenfalls ausgelöst hat seinen eigenen Lebenszyklus:

Zusammenfassung der WeChat Mini-Programmentwicklungstechnologie

Hinweis: In WeChat Version 6.5.3 können einige Android-Geräte das onLoad-Ereignis nicht auslösen, und Sie können stattdessen onReady verwenden.

Event Broadcasting

Für das WeChat-Applet „Einzelseitenstruktur“ können Sie Event Broadcasting verwenden ( Unified Event Center) zum Registrieren und Auslösen benutzerdefinierter Ereignisse, da die Ereignisverwaltung in der späteren Phase immer chaotischer wird und eine seitenübergreifende Übertragung von Ereignissen erforderlich ist. Sie können sich auf die Übertragung beziehen. js. In Mobike gibt es zum Beispiel diese Szene:

Nach dem erfolgreichen Scannen des QR-Codes wird auf der Entsperrseite A angezeigt, dass die Entsperrung erfolgreich war. Sie müssen zur Fahrseite B springen und den Fahrstatus des Benutzers überprüfen .

Ohne ein einheitliches Incident Management Center ist es für Sie fast unmöglich, einen solchen Prozess abzuschließen. Natürlich können Sie Hack verwenden, um das Problem zu lösen. Da das Springen zu Seite B das onShow-Ereignis von B auslöst, können Sie in onShow Geschäftslogik schreiben:

// Page A// 开锁成功后,跳转到Page Bwx.redirectTo({
  url: "/pages/riding/index"})
Nach dem Login kopieren
// Page BPage({
  onShow() {    // 检查骑行状态
  }
}
})
Nach dem Login kopieren

Aber es ist sinnvoller, Event-Broadcasting zu verwenden, um damit umzugehen:

const broadcast = require("libs/broadcast")

// 先注册事件
broadcast.on("check_ride_state", () => {
  // 检查骑行状态
})
Nach dem Login kopieren
const broadcast = require("libs/broadcast")
// Page A
// 开锁成功后,触发事件,再跳转到Page Bbroadcast.fire("check_ride_state")
wx.redirectTo({
  url: "/pages/riding/index"})
Nach dem Login kopieren

Datenzentrum

Die app.js im Stammverzeichnis sind sehr nützlich, die app.js im Stammverzeichnis sind sehr nützlich, Die App im Stammverzeichnis .js ist nützlich.
Da die darin registrierten Variablen oder Methoden von allen Seiten abgerufen werden können, kann es auch zur Lösung des oben erwähnten Problems der seitenübergreifenden Ereignisauslösung verwendet werden. Und globalData kann für den Zugriff auf alle Seiten registriert werden. SystemInfo kann beispielsweise direkt in globalData registriert werden, sodass Sie es nicht auf jeder Seite abrufen müssen:

// app.jsconst systemInfo = wx.getSystemInfoSync()
App({
  globalData: {
    systemInfo
  }
})
Nach dem Login kopieren

Holen Sie es sich auf der Seite :

// Page A

const {
  systemInfo
} = getApp().globalData
Nach dem Login kopieren

Leistungsoptimierung

Miniprogramme laufen auf der WeChat-Plattform und können den laufenden Speicher mit vielen Miniprogrammen teilen. Wie Sie sich vorstellen können, kann die Leistung eines einzelnen Miniprogramms auf einen Engpass stoßen und abstürzen oder von WeChat aktiv zerstört werden!

Zum Beispiel gibt es diese Szene in Mobike:

Auf der Startseite wird eine Karte angezeigt, um ein Fahrrad zu finden. Nach erfolgreichem Scannen des QR-Codes wird zur Fahrradkarte gesprungen.

Einfache Logik, wechseln Sie einfach zwischen zwei Seiten und zwei Kartenkomponenten. Im tatsächlichen Testszenario ist iOS tatsächlich wie erwartet und alles normal. Unter Android ist es jedoch sehr wahrscheinlich, dass das Miniprogramm abstürzt. Nach erfolgreichem Scannen des Codes wird das Miniprogramm direkt beendet.

Die Lösung besteht darin, nur eine Kartenkomponente im gesamten Applet beizubehalten und die verschiedenen Darstellungen der Karte über verschiedene Zustände zu ändern:

index.wxml

    <map id="map" controls="{{controls}}" style="{{style}}"></map>
Nach dem Login kopieren

index/index.js

const indexStyle = "width: 750rpx; height: 1260rpx"const rideStyle = "width: 750rpx; height: 960rpx"Page({
  data: {
    style: indexStyle
  },
  onUnlock() {    this.setData({
      style: rideStyle
    })
  }
}
})
Nach dem Login kopieren

Dadurch wird das Absturzproblem einiger Android-Geräte-Applets erfolgreich gelöst.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage