2020年4月

安装virtualenv

首先安装python的运行环境,安装完毕后,查看是否安装了pip,输入pip -V即可查看pip的版本。
然后我们可以使用pip install virtualenv安装virtualenv。
注意:

  • 如果你的pip的版本太低。可能会安装失败,我们可以使用python -m pip install --upgrade pip更新pip,如果报错的话,我们就输入命令:python -m pip install -U pip来更新。
  • 使用virtualenv --version可以查看你的pip的版本。

创建虚拟环境

我们可以通过virtualenv venv命令 创建名为 venv 的虚拟环境。
注意:

  • 如果创建失败显示failed to create process的错误,那么就卸载了virtualenv,卸载命名pip uninstall virtualenv,重新安装之前那,检查自己的环境变量是不是有问题,是不是有其他的python环境的变量。检查完成后,重新安装virtualenv即可。

    激活与退出

  • 激活命令:venv\Scripts\activate
  • 退出命令:deactivate

微信小程序swiper组件中当数据少于display-multiple-items设置的数,就会出现这个不显示这个问题在社区看到在2019年的8月份已经有人提出了,官方说的是:目前可以通过追加空的swiper-item解决,我们也在想办法优化这块能力。这显然不是我们想要的结果,空的swiper-item,就会显示空白。
首先我们来分析下问题:当swiper组件中当数据少于display-multiple-items设置的数量的时候才会出现这样的问题,我们假设我们要显示3个。

display-multiple-items设置的数swiper组件中当数据显示个数是否正常
343
333
222
111
000

通过这个表格我们就可以很清楚的发现,当swiper组件中当数据数大于或则等于display-multiple-items设置的数的时候,就会显示正常。那么我们就可以动态的设计display-multiple-items的数量,如果swiper组件中当数据数大于或则等于display-multiple-items设置的数的时候,我们就显示我们要限定的数,否则就显示display-multiple-items的数量。这样我们就可以完美的绕开这个问题了。同时宽度(或者高度)我们也采用这种的方式来进行动态的设置就可以了。
示例代码:

<swiper style="width: 90%; height: {{datas.length>2?'330':datas.length*110}}rpx; vertical="true" autoplay="true" circular="true" interval="2000" display-multiple-items="{{datas.length>2?3:datas.length}}">
    <block wx:for="{{datas}}">
        <swiper-item>
                <image src="{{item.avatar}}" style="width: 70rpx; height: 70rpx;min-width: 70rpx;min-height: 70rpx;" />
        </swiper-item>
    </block>
</swiper>

微信小程序中swiper组件禁止用户上下滑动这个实现起来比较的简单,我们通过手册会发现,该组件的swiper-item里面上下滑动会执行函数catchtouchmove,所以我们可以通过控制这个函数来实现

< swiper-item catchtouchmove=“stopTouchMove” >< swiper-item >
stopTouchMove: function() {
    return false;
}

这种方法可以阻止手动滑动,但是带来的影响是:页面不能滑动了。这是由于在你上下滑动的时候,仍然会执行滑动的这个动作,但是触发的函数没有进行任何的操作,如果我们想让页面也滑动,我们采用下面的方法。

给这个区域一个模板压在上面,但是该组件本身就应用了定位,那么我们可以采用,前置方法:

<swiper class="swiper-disabled">
    ......               
</swiper>
.swiper-disabled {
    position: relative;
}

.swiper-disabled::after {
    position: absolute;
    content: '';
    top: 0;
    left: 0;
    width: 100%;
}

这样我们就解决了这个问题了。

解决Typecho迁移服务器出现"Database Server Error"错误,小编在迁移Typecho,出现了这样的问题,首先排查掉数据库账号密码等问题,如果你的连接地址,数据库用户名,数据库密码错误的话,那肯定是不行的,如果这些都没有问题,还是出现这样的问题,我来说下怎么解决。
Typecho的数据库配置是在网站的根目录下面的config.inc.php这个文件里面,我们的链接地址,数据库用户名,密码也是在这里修改。
出现Database Server Error这个错误有的时候是由于Typecho_Db这个写错了,只需要将Mysql换成Pdo_Mysql就可以了。
解决Typecho迁移服务器出现%22Database Server Error%22错误.png

微信小程序现在可以开通直播功能,只要符合资质的都可以开通直播。开通该功能后,我们只需要按照文档里面说明的方式开发就好了。
首先我们引入【直播组件】 live-player-plugin
分为两种方式引入,一种是在主包中引入,另一种是在分包中引入。因为直播组件不计入代码包体积,所以小编建议大家在主包引入,而且还有些功能只能在主包中使用,这个也是看大家的需求。
引入方式,在app.json里面引入,json文件里面不能写注释,大家在引入的时候记得把注释删除掉:

  • 主包引入

    "plugins": {
          "live-player-plugin": {
              "version": "1.0.5", // 注意填写该直播组件最新版本号,微信开发者工具调试时可获取最新版本号(复制时请去掉注释)小编在开发的时候版本是1.0.5
              "provider": "wx2b03c6e691cd7370" // 必须填该直播组件appid,该示例值即为直播组件appid(复制时请去掉注释)
          }
      }
  • 分包引入

    "subpackages": [
          {
              "plugins": {
                  "live-player-plugin": {
                      "version": "1.0.5", // 注意该直播组件最新版本号,微信开发者工具调试时可获取最新版本号(复制时请去掉注释)
                      "provider": "wx2b03c6e691cd7370" // 必须填该直播组件appid,该示例值即为直播组件appid(复制时请去掉注释)
                  }
              }
          }
      ]

接下来我们就要进入直播间了,不需要我们写直播的界面,只需要跳转到直播组件就可以了。分享官方也给封装好了,只需要拿来使用就可以了,跳转方式也有两种,房间号在你创建完直播间的时候就有了。

  • 直接通过navigator进行跳转

    let roomId = [直播房间id] // 房间号
      let customParams = { path: 'pages/index/index', pid: 1 } // 开发者在直播间页面路径上携带自定义参数(如示例中的path和pid参数),后续可以在分享卡片链接和跳转至商详页时获取,详见【获取自定义参数】、【直播间到商详页面携带参数】章节
      this.setData({
          roomId,
          customParams: encodeURIComponent(JSON.stringify(customParams))
      })
      <navigator url="plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id={{roomId}}&custom_params={{customParams}}"></navigator>
      // 其中wx2b03c6e691cd7370是直播组件appid不能修改
  • js中跳转

    let roomId = [直播房间id] // 房间号
      let customParams = { path: 'pages/index/index', pid: 1 } // 开发者在直播间页面路径上携带自定义参数(如示例中的path和pid参数),后续可以在分享卡片链接和跳转至商详页时获取,详见【获取自定义参数】、【直播间到商详页面携带参数】章节
      wx.navigateTo({
          url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${encodeURIComponent(JSON.stringify(customParams))}`
      })
      // 其中wx2b03c6e691cd7370是直播组件appid不能修改

另外在说一下获取直播间列表的方法、

【获取直播房间列表】接口,仅供后台调用
接口规则:该接口仅供商家后台调用,调用限额 500 次/天,建议开发者自己做缓存(此接口与下面【获取回放视频】接口共用 500 次/天限制,请合理分配调用频次)。

请求URL: http://api.weixin.qq.com/wxa/business/getliveinfo?access_token=

请求方式: POST

请求示例:

  • Request
    {
        "start": 0, // 起始拉取房间,start = 0 表示从第 1 个房间开始拉取
        "limit": 10 // 每次拉取的个数上限,不要设置过大,建议 100 以内
    }

Response(官方文档可能有问题,anchor_img这个没返回,返回的是share_img)

    {
        "errcode": 0, // errcode = 0 代表成功;errcode = 1 代表未创建直播房间
        "errmsg": "ok",
        "room_info": [{
        "name": "直播房间名",
        "roomid": 1,
        "cover_img": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdl2et1tPAQ37bdicnxoVialDLCKKDcPBy8Iic0kCiaiaalXg3EbpNKoicrweQ\/0?wx_fmt=jpeg",
        "live_status": 101,
        "start_time": 1568128900,
        "end_time": 1568131200,
        "anchor_name": "李四",
        "anchor_img": "http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdlp0sf9YTorOzUbGF9Eib6ic54k9fX0xreAIt35HCeiakO04yCwymoKTjw\/0?wx_fmt=jpeg",
        "goods": [          
            {
                "cover_img": "http://mmbiz.qpic.cn/mmbiz_png/FVribAGdErI2PmyST9ZM0JLbNM48I7TH2FlrwYOlnYqGaej8qKubG1EvK0QIkkwqvicrYTzVtjKmSZSeY5ianc3mw/0?wx_fmt=png",
                "url": "pages/index/index.html",
                "price": 1100,
                "name": "fdgfgf"
            }
        ],
        "total": 1
    }

常用的就这些了,要是有需要小编说明的,欢迎在下方留言。
微信小程序开通直播功能.jpeg

微信小程序客服会话发送页面卡片,这个腾讯在按钮里面已经封装好了,我们直接拿过来用就行了。
首先设置open-type="contact"
我们看下官方文档
官方文档.png

常用的就这几个

open-type="contact" 
send-message-title=""
show-message-card="" 
send-message-path=""

微信小程序客服会话发送页面卡片.jpeg

微信小程序获取用户收货地址,这个功能在我们开发商城的时候,经常会用到,所以微信小程序专门提供了API,我们只需要直接调用就可以了。
实现代码:

getAddress: function() {
        let that = this;
        wx.chooseAddress({
            success(res) {
                console.error(res)
                console.log(res.userName)//收货人姓名
                console.log(res.postalCode)//邮编
                console.log(res.provinceName)//国标收货地址第一级地址
                console.log(res.cityName)//国标收货地址第二级地址
                console.log(res.countyName)//国标收货地址第三级地址
                console.log(res.detailInfo)//详细收货地址信息
                console.log(res.nationalCode)//收货地址国家码
                console.log(res.telNumber)//收货人手机号码
            }
        })
    },

实现效果:
收货地址.png
你只要对你自己的内容进行赋值就可以了。

微信小程序获取用户收货地址.jpeg

在微信小程序里面,页面基本上都是一个栈的数据结构,当我们使用wx.navigateto,打开一个新的页面的时候,这时候就会在栈顶显示这个页面,当我们使用wx.navigateBack() 返回上个页面的时候,就是把当前的页面pop出去。小编之前用过RN,当时采用的是回调函数来实现的,其实在小程序里面不需要这么麻烦,我们可以直接拿到页面栈,然后给上个页面直接赋值就行。
操作方法:

  1. 在当前页面执行:

    let pages = getCurrentPages(); // 拿到页面栈
    let prevPage = pages[pages.length - 2]; // 拿到上个页面,-1是当前页面
    prevPage.setData({ // 赋值
     addressid: e.currentTarget.dataset.addressid
    })
    wx.navigateBack({ // 返回
     delta: 1
    })
  2. 上一个页面:

    // 获取值并进行赋值(一般小编是写在onShow里面)
    this.setData({
    addressid: currPage.__data__.addressid || null
    })

    微信小程序wx.navigateBack() 携带参数返回.png