Maison Applet WeChat Développement WeChat Pouvez-vous utiliser vue pour écrire de petits programmes ?

Pouvez-vous utiliser vue pour écrire de petits programmes ?

Jun 12, 2020 am 10:23 AM

1. Autorisation de connexion

1. Mécanisme de connexion du mini programme


  • Connexion traditionnelle (méthode jwt à titre d'exemple)

    • L'utilisateur saisit le nom d'utilisateur et le mot de passe (le mot de passe doit être crypté via certains algorithmes) et accède à l'interface de connexion

    • Le backend vérifie le nom d'utilisateur et le mot de passe, crypte les informations de l'utilisateur dans une chaîne de jeton et les renvoie au frontend

    • Le frontend enregistre le stockage du jeton (localement), voici une question d'entretien : Quelle est la différence entre le stockage local, le stockage de session et le cookie ? Demandez-vous)

    • Chaque fois que le front-end envoie une requête, il envoie le token au back-end, c'est au backend de déterminer si le statut de connexion est légal (comment transmettre le token, s'il faut le mettre dans l'en-tête ou dans le corps et en discuter vous-même avec le backend)

    • Ensuite, le front-end jugera s'il faut exécuter quelque chose en fonction de la situation de retour. Opération

  • Autorisation de connexion au mini-programme. Le mini programme n'a pas de boîte de connexion, mais autorise uniquement l'utilisation des informations utilisateur. Comment se déroule le processus ? Les étapes simples sont les suivantes : Obtenir les informations utilisateur pour l'autorisation -----> Appeler l'interface wx.login------> Obtenir le code d'authentification d'identité unique renvoyé -----> vous transmettre le code avec les informations utilisateur Backend-- --->Le back-end est le même que ci-dessus

Il est à noter que le

  • code ne peut être utilisé qu'une seule fois. Et il expire dans cinq minutes. S'il expire, vous devez à nouveau wx.login()

2. Nous effectuons une autorisation de connexion

. 2-1 , Scénario de réflexion

Avant de charger le mini programme, déterminez si vous êtes connecté (c'est-à-dire si vous avez un jeton si vous n'êtes pas connecté). , accédez à l'interface de connexion (ou appelez directement pour obtenir les informations de l'utilisateur) Interface et interface de connexion


2-2 Détermination avant connexion

Avant de charger le mini programme, déterminez si vous devez vous connecter et effectuez le saut correspondant

Comment déterminer avant le chargement ------>Fonction de hook de cycle de vie

À ce moment-là, lorsque nous ouvrirons App.vue dans le projet, nous verrons le code suivant :

        onLaunch: function() {
            // 这时app初始化完成
            // 注意全局只触发一次!!!
			console.log('App Launch')
		},
		onShow: function() {
            // app从后台切入前台或者启动
            // 显然这是判断是否登陆过的好机会
			console.log('App Show')
		},
		onHide: function() {
            // app从前台进入后台
			console.log('App Hide')
		}
Copier après la connexion

Donc la méthode de jugement

 onShow: function() {
    //  查一下都获取了那些权限
    wx.getSetting({
      success(res) {
        //   看看有没有用户信息,如果不存在,证明没有登陆
        if (!res.authSetting["scope.userInfo"]) {
            // 关闭所有页面,打开到应用内的登录页面
          wx.reLaunch({
            url: "/pages/authorise/index"
          });
        }
      }
    });
  },
Copier après la connexion

L'API liée au saut entre les pages du mini programme

wx.reLaunch(); // 关闭所有页面,打开到应用内的某个页面
wx.switchTab(); // 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.navigateTo(); // 跳转到某个页面
wx.navigateBack(); // 返回到上个页面,需要跟navigateTo配合使用
Copier après la connexion

Veuillez vous référer à la documentation wx pour une utilisation spécifique. Si vous ne pouvez vraiment pas le supporter, regardez simplement la documentation uniapp. la même chose de toute façon.

Le package API d'Uniapp hérite de l'API du mini programme. Fondamentalement, l'API du mini programme est la même que wx devant lui. Il peut être utilisé même si le caractère est modifié en uni

.


2-3. Opération de connexion

Pas grand chose à dire, il suffit de regarder le code sur WeChat. L'API d'autorisation a été abandonnée. Désormais, vous ne pouvez effectuer que certaines opérations d'autorisation via l'attribut opentype du bouton. Le code suivant inclut la gestion du processus de connexion d'autorisation de démarrage secondaire après que l'utilisateur a refusé l'autorisation

<button open-type="getUserInfo"  @getuserinfo="mpGetUserInfo" size="mini" v-if="show">授权登录</button>
<button type="primary" size="mini" open-type="openSetting" @opensetting="reauthorize" v-else>重新授权</button>
Copier après la connexion
 // 获取到用户信息后,调用登录接口,如果被拒绝授权,就跳转到设置页面
    mpGetUserInfo(result) {
      const that = this;
      // 查看是否授权
      wx.getSetting({
        success(res) {
          if (res.authSetting["scope.userInfo"]) {
            // 已经授权,可以直接调用 getUserInfo 获取头像昵称
            wx.getUserInfo({
              success: function(res) {
                that.userInfo = res.userInfo;
                wx.login({
                  success: function(loginRes) {
                    that.userInfo.code = loginRes.code;
                    that.$http({
                        url: "登录接口地址",
                        data: that.userInfo,
                        method: "POST"
                      })
                      .then(res => {
                        // 登录失败,提示错误信息,重新打开授权页面
                        if (判断登录失败的条件) {
                          wx.redirectTo({
                            url: ""
                          });
                          // 登陆成功
                        } else {
                          // 保存登陆成功获取的token
                          wx.setStorageSync("token", res.data.userinfo.token);
                          // 保存返回的被处理过的用户信息
                          uni.setStorageSync("login", res.data.userinfo);
                          // 登陆成功 跳转到tab首页
                          wx.switchTab({
                            url: ""
                          });
                        }
                      });
                  }
                });
              }
            });
          } else {
            that.show = false;
          }
        }
      });
    },
    // 处理重新授权后的回调函数
    reauthorize(e) {
      if (e.detail.authSetting["scope.userInfo"]) {
        // 若二次授权成功,切换对话框的显示按钮
        this.show = true;
      }
    }
Copier après la connexion

C'est tout, c'est fait Quant à Qu'est-ce que c'est.$ http ? Veuillez lire le troisième article (je ne l'ai pas encore écrit, pourquoi ?) Après l'avoir lu, donnez-lui un coup de pouce

Continuons la lecture et laissons-moi d'abord me plaindre. Cela fait trois jours et je ne l'ai pas fait. Je ne l'ai pas encore reçu. Salaire, tellement ennuyeux, pêchons ensemble, les amis


Comme mentionné dans la dernière lettre


This.$http envoie une requête, qu'est-ce que c'est ?

1. Envoyer une requête dans le projet vue côté PC

Étapes stupides : (utilisez axios )

yarn add axios
// npm 也行啦
Copier après la connexion
// 在cli项目中 
// main.js中
import axios from &#39;axios&#39;
// 配置请求的根路径
// 这个baseURL如果配置了跨域代理,就把proxy里配的名字给它就成
axios.defaults.baseURL = &#39;/api&#39;
// 配置请求拦截器
axios.interceptors.request.use(config => {
 // 这里做各种预处理,加token啦,拦截权限访问啦随便
  return config
}, (error) => { return Promise.reject(error) })

axios.interceptors.response.use(config => {
  return config
})

// 挂载到vue上
Vue.prototype.$http = axios
Copier après la connexion

2. Demandes de mini programmes
1 Approche native :

wx.request({
  url: &#39;test.php&#39;, //仅为示例,并非真实的接口地址
  data: {
    x: &#39;&#39;,
    y: &#39;&#39;
  },
  header: {
    &#39;content-type&#39;: &#39;application/json&#39; // 默认值
  },
  success (res) {
    console.log(res.data)
  }
})
Copier après la connexion

xue Wei est un peu mal à l'aise car il est habitué aux axios et soutient les promesses. , nous allons donc le laisser Support promises

2. Encapsuler une petite fonction de requête qui prend en charge les promesses

1 Créez un nouveau fichier request.js et placez-le dans un dossier appelé utils (j'ai gagné. Je ne vous dis pas ce que signifie utils)

2. Exportez un objet fonction par défaut

3. La fonction renvoie une promesse, qui contient une résolution et un rejet si vous ne savez pas. qu'est-ce qu'une promesse, veuillez lire mes autres articles

export default () => {
    return new Promise((resolve,reject)=>{
        
    })
}
Copier après la connexion

4. Encapsulez l'API de WeChat (l'API d'uniapp fonctionnera également. S'il y a une exigence croisée, encapsulez simplement l'API de requête d'uni directement, ce qui est presque le même)

export default () => {
    return new Promise((resolve,reject)=>{
        wx.request({
        url: &#39;test.php&#39;, //仅为示例,并非真实的接口地址
        data: {
            x: &#39;&#39;,
            y: &#39;&#39;
        },
    header: {
        &#39;content-type&#39;: &#39;application/json&#39; // 默认值
    },
    success (res) {
        console.log(res.data)
        }
    })
    })
}
Copier après la connexion

5. Continuez à encapsuler, vous ne pouvez pas l'utiliser directement maintenant

// 把会改的参数抽出来,像URL啦,methods啦,data数据啦,通过形参的方式传递,把请求的成功或者失败的结果弄出去
export default (params) => {
    return new Promise((resolve,reject)=>{
        wx.request({
            ...params
            header: {
                &#39;content-type&#39;: &#39;application/json&#39; // 默认值
            },
            success (res) {
               resolve(res)   // 这里resolve出去的是res还是res.data看你们请求返回的数据
            }
            fail: (err) => {
              reject(err)
            },
        )
    })
}
Copier après la connexion

6. axios a une baseURL pour économiser des efforts, il faut aussi avoir

export default (params) => {
    const baseUrl = "写你自己的地址的公共部分"
    return new Promise((resolve, reject) => {
        wx.request({
            ...params,
            url: baseUrl + params.url,
            success: (res) => {
                resolve(res.data)
            },
            fail: (err) => {
                reject(err)
            }
        });

    })
}
Copier après la connexion

7. Traiter les en-têtes de requête

// 比如需要携带token请求的
// 比如需要设置一些字段类型 都在这里搞
export default (params) => {
    const baseUrl = "https://www.jianbingkonggu.com/"
    let head = {}
    if (判断需要加token请求的条件) {
        head["token"] = uni.getStorageSync(&#39;token&#39;);
    }
    head[&#39;Content-Type&#39;] = &#39;application/x-www-form-urlencoded&#39;
    return new Promise((resolve, reject) => {
        wx.request({
            ...params,
            url: baseUrl + params.url,
            header: head,
            success: (res) => {
                resolve(res.data)
            },
            fail: (err) => {
                reject(err)
            }
        });
    })
}
Copier après la connexion

Version complète

export default (params) => {
    const baseUrl = "https://www.jianbingkonggu.com/"
    let head = {}
    if (!params.url.includes("/MiniProgramLogin")) {
        head["token"] = uni.getStorageSync(&#39;token&#39;);
    }
    head[&#39;Content-Type&#39;] = &#39;application/x-www-form-urlencoded&#39;
    return new Promise((resolve, reject) => {
        // 为了让用户看起来更舒服
        // 弄一个加载中动画
        uni.showLoading({
            title: &#39;加载中&#39;
        })
        wx.request({
            ...params,
            url: baseUrl + params.url,
            header: head,
            success: (res) => {
                resolve(res.data)
            },
            fail: (err) => {
                reject(err)
            },
            complete: () => {
                // 请求完成
                // 隐藏加载中的提示框
                uni.hideLoading()
            }
        });

    })
}
Copier après la connexion

2 Comment l'utiliser dans le projet ?

En une phrase, c'est la même chose qu'axios

  • Introduction

  • 挂载

  • 使用

在main.js里

import Request from &#39;./utils/request&#39;
Vue.prototype.$http = Request
Copier après la connexion

然后就可以开开心心在vue单文件组件里this.$http(各种参数).then()的使用拉,流畅又爽

我们还需要啥技能?用vue写小程序

不要怀疑,山东人就是喜欢倒装句咋地
好像没啥了
直接

// 把之前的npm run dev:mp-weixin的黑窗口ctr+c退出哈先
// 然后执行
npm run build:mp-weixin
Copier après la connexion

关闭当先开发者工具里的项目,重新引入dist文件夹下面的build文件夹中的mp-weixin文件夹,这是我们打包好的文件,引入之后,自己测试一遍,没问题后点击开发者工具的右上角上传按钮,进行上传代码,然后登录微信小程序后台把代码提交审核就行啦。
以上,感谢大家,最后,关注一波我的公众号呗,刚开始做,虽然,里面还没放啥东西,求支持嘛。

作者:我是一个小哥哥

本文转载自:https://juejin.cn/user/131597127388024/posts

推荐教程:《微信小程序

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment référencer le fichier JS avec Vue.js Comment référencer le fichier JS avec Vue.js Apr 07, 2025 pm 11:27 PM

Il existe trois façons de se référer aux fichiers JS dans Vue.js: spécifiez directement le chemin à l'aide du & lt; script & gt; étiqueter;; importation dynamique à l'aide du crochet de cycle de vie monté (); et l'importation via la bibliothèque de gestion de l'État Vuex.

Comment utiliser Watch in Vue Comment utiliser Watch in Vue Apr 07, 2025 pm 11:36 PM

L'option Watch dans Vue.js permet aux développeurs d'écouter des modifications de données spécifiques. Lorsque les données changent, regardez déclenche une fonction de rappel pour effectuer des vues de mise à jour ou d'autres tâches. Ses options de configuration incluent immédiatement, qui spécifie s'il faut exécuter un rappel immédiatement, et profond, ce qui spécifie s'il faut écouter récursivement les modifications des objets ou des tableaux.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Que signifie la charge paresseuse? Que signifie la charge paresseuse? Apr 07, 2025 pm 11:54 PM

Dans vue.js, le chargement paresseux permet de charger dynamiquement les composants ou les ressources, en réduisant le temps de chargement des pages initiales et en améliorant les performances. La méthode de mise en œuvre spécifique comprend l'utilisation de & lt; keep-alive & gt; et & lt; composant est & gt; composants. Il convient de noter que le chargement paresseux peut provoquer des problèmes de FOUC (écran d'éclat) et ne doit être utilisé que pour les composants qui nécessitent un chargement paresseux pour éviter les frais généraux de performances inutiles.

Comment ajouter des fonctions aux boutons pour Vue Comment ajouter des fonctions aux boutons pour Vue Apr 08, 2025 am 08:51 AM

Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.

Vue réalise l'effet de défilement de chapiteau / texte Vue réalise l'effet de défilement de chapiteau / texte Apr 07, 2025 pm 10:51 PM

Implémentez les effets de défilement marquee / texte dans VUE, en utilisant des animations CSS ou des bibliothèques tierces. Cet article présente comment utiliser l'animation CSS: créer du texte de défilement et envelopper du texte avec & lt; div & gt;. Définissez les animations CSS et défini: caché, largeur et animation. Définissez les images clés, Set Transforment: Translatex () au début et à la fin de l'animation. Ajustez les propriétés d'animation telles que la durée, la vitesse de défilement et la direction.

Comment interroger la version de Vue Comment interroger la version de Vue Apr 07, 2025 pm 11:24 PM

Vous pouvez interroger la version Vue en utilisant Vue Devtools pour afficher l'onglet Vue dans la console du navigateur. Utilisez NPM pour exécuter la commande "NPM List -g Vue". Recherchez l'élément VUE dans l'objet "dépendances" du fichier package.json. Pour les projets Vue CLI, exécutez la commande "Vue --version". Vérifiez les informations de la version dans le & lt; script & gt; Tag dans le fichier html qui fait référence au fichier VUE.

Comment revenir à la page précédente par Vue Comment revenir à la page précédente par Vue Apr 07, 2025 pm 11:30 PM

Vue.js dispose de quatre méthodes pour revenir à la page précédente: $ router.go (-1) $ router.back () utilise & lt; router-link to = & quot; / & quot; Composant Window.History.back (), et la sélection de la méthode dépend de la scène.

See all articles