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

姓名和学号?
本实验属于哪门课程?中国海洋大学22夏《移动软件开发》
实验名称?实验4:高校新闻网
博客地址?https://blog.csdn.net/weixin_51703554
Github仓库地址?

(备注:将实验报告发布在博客、代码公开至 github 是 加分项,不是必须做的)

一、实验目标

1、综合所学知识创建完整的前端新闻小程序项目;能够在开发过程中熟练掌握真机预览、调试等操作。

二、实验步骤

1、新建项目

在这里插入图片描述

2、页面配置

在这里插入图片描述
在这里插入图片描述

创建其他文件

在这里插入图片描述

3、视图设计
1、导航栏设计

​ 在app.json对导航栏进行重新配置

  "window":{
    "navigationBarBackgroundColor": "#328EEB",
    "navigationBarTitleText": "我的新闻网",
    "navigationBarTextStyle":"white"
  },

在这里插入图片描述

2、tabBar设计

​ 在app.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/my.png",
        "selectedIconPath": "images/my_blue.png",
        "text": "我的"
      }
    ]
}

3、页面设计
(1)主页设计
<!--幻灯片滚动-->
<swiper indicator-dots autoplay interval="5000" duration="500"></swiper>
<!--新闻列表-->
<view id='news-list'>这是新闻列表</view>
/*新闻列表区域样式*/
/*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;
}
swiperImg: [
      {src: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage1.jpg'},
      {src: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage2.jpg'},
      {src: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage3.jpg'}
    ],
    newsList : [
      {id: '264698',
      title: '省退役军人事务厅来校交流对接工作',
      poster: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage1.jpg',
      add_date: '2022-08-19'}
    ]
  },

(2)个人中心页设计
<!--登陆面板-->
<view id='myLogin'>
  <block>
    <image id="myIcon" src='{{src}}'></image>
    <text id='nickName'>{{nickNmae}}</text>
  </block>
</view>
<!--我的收藏-->
<view id='myFavorites'>
  <text>我的收藏(1</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>{{news.title}}——{{news.add_date}}</text>
    </view>
  </view>
</view>

data: {
    nickName:'未登录',
    src:'/images/index.png',
    newsList:[{
      id: '264698',
      title: '省退役军人事务厅来校交流对接工作',
      poster: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage1.jpg',
      add_date: '2022-08-19'
    }]
  },

在这里插入图片描述

(3)新闻页设计
<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>
</view>

/* pages/detail/detail.wxss */
/*整体容器*/
.container{
  padding: 15rpx;
  text-align: center;
}
/*新闻标题*/
.title{
  font-size: 14pt;
  line-height: 80rpx;
}
/*新闻图片*/
.poster image{
  width: 700rpx;
}
/*新闻正文*/
.content{
  text-align: left;
  font-size: 12pt;
  line-height: 60rpx;
}
/*新闻日期*/
.add_date{
  font-size: 12pt;
  text-align: right;
  line-height: 30rpx;
  margin-right: 25rpx;
  margin-top: 20rpx;
}
article:{
    id: '264698',
    title: '省退役军人事务厅来校交流对接工作',
    poster: 'https://gaopursuit.oss-cn-beijing.aliyuncs.com/2022/newsimage1.jpg',
    content: ' 8月19日,省退役军人事务厅二级巡视员蔡元和、办公室主任刘恒贵、就业创业处副处长钟俊武一行来校就联合共建安徽退役军人学院事宜进行交流对接。校党委常委、副校长陆林,芜湖市退役军人事务局党组成员、副局长张桂芬,学校办公室、人事处、教务处、招就处、学生处、研究生院、体育学院负责同志参加会议。',
    add_date: '2022-08-19'
    }

在这里插入图片描述

4、逻辑实现
1、公共逻辑

将数据放在公共common.js文件中。

在common.js中添加自定义函数getNewList和getNewsDetail,用于获取新闻列表信息和指定ID的新闻正文内容。

//获取新闻列表
function getNewsList() {
  let list = [];
  for (var i = 0; i < news.length; i++) {
    let obj = {};
    obj.id = news[i].id;
    obj.poster = news[i].poster;
    obj.add_date = news[i].add_date;
    obj.title = news[i].title;
    list.push(obj);
  }
  return list; //返回新闻列表
}

//获取新闻内容
function getNewsDetail(newsID) {
  let msg = {
    code: '404', //没有对应的新闻
    news: {}
  };
  for (var i = 0; i < news.length; i++) {
    if (newsID == news[i].id) { //匹配新闻id编号
      msg.code = '200'; //成功
      msg.news = news[i]; //更新当前新闻内容
      break;
    }
  }
  return msg; //返回查找结果
}

最后在common.js中使用moudle.exports语句暴露函数出口

// 对外暴露接口
module.exports = {
  getNewsList: getNewsList,
  getNewsDetail: getNewsDetail
}
2、首页逻辑
新闻列表展示

​ 新闻列需要在页面js文件的onload函数获取新闻列表,并更新到data属性的newList参数中

  onLoad: function (options) {
    let list=common.getNewsList()
    this.setData({newsList:list})
  },

​ 点击跳转新闻内容

<text bindtap="gotoDetail" data-id="{{news.id}}">{{news.title}}——{{news.add_date}}</text>

函数在index.js和detail.js中创建

//自定义函数
  goToDetail:function(e){
    let id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: '../detail/detail?id='+id
    })
  },

同时还需要在detail.js创建onload的函数,显示对应新闻

onLoad: function (options) {
    let id = options.id
    let result = common.getNewsDetail(id)
    if(result.code=='200'){
      this.setData({article:result.news})
    }
  },

在这里插入图片描述
在这里插入图片描述

3、新闻页逻辑

添加/取消新闻收藏

修改detail.wxml代码,追加两个button组件为收藏新闻的按键

<button wx:if="{{isAdd}}" plain bindtap="cancelFavorites">❤已收藏</button>
  <button wx:else plain bindtap='addFavorites'>🤍点击收藏</button>
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
        })
      }
    }
  },
  addFavorites:function(){
      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
      })
    },

在这里插入图片描述

4、个人中心页逻辑
1、获取微信用户信息
<view id='myLogin'>
  <block wx:if="{{isLogin}}">
    <image id="myIcon" src='{{src}}'></image>
    <text id='nickName'>{{nickName}}</text>
  </block>
  <button wx:else>未登录,点此登录</button>
</view>
  // 获取用户信息
  getMyInfo: function(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,
    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          isLogin:true,
          src: res.userInfo.avatarUrl,
          nickName: res.userInfo.nickName
        });
        // this.getMyFavourites();
      }
    })
    
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },

在这里插入图片描述

2、获取收藏列表
getMyFavorites:function(){
      let info=wx.getStorageInfoSync();
      let keys=info.keys;
      let num=keys.length;

      let myList=[];
      for(var i=0;i<num;i++){
        let obj=wx.getStorageSync(keys[i]);
        myList.push(obj);
      }
      whis.setData({
        newsList:myList,
        num:num
      });
    },

在这里插入图片描述

3、浏览收藏的新闻
    //自定义函数
    goToDetail:function(e){
      let id = e.currentTarget.dataset.id;
      wx.navigateTo({
        url: '../detail/detail?id='+id
      })
    },

在这里插入图片描述

三、程序运行结果

在这里插入图片描述

四、问题总结与体会

问题:

1、版本问题导致登录与教程不同,最终参考实验一的方法完成此部分内容

2、缓冲区中会存有以前的日志,会影响收藏数目,需要对其进行清空

3、在my.js中忘记加入num变量,导致程序出错,找了好长时间

收获:

播放幻灯片,使其自动播放,可以使主页更加美观

学习到了如果页面之间的逻辑还没有写完,想要调试一个页面,可以添加编译模式,来对特定页面进行编译和显示

同时也了解到了一些缓冲区的知识,了解了setStorageSync、getStorageSync、removeStorageSync等函数

使用wx:for进行循环,wx:if或else实现条件判断

再此用到登录获取用户信息,对于登录函数进行一个复习

综合所学知识创建完整的前端新闻小程序项目,为今后的学习打下坚实的基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于凯立德导航公司而言,2022夏季3p21j30下载是非常重要的。随着汽车普及率的不断提高,导航设备已成为车内必备的装置之一。凯立德导航公司作为行业领军企业,已经成为了全球导航设备的知名品牌之一。 在2022夏季,凯立德导航公司将推出3p21j30下载。这款导航设备具有更高的精度和更完善的功能,比如可以提供实时交通信息、路线规划、语音提示等等。同时,它还拥有更加稳定和快速的定位系统,确保用户能够随时随地准确导航。 此外,为了满足用户的个性化需求,凯立德导航公司还设计了多种样式的导航地图,方便用户选择自己喜欢的地图样式,从而增强使用体验。凯立德导航公司还会不断更新和升级导航设备的软件,为用户提供更多的功能和服务。 总之,2022凯立德导航夏季3p21j30下载代表了导航设备的最新技术和功能,无疑将成为消费者们的首选。它将为人们提供更为便利的出行体验,并且深受广大车主的喜爱和认可。 ### 回答2: 2022凯立德导航夏季3p21j30版本的下载,需要先确认您使用的设备是属于凯立德导航支持的设备型号,以便您可以正常的下载和使用该版本软件。在下载前,您可以到凯立德官网或应用商店中搜索“凯立德导航”关键词,找到适合您设备型号的软件版本进行下载安装。 在使用凯立德导航时,需要注意以下几点: 1. 软件版本:凯立德导航提供了多个版本,包括免费版和付费版,根据您的实际需求选择相应的版本进行下载使用。 2. 地图更新:为了保证准确的导航,建议您定期更新导航地图,以便获得最新的路况信息和地图数据。 3. 使用标准:在使用凯立德导航时,请遵守交通规则,注意交通安全,不要在驾驶过程中看手机或操作软件,以免发生危险事故。 总之,下载2022凯立德导航夏季3p21j30版本需要符合设备型号要求,并注意软件的版本和地图更新,遵守交通规则等。相信凯立德导航将会为您提供方便快捷的导航服务,帮助您安全出行。 ### 回答3: 抱歉,作为AI语言模型,我无法提供关于未来产品的下载信息。当时间到了2022,您可以通过相关官方渠道获取凯立德导航夏季3p21j30版本的下载信息。同时,我们也希望在此提醒您,下载软件时一定要遵循官方正规渠道,并且保持警惕,避免下载和使用未知来源的软件,以免造成损失。谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值