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);
    

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

  • 相关阅读:
    .NetCore Grpc 客服端 工厂模式配置授权
    DOCKER 拉取 dotnet 镜像太慢 docker pull mcr.microsoft.com too slow
    Introducing .NET 5
    VSCode 出现错误 System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached.
    Omnisharp VsCode Attaching to remote processes
    zookeeper3.5.5 centos7 完全分布式 搭建随记
    Hadoop2.7.7 centos7 完全分布式 配置与问题随记
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序
    SQL基础随记3 范式 键
    MySQL调优 优化需要考虑哪些方面
  • 原文地址:https://www.cnblogs.com/marvinemao/p/8868010.html
Copyright © 2011-2022 走看看