美文网首页
微信小程序中一些JS常识

微信小程序中一些JS常识

作者: 奇怪的她的他 | 来源:发表于2017-12-20 17:09 被阅读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下载链接。

    相关文章

      网友评论

          本文标题:微信小程序中一些JS常识

          本文链接:https://www.haomeiwen.com/subject/phtgwxtx.html