微信小程序中一些JS常识

2017-12-20  本文已影响1262人  奇怪的她的他

1.小程序中不支持HTTP请求,配置后台服务器域名只支持https(假设配置后,运行程序还是报域名配置问题,重启开发工具即可),图片地址可以用http。

2.支持请求网页,但是必须在微信公众平台小程序后台配置业务域名。

3.小程序中推送通知又叫模板消息,以“服务通知”的形式推送给用户,一旦微信被后台杀死,就没有推送。同时模板消息只能在两种情况下,才能生成,第一,支付行为,第二,表单提交行为——表单提交:一般可以突破微信官方给定的模板消息上限数量,一般是用一个表单控件不满全屏,然后在表单里添加其他控件,这样用户每进行一次用户交互就能生成一个formId,公司后台就能存储该用户多个formId,可用于多次推送。一个formid只能用一次。

4.小程序中全局变量的存与取。两种方式,一种是存储在缓存中,类似于iOS中的UD,只有小程序被用户删除才会清空,另一种是globalData,这是存储在程序中,只要微信被杀死,globalData的数据就会被清空。下面分别用代码展示:

第一种StorageSync

wx.setStorageSync("key", value);//存
var value = wx.getStorageSync("key");//取

第二种globalData,先在项目app.js文件中找到globalData:{}函数中添加一个你要存的字段

globalData: {
    name:"",//属性名自己定
  }
  
  //然后在需要存的地方:getApp().globalData.name = "";
  //取的时候用:var name = getApp().globalData.name;

5.相信很多人在开发到一定时候,都会想封装一些类,接下来给大家说说封装类的创建及外部调用。我们就先以网络请求封装为例。

首先你需要新建一个netRequest.js文件,然后用js的方法创建一个函数:

/**
   * url是请求连接,当然要实现网络请求,请先在服务器后台配置域名
   * para是传给服务器的json内容
   * style是请求类型GET或者POST
   * callback是回调函数,可以传值给调用者
   */
function requestData(url,para,style,callback){
      var contentType;
      if(style == "GET"){
        contentType = 'application/json';
      }else{
        //post请求必须要设置header类型为以下类型,get请求不用
        contentType = 'application/x-www-form-urlencoded';
      }
      wx.request({
        url: url,
        data: para,
        method: style,
        header: {
          "content-type": contentType,
        },
        success: function(res) {
            //返回请求结果给调用者
           callback(res);
        }
      })
}

其次是在当前js文件中添加以下代码:

//作用是暴露接口给外部类
module.exports = {
  requestData : requestData
}

然后在其他类调用时,先在外部类的最顶部添加一行代码,引用类对象

var netRequest = require("相对路径");

最后在外部类中调用封装类的方法。

//url和para都需要自己传入
netRequest.requestData(url, para, "GET", function (data) {
        //打印请求结果
        console.log(data);
})

6.延时函数:

setTimeout(function(){
        //这儿写延时执行的内容
      },5000);//这儿是延时的时间,单位是毫秒

7.循环执行某个函数:

首先在js文件头部定义一个对象var interval;
然后在需要循环执行的地方初始化

interval = setInterval(function () {
  that.getCarGps();
  //循环执行代码
}, 3000) //循环时间 这里是1秒

//停止定时器的方法
clearInterval(interval);

注意:当循环函数里有延时函数时,记得先停掉循环函数再使用延时函数,不然会报错;

8.说说js中this和that的妙用。

对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏繁杂。而我的理解是:首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象。

在javascript语言中,this代表着当前的对象,它在程序中随着执行的上下文随时会变化。微信小程序很多API中回调函数对象已经发生了变化。所以已经不是原来的页面对象了。自然就没有了原来页面的data属性,也没有了this.data的说法。

可能说回调函数大家不是很理解,比如很多API都有一个success: function(res) {},大括号里面就是回调函数内部。解决的办法就是在回调函数外部复制一份当前的对象。

var that=this;//把this对象复制到临时变量that

这个时候就能用

that.setData({
      //对Page里面的data做一些更改
    })

9.小程序中不支持跳转至APP或者APPStore或者安卓市场。但假如要引导用户下载APP,可以用安卓端网页实现APP的下载,iOS端只能引导用户去safiri中打开APPStore下载链接。

上一篇下一篇

猜你喜欢

热点阅读