微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2022年夏季《移动软件开发》实验报告

2022年夏季《移动软件开发》实验报告

| 实验名称?           | 实验4:高校新闻网          

一、实验目标

1、综合所学知识创建完整的前端新闻小程序项目;

2、能够在开发过程中熟练掌握真机预览、调试等操作。

二、实验步骤

(列出实验的关键步骤、代码解析、截图。)

1.创建一个新的小程序项目。

2.删除多余文件

删app.json文件的,"pages/logs/logs"

在app.json文件加上,"pages/detail/detail"

在app.json文件加上,"pages/my/my"

删pages文件夹下的logs目录及内部文件

3.获取并存放播放图标

创建images文件夹将图标存放进去

4.app.json的代码

navigationBarBackgroundColor的设置使得导航栏的颜色为蓝色;

navigationBarTitleText为导航栏上所显示文字

navigationBarTextStyle设置导航栏上字体的颜色;

tabBar为可以切换首页和我的页面

{

  "pages":[

    "pages/index/index",

    "pages/detail/detail",

    "pages/my/my"

  ],

  "window":{

    "backgroundTextStyle":"light",

    "navigationBarBackgroundColor": "#328EEB",

    "navigationBarTitleText": "我的新闻网",

    "navigationBarTextStyle":"white"

  },

  "style": "v2",

  "sitemapLocation": "sitemap.json",



  "tabBar": {                  

    "color": "#000",

    "selectedColor": "#328EEB",

    "list": [

      {

        "pagePath": "pages/index/index",

        "iconPath": "images/index.png",

        "selectedIconPath": "images/index_blue.png",

        "text": "首页"

      },

      {

        "pagePath": "pages/my/my",

        "iconPath": "images/index.png",

        "selectedIconPath": "images/index_blue.png",

        "text": "我的"

      }

    ]

  }

}

5.app.wxss的代码

/*新闻列表区域样式*/
/*2-1新闻列表容器*/
#news-list {
  min-height: 600rpx;
  padding: 15rpx;
}
/*2-2列表项目*/
.list-item{
  display: flex;
  flex-direction: row;
  border-bottom: 1rpx solid gray;
}
/*2-3新闻图片*/
.list-item image{
  width:230rpx;
  height: 150rpx;
  margin: 10rpx;
}
/*2-4新闻标题*/
.list-item text{
  width: 100%;
  line-height: 60rpx;
  font-size: 10pt;
}

6.my.js的代码

Page({

  /**

   * 页面的初始数据

   */

  data: {

    //临时微信用户昵称和头像

    num:0

  },



  //获取微信用户信息

  getUsrProfile(e){

    wx.getUserProfile({

      desc: 'desc',

      success:(res)=>{

        console.log(res)

        this.setData({

          isLogin:true,                     //确认登陆状态

          src:res.userInfo.avatarUrl,       //更新图片来源

          nickName:res.userInfo.nickName    //更新昵称

        })

        this.myFavorites()

      }

    })

  },



  myFavorites:function(){

    let info = wx.getStorageInfoSync();       //读取本地缓存

    let keys = info.keys;                     //获取全部key信息

    let num = keys.length;                    //获取收藏新闻数量



    let myList = [];

    for(var i=0; i<num; i++){

      let obj = wx.getStorageSync(keys[i]);

      myList.push(obj);                       //将新闻填加到数组中

    }



    //更新收藏夹

    this.setData({

      newsList:myList,

      num:num

    })

  },



  goToDetail:function(e){

    //获取携带的data-id数据

    let id = e.currentTarget.dataset.id;

    wx.navigateto({

      url:'../detail/detail?id='+id

    })

  },



  /**

   * 生命周期函数--监听页面显示

   */

  onShow() {

    //如果已经登录

    if(this.data.isLogin){

      //更新收藏列表

      this.myFavorites()

    }

  },

})

7.my.wxml的代码

<!--登陆面板-->
<view id="myLogin">
  <block wx:if="{{isLogin}}">
    <image id="myIcon" src="{{src}}"></image>
    <text id="nickName">{{nickName}}</text>
  </block>
  <button wx:else bindtap="getUsrProfile">未登录,点此登录</button>
</view>
<!--我的收藏-->
<view id="myFavorites">
  <text>我的收藏({{num}})</text>
  <!--收藏的新闻列表-->
  <view id="news-list">
    <view class="list-item" wx:for="{{newsList}}" wx:for-item="news" wx:key="{{news.id}}">
      <image src="{{news.poster}}"></image>
      <text bindtap="goToDetail" data-id="{{news.id}}">{{news.title}}--{{news.add_date}}</text>
    </view>
  </view>
</view>

8.detail.wxml的代码

<view class="container">
  <view class="title">{{article.title}}</view>
  <view class="poster">
    <image src="{{article.poster}}" mode="widthFix"></image>
  </view>
  <view class="content">{{article.content}}</view>
  <view class="add_date">时间:{{article.add_date}}</view>
  <button wx:if="{{isAdd}}" plain bindtap="cancelFavorites">❤已收藏</button>
  <button wx:else plain bindtap="addFavorites">❤点击收藏</button>

</view>

9.detail.wxss的代码

.container{
  padding: 15rpx;
  text-align: center;
}
.title{
  font-size: 14pt;
  line-height: 80rpx;
}
.content{
  text-align: left;
  font-size: 12pt;
  line-height: 6-rpx;
}
.add_date{
  font-size: 14pt;
  line-height: rpx;
  text-align: left;
margin-top: 20rpx;
margin-right: 25rpx;
}

/*“点击收藏”按钮*/
button{
  width: 250rpx;
  height: 100rpx;
  margin: 20rpx auto;
}

10.detail.js的代码

const common = require("../../utils/common")



// pages/detail/detail.js

Page({

  /**

   * 页面的初始数据

   */

  data: {

  },

//添加到收藏夹

  addFavorites:function(option)

  {

    let article = this.data.article;          //获取当前新闻

    wx.setStorageSync(article.id, article);   //添加到本地缓存

    this.setData({isAdd:true});               //更新按钮显示

  },



  //取消收藏

  cancelFavorites:function()

  {

    let article = this.data.article;          //获取当前新闻

    wx.removeStorageSync(article.id);         //从本地缓存删除

    this.setData({isAdd:false});              //更新按钮显示



  },



  /**

   * 生命周期函数--监听页面加载

   */

  onLoad:function(options) {

    //获取页面跳转来时携带的数据

    let id = options.id

    //检查当前新闻是否在收藏夹内

    var article = wx.getStorageSync(id)

    //存在

    if(article != ''){

      this.setData({

        article:article,

        isAdd:true

      })

    }

    //不存在

    else{

      let result = common.getNewsDetail(id)

      //获取到新闻内容

      if(result.code =='200'){

        this.setData({

          article:result.news,

          isAdd:false

        })

      }

    }

  },



})

三、程序运行结果

(列出程序的最终运行结果及截图。)

 

 

          

四、问题总结与体会

(描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。)

1.问题:实验四遇到的问题和实验一一样,老师所给的获取微信用户信息的方式不可行。

解决:把getUserInfo改为getUserProfile。

2.收获

作为一个计算机人要有发展且灵活的变通能力

3.课程安排

目前老师的课程安排,对于我个人而言,非常合适。

原文地址:https://www.jb51.cc/wenti/3284183.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐