Introduction au développement du mini programme WeChat

PHPz
Libérer: 2017-04-02 15:05:03
original
2048 Les gens l'ont consulté

1. Qu'est-ce que le programme WeChat Mini :

Pour en revenir au sujet, quelle est l'essence du programme WeChat Mini ? Personnellement, je comprends que l'essence des mini-programmes WeChat est toujours un ensemble de frameworks frontaux. Sur la base de la page h5 tierce d'origine, l'équipe WeChat ne peut utiliser h5 que pour implémenter des fonctions qui peuvent être implémentées nativement dans WeChat, telles que. comme le téléchargement de photos, etc. Ensuite nous adoptons la partie ouverte de l'API de jsbridge pour faciliter la tâche des développeurs. Cependant, en tant que fabricant majeur, il n'ouvrira certainement pas seulement une partie de l'API jsbridge. Soit dit en passant, WeChat a implémenté son propre framework mvvm comme vue et React, qui est l'applet WeChat actuelle. Le document officiel décrit ceci : Le framework fournit son propre langage de description de couche de vue WXML et WXSS, ainsi qu'un cadre de couche logique basé sur JavaScript, et fournit des systèmes de transmission de données et d'événements entre la couche de vue et la logique. couche, permettant aux développeurs de se concentrer facilement sur les données et la logique.

Essentiellement, il s'agit toujours d'un framework front-end. Le code sera finalement empaqueté dans un JavaScript et exécuté au démarrage du mini-programme jusqu'à ce que le mini-programme soit détruit. La syntaxe du modèle est similaire à celle de Vue et proche des balises personnalisées natives. La liaison de données et le rendu ont une syntaxe similaire à vue, mais ils commencent par wx : (vue utilise v : comme identifiant). Le système d'événements définit son propre système d'événements comme React.

2. Environnement d'exploitation WeChat :

L'applet WeChat fonctionne sur trois terminaux : iOS, Android et les outils de développement pour le débogage

Sur iOS, le code javascript du le mini programme est exécuté en JavaScriptCore

Sur Android, le code javascript du mini programme est analysé via le noyau X5

Sur l'outil de développement, le mini programme Le javascript le code est exécuté dans nwjs (noyau chrome)

La logique de script de la page est exécutée dans JsCore. JsCore est un environnement sans objets window, donc les objets BOM tels que window ne peuvent pas être utilisés dans les scripts. Par conséquent, les bibliothèques telles que jquery et zepto qui obtiennent des objets DOM via une fenêtre ou un document ne peuvent pas être utilisées.

3. Structure du répertoire :

L'applet contient une application qui décrit le programme global et plusieurs pages qui décrivent leurs pages respectives.

La partie principale d'un petit programme est constituée de trois fichiers, qui doivent être placés dans le répertoire racine du projet, comme suit :

partie logique app.js , c'est-à-dire des variables ou méthodes globales

configuration publique app.json, y compris la configuration de la page, etc., les paramètres des onglets supérieur et inférieur, la couleur d'arrière-plan, etc.

La feuille de style publique app.wxss peut être remplacée par des styles de page spécifiques

code app.js (code extrait de la démo officielle de WeChat) et les commentaires sont les suivants :

//app.js
// 微信小程序就是调用微信开放jsbridge,来完成微信h开发中某些原本比较难的功能的特定的微信前端框架
/**
* app 即小程序的生命周期管理。
* */
App({
// 初始化
onLaunch: function () {
 //调用API从本地缓存中获取数据
 var logs = wx.getStorageSync('logs') || []
 logs.unshift(Date.now())
 wx.setStorageSync('logs', logs)
},
// 全局方法或者变量,可在不同page中使用
getUserInfo:function(cb){
 var that = this
 if(this.globalData.userInfo){
 typeof cb == "function" && cb(this.globalData.userInfo)
 }else{
 //调用登录接口
 wx.login({
  success: function () {
  wx.getUserInfo({
   success: function (res) {
   that.globalData.userInfo = res.userInfo
   typeof cb == "function" && cb(that.globalData.userInfo)
   }
  })
  }
 })
 }
},
globalData:{
 userInfo:null
}
})
Copier après la connexion
{
"pages":[
 "pages/index/index",
 "pages/logs/logs",
 "pages/swiper/swiper",
 "pages/input/input",
 "pages/form/form"
],
"window":{
 "navigationBarBackgroundColor": "#ffffff",
 "navigationBarTextStyle": "black",
 "navigationBarTitleText": "微信小程序",
 "backgroundColor": "#eeeeee",
 "backgroundTextStyle": "light"
},
"tabBar":{
 "borderStyle": "white",
 "list": [{
 "pagePath": "pages/index/index",
 "iconPath":"image/icon_API.png",
 "selectedIconPath":"image/icon_API_HL.png",
 "text": "首页"
  },{
 "pagePath": "pages/form/form",
 "iconPath":"image/plus.png",
 "selectedIconPath":"image/green_tri.png",
 "text": "更多"
 }, {
 "pagePath": "pages/swiper/swiper",
 "iconPath":"image/icon_COM.png",
 "selectedIconPath":"image/icon_COM_HL.png",
 "text": "其他"
 }
 ]
}
}
Copier après la connexion

Spécifique les pages incluent généralement les fichiers suivants (similaires aux fichiers globaux, mais uniquement pour les fonctions de cette page) :

.js La logique de la page n'est pas différente de js

.wxml La page la structure correspond au html, mais beaucoup de balises personnalisées sont appliquées

La feuille de style de page .wxss correspond au fichier css, la priorité est supérieure à appapp.wxss, la méthode d'écriture du css est pas entièrement pris en charge

La configuration de la page .json spécifie le titre et d'autres éléments d'une page spécifique

Afin de permettre aux développeurs de réduire les éléments de configuration, il est stipulé que les quatre fichiers décrivant la page doivent ont le même chemin et le même nom de fichier.

En d'autres termes, nous n'avons pas besoin de spécifier le fichier js ou wxss correspondant à une certaine page, il nous suffit de conserver le chemin et le nom du fichier identiques.

4. Langage du modèle et système d'événements

1) : La syntaxe du modèle est similaire à vue, proche des balises personnalisées natives. La liaison et le rendu des données sont similaires à la syntaxe de vue, mais cela commence par wx : (vue utilise v : comme identifiant) ​​

/**
* 类似vue的条件渲染语法,熟悉vue的话应该不会陌生
**/
<view wx:if="{{condition}}">
</view>
Copier après la connexion

2) : Système d'événements

Le système d'événements est similaire à React : définit son propre système d'événements. Contient une série de types d'événements courants :

touchstart L'action tactile du doigt commence

touchmove Le doigt bouge après l'avoir touché

touchcancel L'action tactile du doigt est interrompue, comme une entrée rappel d'appel, fenêtre pop-up

touchend L'action tactile du doigt se termine

appuyez sur Quitter immédiatement après que le doigt touche

appuyez longuement Après que le doigt touche, quittez après plus de 350 ms

Méthode de liaison : liaison d'événement La méthode d'écriture est la même que l'attribut du composant, sous forme de clé+valeur :

commence par bind ou catch, puis suit le type d'événement , comme bindtap catchtouchstart,

value est une chaîne et doit définir la fonction du même nom dans la page correspondante. Sinon, une erreur sera signalée lors du déclenchement de l'événement.

La liaison d'événement bind n'empêchera pas les événements bouillonnants de bouillonner vers le haut, et la liaison d'événement catch peut empêcher les événements bouillonnants de bouillonner vers le haut. Par exemple :

/**
*bind/catch +事件类型,两种事件绑定方式
*/
<view id="outter" bindtap="handleTap1">
 outer view
 <view id="middle" catchtap="handleTap2">
 middle view
 <view id="inner" bindtap="handleTap3">
  inner view
 </view>
 </view>
</view>
Copier après la connexion

3) : Objet événement : y compris l'objet événement de base BaseEvent, l'objet événement personnalisé CustomEvent, l'objet événement tactile TouchEvent, etc.

5. Avantages et inconvénients :

1) : Avantages

1. Fournir un support correspondant de type jsbridge, rendant certaines fonctions plus pratiques

2. Il s'agit essentiellement du framework front-end de mvvm, simplifiant les opérations.


3. Fournit une bibliothèque de composants relativement mature, plus pratique à construire


4. Basé sur l'application WeChat, le coût de développement est réduit


5. Support

modularisation

2) : Inconvénients

1. Étant donné que le framework ne s'exécute pas dans le navigateur, les méthodes BOM liées à js ne peuvent pas être utilisées. Tels qu'un document, une fenêtre, etc. Cependant, vous pouvez récupérer l'objet DOM correspondant à l'événement en cours. Par rapport à React, il n'est toujours pas recommandé d'utiliser dom, jq, zepto et autres bibliothèques d'outils, qui sont également difficiles à utiliser

2. Il a sa propre syntaxe, qui nécessite du temps d'apprentissage, mais. la courbe d'apprentissage n'est pas abrupte

3. L'introduction directe de node_modules n'est actuellement pas prise en charge. Lorsque les développeurs ont besoin d'utiliser node_modules, il est recommandé de copier le code correspondant dans le répertoire du mini programme. sera plus contraignant et nécessite beaucoup de travail manuel

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal