微信小程序遇到的问题

1.登录的流程:

(1)wx.login获取临时登录凭证code.

(2)wx.getSetting(OBJECT),wx.getUserInfo()获取用户的授权信息,并回传到开发者服务器code,encryptedData ,iv。

(3)拒绝授权之后调用wx.openSetting,获取用户信息,向后台传信息。

wx.getSetting({ success: (res) => {

if (res.authSetting['scope.record'] || res.authSetting['scope.userInfo']) {//微信授权authSetting结果

// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框

                  wx.getUserInfo({

                    success: res => {

                      /**

                      * 向后台发送 res 发送给后台解码出 unionId

                      */

                      let encryptedData = res.encryptedData;

                      let iv = res.iv;

                        }

                })

}})

2.ES6的promise用法

(1).微信小程序引入es6promise.js;

(2).网络层promise封装

export default class NetUtil{//static静态方法

    static  post(url,data){

        return NetUtil.requestJson(url,data,"post");

    }

    static get(url,data){

        return NetUtil.requestJson(url,data,"get");

    }

    static  requestJson(url,data,method){

        data=data||{};

        return new Promise(function(resolve,reject){

            wx.request({

                "method":method,

                 "url":url,

                  "data":data,

                   "header":{

                         'Content-Type': 'application/json'

                    },

                    success:function(res){

                        resolve(res);

                    },

                    fail:function(err){

                        reject(err);

                    }

            })

        }

    }

}

Promise.all()方法用于将多个promise实例,包装成一个新的Promise实例。

const p=Promise.all([p1,p2,p3]);

Promise.all方法接受一个数组作为参数,p1,p2,p3都是Promise实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为Promise实例,再进一步处理。(Promise.all方法的参数可以不是数组,但必须具有Iterator 接口,且返回的每个成员都是Promise实例。)

p的状态由p1,p2,p3决定,分成两种

(3).require 用来加载代码,而 exports 和 module.exports 则用来导出代码。但很多新手可能会迷惑于 exports 和 module.exports 的区别。

module.exports初始值为一个空对象{};

exports是指向module.exports的引用。

require()返回的是module.exports而不是exports。

module.exports:模块化。

(4).let app=getApp();微信提供了全局的getApp()函数,可以获取到小程序实例或小程序注册实例中的方法。

(5).使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。

3.微信小程序富文本的用法:

(1).将下载下来的插件文件夹复制到我们的项目根目录下(其中emojis文件可根据自己所需决定要或者不要,其他的文件必须要)

(2).在需要用到该插件的view(.js)引入

var WxParse= require('../../../wxParse/wxParse.js');

(3).在需要用到的wxss中引入WxParse.wxss,也可以在app.wxss中引入(没有引入WxParse.wxss:span样式显示不正确)。

@import"../../../wxParse/wxParse.wxss";

(4).进行数据绑定

var article="我是HTML代码"

/** 

WxParse.wxParse(bindName,type,data,target,imagePadding)

1.bindName绑定的数据名(必填)

2.type可以为html或md(必填)

3.data为传入的具体数据(必填)

4.target为Page对象,一般为this(必填)

5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选).

*/ 

var that = this; 

WxParse.wxParse('article', 'html', article,that, 5);

(5).在内容页(.wxml文件)中引用该模版文件,其中data中article为bindName。

导入文件

引用模版