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。导入文件 引用模版
4.组件模板和样式组件模板的写法和页面模板相同。
组件模板与组件数据结合后生成的节点树,将被插入到组件的引用位置上。在组件模板中可以提供一个节点,用于承载组件引用时提供的子节点。 这里是插入到组件solt的内容 注意,在模板中引用到的自定义组件及其对应的节点名需要在json文件中显示定义,否者会被当作一个无意义的节点。组件wxml的solt在组件的wxml中可以包含slot节点,用于承载组件使用者提供的wxml解构。默认情况下,一个组件的wxml中只能有一个solt。要启动solt必须在json文件中开启{ “component”: true}。
5.join的用法join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。join()方法用于把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔。var arry=[aa,bb,cc];document.write(arry.join());输出aa,bb,cc6.concat用于连接两个或多个数组。
6.ES6中Set的用法//Set结构的实例有四个遍历方法,可以用于遍历成员。
keys():返回键名的遍历器 values():返回键值的遍历器 entries():返回键值对的遍历器 forEach():使用回调函数遍历每个成员. 由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致. let set =new Set([‘red’,‘green’,‘blue’]); for (let item of set.keys()){ console.log("=",item); }// (2).forEach()// Set结构的实例与数组一样,也拥有forEach方法,用于对每个成员执行某种操作,没有返回值. set=new Set([1,4,9]); set.forEach((value,key)=>{ console.log(key); }) 8.Map结构的实例有以下属性和操作方法。(1)size属性返回Map结构的成员总数。 const mapo=new Map(); mapo.set(“aa”,true); mapo.set(“bb”,false); mapo.size;//2(2)set(key,value) //set方法设置键名key对应的键值为value,然后返回整个Map结构.如果key已经有值,则键值会被更新,否则就新成该键. const mp=new Map(); mp.set(‘edition’,6)//键是字符串 mp.set(26,‘standard’)//键是数值 mp.set(undefined,‘nah’)//键是undefined(3)get(key) //get方法读取key对应的键值,如果找不到key,返回undefined const m=new Map(); const hello=function(){ console.log(‘hello’) } m.set(hello,‘Hello ES6’)//键是函数 m.get(hello)(4)has(key) //has方法返回一个布尔值,表示某个键是否在当前Map对象之中 const m=new Map(); m.set(‘edition’,6); m.set(262,‘standard’); m.set(undefined,‘nah’); m.has(‘edition’)//true m.has(‘years’)//false m.has(262)//true m.has(undefined)//true(5)delete(key) //delete方法删除某个键,返回true。如果删除失败,返回false。 const m1=new Map(); m1.set(undefined,‘nah’); m1.has(undefined); console.log("=",m1.has(undefined)); console.log(“delete”,m1.delete(undefined));(6)clear()方法清除所有成员,没有返回值。