移动端单模块功能实现思路及重要方法总结

简介: 移动端单模块功能实现思路及重要方法总结

20210609234312234.jpg

1 更多操作思路分析:


总体认知:搭结构,先做基本的页面样式,再做功能。能封装就封装,复杂功能拆分成一个个分支组件

2 我要实现的效果


对于已经登陆的用户,点击小×可允许他们去关闭某篇文章,或者是反馈内容;对于没有登录的用户小×不会显示

3 大体规划


第一步,搭建UI页面。只有登录的用户才能看见小×,未登录是没有的

第二步,使用弹层组件,使同一时间只有一个子内容显示,另一个隐藏

第三步,点击‘不感兴趣’,要做三件事分别是 1调接口,关闭弹层,删除文章(数组中)

第四步,点击‘举报内容’,同样是做三件事

4 具体实现使用到的知识点


4.1,需要判断用户有没有token,有token就显示小x号可对其操作,没token那只能干看了。在组件中判断有没有token的话,if(this.$store.state.XXX)--毕竟token是保存在vuex的state中的,注意:如果是在template中的话不要加this。因为vue底层已经做了


4.2,弹层组件popup组件+v-model +利用v-if-else实现状态切换--这个看官网的使用方法,vant(有赞)


4.3,点击小x控制弹出框的显示隐藏(点击事件可以把简单代码写在注册行,如:@click='xx变量名=false' 以及v-if = ‘布尔值’,如:v-if="!isReport"),以及获取文章的id,后面根据他删除,id是上面v-for的属性,也就是说,你要点击这个删除某个文章,肯定需要获取文章的id之类的,万变不离其宗。


4.4 弹出框用的是vant里的popup弹出层


4.5 弹出框里面的内容,选择新建一个.vue文件搭建结构(就问你能不能在当前页面写?——能!),目的是结构清晰,方便维护。 利用vant里面的cell单元格,先将所有的内容放进去,只需要控制每次只有一个显示就行。


4.6

    这个状态1 ,2 其实就是刚搭好页面结构,就是需要隐藏的和显示的都在一起,算了,加一段代码。如打印的话,会清楚看到页面结构,理解我说的。


4.7 使用v-if  else控制元素的现实和隐藏,可以做一些判断

// 此文件负责弹出层内容显示,使用vant里面的cell单元格
<template>
  <div class="more-action">
    <!-- 状态一 -->
    <van-cell-group v-if="!isReport">
      <van-cell @click="buxihuan">不感兴趣</van-cell>
      <van-cell is-link @click="isReport = true">反馈垃圾内容</van-cell>
      <!-- 定义一个布尔变量,当我点反馈的时候,状态1隐藏,状态2 显示那么他的所在的状态一的值应该是 false-->
      <!-- 首先,状态1应该是点击x后默认显示的,此时初始状态是 ,1显示,2隐藏,当我点击反馈的时候,此时他隐藏,2显示 -->
      <van-cell>拉黑作者</van-cell>
    </van-cell-group>
    <!-- 状态二 反馈-->
    <van-cell-group v-else>
      <van-cell icon="arrow-left" @click="isReport = false">返回</van-cell>
      <van-cell
        v-for="item in reports"
        :key="item.value"
        @click="hReport(item.value)"
        >{{ item.label }}</van-cell
      >
    </van-cell-group>
  </div>
</template>

5.继续上面的知识点


5.1 点击不感兴趣要做三件事,调接口+关弹窗+删数据


上面新建了,子组件,一般子传父都是传些数据,然而:


子传父-骚操作--子传父不带数据,就告诉你,爹你来!

他爹通过子自定义的事件名接受,同时使用自己的回调函数,处理。


5.2 调接口--毫无难度-先去建个.js文件封装,接着导入-使用-固定步骤固定格式-熟能生巧尔


5.3删除文章-删除数组中的(不可能因为你不喜欢这个文章,后台把数据库内容给删除了),利用findindex找下标,利用splice删除数组该下标。里面有一个点比较关键,下标哪里来?点击小x的时候,就可以获取得到,然后定义state里定义变量接受,之后传给函数,Soeasy。(findindex 是js封装的api,我会在另一个文章中集中总结)

6重要知识点


1.【封装数据】把数据封装到单独的文件中,封装成对象。然后渲染的时候通过引入(注意,引入的时候需要先定义,例如这种需要在data中引入,如函数需要在methods中),再使用v-for。可以提高可维护性。试想,如果你写在data或者state中,固定的的写死,但凡需求以便,或是改动数据非常不便,理解封装的思想很重要

/ 以模块的方式导出 举报文章 时,后端接口约定的举报类型
// 这是常量数组
// 搞这个的目的是后期可以提高可维护性,改动简单,属于弊在当下功在千秋
const reports = [
  {
    value: 0,
    label: '其它问题'
  },
  {
    value: 1,
    label: '标题夸张'
  },{
     ……
     }
——————————————————下面是不封装的对比——————————————————————
 <van-cell icon="arrow-left">返回</van-cell>
      <van-cell>侵权</van-cell>
      <van-cell>色情</van-cell>
      <van-cell>暴力</van-cell>
      ……
    </van-cell-group>

6.2 消除魔法字符串


消除魔法字符串,听着很酷炫,其实很简单。不过他很优雅,也确实很帅。

let  a = 100;
//这是普通写法
console.log(100 + 1) 
console.log(100 + 2)
console.log(100 + 3)
console.log(100 + 4)
……
//高级写法:
console.log(a + 1) 
console.log(a + 2)
console.log(a + 3)
console.log(a + 4)
看见没,如果这是一个一直输出,100+上某个数,我可以将a 提出来,这样将来变成99+某个数,我只需要改一个值就行了

6.3 父组件修改子组件


1 给子组件添加引用。它子组件补充一个 ref 例如  <子组件名字  ref="XXXX">


2 通过this.$refs.子组件引用.子组件数据=新值。this.$refs.XXXX.aaaa= 值


注意:一定要确保这个子组件已经被创建出来了


父组件可以想怎么修改子组件就怎么修改子组件

0今日重点


token持久化


背景:在我点击登录进去首页的时候,后台token确实发来了,但是保存在内存中,一刷新就没了,而要干一些事,没token还得重新登录,非常不合适。于是借助本地存储+vuex


知识回顾:vuex保存数据的特点:保存在内存中(页面一刷新就没了),响应式,全局公共的,任何组件都可以使用;本地存储特点:保存在本地浏览器,存储大小有几个m,非响应式,但保存时间长,刷新页面数据还在。


我在初始做这个项目的时候,就感觉出来了,页面一刷新,我就得重新登录获取token,然后我想用本地存储,结果只在请求中写了保存,却没有把token取出来给state,结果肯定是不行 。

使用方法:


首先,token是后台给我们发的,发来的是对象,键值对的形式,此时打印的话,可以看到,token的值是字符串。我们存的时候需要转换成字符串,取出来的时候,需要转化成对象,好操作token。

1 .localStorage.setItem("键", JSON.stringify(值))     // 保存
2. JSON.parse(localStorage.getItem(值))  //获取
3. localStorage.removeItem(‘键’)  //删除

还可以将他们封装起来,到时候随便调用。

相关文章
|
存储 缓存 监控
《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。
122 0
|
4月前
|
前端开发 JavaScript Serverless
中后台前端开发问题之通过低代码实现前后端交互如何解决
中后台前端开发问题之通过低代码实现前后端交互如何解决
49 0
|
7月前
|
Java 数据库连接 数据库
用户注册功能实现及代码优化案例
用户注册功能实现及代码优化案例
153 0
|
存储 小程序 前端开发
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
68 0
|
前端开发 区块链
合成游戏看广告视频盒子系统开发方案逻辑/详细案例/功能设计/需求步骤/规则项目/源码说明
在Solidity中,与外部合约交互可以通过调用函数来完成。这些函数可以是在Solidity合约中定义的函数,也可以是在外部合约中定义的函数。调用外部合约函数需要知道合约的地址和函数的签名。
|
JavaScript 前端开发 API
使用Jsmind实现前端流程图功能
使用Jsmind实现前端流程图功能
|
移动开发 小程序 前端开发
前端概念之移动端/小程序
随着智能手机的普及,移动端已经成为了人们最重要的使用场景之一。在这个场景下,前端开发也面临着各种挑战,如不同设备的屏幕尺寸、不同平台的兼容性等。为了解决这些问题,多端/跨端/融合的移动端/小程序的概念应运而生。 多端/跨端/融合 在移动端开发中,我们常常需要考虑到不同平台的适配问题,如iOS、Android等。而多端/跨端/融合的思路就是将这些平台的问题合并在一起,以便更好地解决它们。具体来说,多端/跨端/融合的移动端/小程序是指能够在多个平台上运行的应用程序,如H5、小程序、快应用等。
218 0
|
JSON JavaScript 前端开发
接口测试平台代码实现58-首页重构6
接口测试平台代码实现58-首页重构6
接口测试平台代码实现58-首页重构6
|
前端开发 测试技术
接口测试平台代码实现55:首页重构-3
接着上节继续来做: 先来回顾一下,上节课我们基本就是清空来首页,并且划了一条竖线,把首页分为左右俩部分。
接口测试平台代码实现55:首页重构-3
|
前端开发 JavaScript 测试技术
接口测试平台代码实现56:首页重构-4
本节继续开发首页右侧的显示效果,可能有的同学觉得这里节奏太慢了,不怕,咱养肥再看。
接口测试平台代码实现56:首页重构-4