zoukankan      html  css  js  c++  java
  • 新闻资讯小程序开发实践

    新闻资讯小程序开发实践

    在腾讯小程序上线一周年之际,公司又决定把App产品部分内容在小程序上实现。就在小程序刚上线的时候,公司也有一款产品进行了小程序的研发,但后续没有持续的维护。这过了一年的时间,微信也对小程序进行了更多的赋能,更多的场景应用。下面是去年做的小程序,
    1

    2

    要解决的问题

    要进行这款小程序开发一定要知道需要什么,缺少什么。下面是需要解决的问题,

    • 后端同学没有更多的精力配合提供接口开发
    • 很多数据请求接口需要HTTPS
    • 图片、视频请求需要HTTPS
    • 数据统计
      产品提供的原型图如下,
      3

    问题解决

    所有的问题都需要一个一个跟后端、运维同学沟通,还是先把基本的小程序页面给写出来吧,然后再解决相应的问题。

    关于接口

    1.因为小程序基本是和App数据同步的,所以可以使用App的数据。让人庆幸的是App数据接口支持HTTP和HTTPS,跟客户端的同学沟通后基本沿用了App数据请求模式。这样就解决了两个问题,HTTPS和数据接口。
    2.但在这里有个问题,关于视频我们用的是阿里云视频服务,并且使用的是用id去触发sdk,网页端也是使用的js-sdk。显然在这里别说是js无法引入进来(下载下来会让小程序代码大小增加,有风险),css都没有办法。试了一下可以使用小程序原生组件video,这就需要后端同学在接口中加一个视频播放链接字段。当然这工作量很少(可以说分分钟的事儿O(∩_∩)O哈哈~)
    3.这里其实有一个接口不支持HTTPS,最后运维的同学进行了一些配置,维护了个HTTPS证书问题也就解决了。刚开始还在担心图片、视频这些请求。是否要HTTPS,这样图片服务器、还有视频都要支持。这就没有那么简单了(一年前也忘了是否图片需要支持,似乎没有过多的配置),最后咨询了一些大佬,担心是多余的。
    4.数据统计的问题,用户数据统计是最重要了。之前看到过一个专门为小程序服务的数据统计公司——阿拉丁,注册账号看了下,似乎和百度统计差不多。只不过它是专属服务于小程序的。sdk加入也比较简单,现阶段也不需要太多的用户行为数据统计,加入些简单的统计即可。
    所有的问题都一一得到解决,下面是最终写出来的页面



    开发过程中遇到的问题

    1.在视频列表页需要有个页面内分享,点击页面内图标实现分享。之前我是知道这样似乎是不行的,但毕竟小程序开放了很多接口。翻看了文档,支持页面内分享。

    “通过给 button 组件设置属性 open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage() 事件,如果当前页面没有定义此事件,则点击后无效果。相关组件:button”
    

    这是官方文档的说法,所以必须用button组件,我把分享图标上盖个button,透明度设为0。
    代码如下

    <view class="right-block">
      <image src="../../images/icon_share.png"></image>
      <button open-type="share" class="share-btn" data-id="{{item.id}}" data-src="{{item.ali_vidio_url}}" data-poster="{{item.image}}">&nbsp;</button>
    </view>
    
    .left-block, .right-block{
       50%;
      height: 76rpx;
      float: left;
      position: relative;
    }
    
    .left-block image{
      margin: 20rpx 0 0 20rpx;
       37rpx;
      height: 37rpx;
      vertical-align: bottom;
    }
    
    .left-block text{
      display: inline-block;
      font-size: 24rpx;
      color: #b9b9b9;
      margin: 20rpx 0 0 10rpx;
    }
    
    .right-block image{
       33rpx;
      height: 34rpx;
      float: right;
      margin: 20rpx 20rpx 0 0;
    }
    
    .share-btn{
      position: absolute;
      right: 0;
      top: 0;
      height:76rpx;
       76rpx;
      z-index:10;
      opacity: 0;
    }
    

    在这里需要判断分享是从哪里来的,判断如下

    onShareAppMessage: function (res) {
      if (res.from === 'button') {
        // 来自页面内转发按钮
        
        return {
          title: '每日经济新闻',
          path: 'pages/videoDetail/videoDetail?id=' + res.target.dataset.id + '&src=' + res.target.dataset.src + '&poster=' + res.target.dataset.poster,
          success: function (res) {
            // 转发成功
          },
          fail: function (res) {
            // 转发失败
          }
        }
      }
    
      return {
        title: '每日经济新闻',
        path: 'pages/videoList/videoList',
        success: function(res) {},
        fail: function(res) {}
      }
    }
    

    2.文章详情接口拿到的是一段富文本,但小程序有不能解析富文本。在GitHub上找到一个开源项目wxParse,可以很好地解决这个问题。代码如下

    /**调用如下**/
    WxParse.wxParse('diggest', 'html', res.data.digest, that, 5);
    WxParse.wxParse('content', 'html', res.data.content, that, 5);
    

    就这样这款小程序就这样被搞定了,也不复杂很常规。

  • 相关阅读:
    PAT (Basic Level) Practice (中文)1022 D进制的A+B
    PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想
    Pycharm的调试
    Pycharm自带Git实现版本管理
    JMeter分布式压测
    JMeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决方法
    JMeter资源监控插件PerfMon的使用
    JMeter命令行执行+生成HTML报告
    JMeter压测“java.net.SocketException: Socket closed”解决方法
    JMeter压测“java.net.BindException: Address already in use: connect”解决方法
  • 原文地址:https://www.cnblogs.com/marvinemao/p/8868010.html
Copyright © 2011-2022 走看看