附录5-黑马头条案例

news2024/11/29 0:56:03

目录

1  效果

2  组件库vant

2.1  安装

2.2  配置

2.3  项目中的使用

2.3.1  引用

2.3.2  tabbar 底部切换

2.3.4  van-list 上拉触底更新

2.3.5  van-pull-refresh 下拉更新

2.3.6  v-cell

2.3.7  van-icon

2.3.8  自定义风格

3  保持滚动条位置

4  打包项目

4.1  flask配合dist

4.2  以文件形式打开


1  效果

一共两个页面,主页是这样的,主页有上拉触底,和下拉刷新两个功能,其余就没有别的功能了

我的 是这样的,我的 这一页没有接任何的数据,他是一个死的页面

2  组件库vant

使用了vant组件库,vant是一个移动端组件库,vant4官网 Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.

2.1  安装

这里你其实就可以直接用了,下面是优化的方面,如果你的开发完之后,项目打开的非常慢,这个时候你可以考虑按需引入vant,按需引入vant会减少一部分体积

  • 即使直接引入最后发布的时候也有方法把vant包的占用空间问题解决

按需引入vant需要使用插件 unplugin-vue-components

2.2  配置

如果是按需引入css,你需要找到项目中的 vue.config.js 然后加上如下内容

如果不按需引入css,就按照下面的方式在main.js引入css,按需与否只有css的区别 import { Button } from 'vant'的用法是相同的

2.3  项目中的使用

2.3.1  引用

全都是在 main.js 中进行引用的

下面简单说一下每个组件的用法,用法也都可以在文档中查到

2.3.2  tabbar 底部切换

  • route是开启路由模式
  • placeholder是保留一个占位元素,由于tabbar本身是固定定位,默认情况下会盖住他下面的内容,给一个占位元素就让别的元素不往tabbar下面走了
  • replace 是保留历史记录的跳转
  • to 是区哪个路由
  • icon 是用什么小图像

navbar是导航栏,这里直接就当作标题用了

  • title是标题是什么
  • fixed 是固定定位
  • placeholder 是给一个占位元素

2.3.4  van-list 上拉触底更新

像 v-model:loading="update_loading" 你可以理解为 van-list 这个组件,需要一个名为 loading 的变量,但是他的值你可以自定义,我自定义为update_loading

  • loading 是否在加载,开始的时候给true,结束的时候给false
  • finished 是否终止上拉触底,一般是没有数据时终止,想终止是给true,不想终止时给false
  • finished-text 当你终止的时候在最底下会给你一段文字
  • @load是上拉触底的时候你要干些什么东西

2.3.5  van-pull-refresh 下拉更新

  • van-pull-refresh 的v-model如果是true就表示正在加载,false就表示加载完了
  • @refresh就是下拉的时候要干些什么事情
  • disabled就是禁止下拉刷新,true为禁止,false为不禁止,当我们获取不到新的数据的时候就禁止下拉刷新

2.3.6  v-cell

这个就是单纯的样式,van-cell中给的插槽就像下面这样写的,但是我们没用到插槽

2.3.7  van-icon

就是这里的叉

2.3.8  自定义风格

建议通过调试工具找到具体的类名,然后将其原来的css覆盖掉

也可以这样在App.vue中定义整体风格,我现在把上图的样式注释掉,然后在App.vue中加入这些

这样他在某些地方能满足你的要求,但是某些地方不能,比如你的标题

3  保持滚动条位置

我们希望页面切回来的时候,保持滚动条的位置

实现的原理是这样的

  1. 在生命周期 mounted() 的时候,通过scroll事件将位置记录下来
  2. 在生命周期 activated() 的时候将记录下来的位置给路由
  3. 路由通过scrollBehavior()跳转页面位置

执行起来的这样的,首先你要保证HOME组件的活性(如果死了所以信息就都没了)

然后你的路由也需要有一个信息存放的地方,我们称其为元信息

之后处理发信息的一端,有下面几点需要注意

  • _.throttle是lodash的节流,滚动事件一秒会触发很多次,我们让其半秒触发一次就够用了
  • 在切换的时候会触发滚动事件,而且会滚动到0,这个时候就必须要加入判断条件了,如果你是手动滚上去的,那么window.pageYOffset会是0.0003这样的数,所以不影响手动滚上去的效果
  • 你不需要担心下拉刷新位置是0的情况,用户使用下拉刷新分为两种,一个是未滚动滚动条就刷新,那么位置就是0,可以实现,另一个是滚动过滚动条之后刷新,那么位置会是0.0003这样的数,与0的效果是一样的

最后让路由每次访问 /HOME 时跳转到元数据存储的位置

视频中返回的是 {x:0,y:0}这种格式,你把savedPostion打印出来,savedPostion是{left:0,top:0}这种格式,由于版本的不同格式会不同,具体使用方式需要看文档

4  打包项目

项目路径下输入 npm run build

在项目路径下会出现一个dist

打包后直接双击打开index.html是没有用的

因为你双击打开是file协议,你需要一个http协议

4.1  flask配合dist

我们可以搞一个flask做后端,起名为serve.py,让其与dist平级

serve.py内容如下

from flask import Flask
from flask import render_template #引入模板插件

app = Flask(__name__,
static_folder='./dist',  #设置静态文件夹目录
template_folder = "./dist",
static_url_path="")  #设置vue编译输出目录dist文件夹,为Flask模板文件目录
@app.route('/')
def index():
    return render_template('index.html',name='index') #使用模板插件,引入index.html。此处会自动Flask模板文件目录寻找index.html文件。
if __name__ == '__main__':
    app.run(
      debug=True,  # 调试打开
      host='0.0.0.0',  # ip
      port=5000,  # 端口
    #   ssl_context='adhoc',  # 默认SSL证书,实现https
      threaded=True,  # 多线程
    )
  • 参考 flask打开vue打包后的dist中index.html_flask配合dist_fangjiaji007的博客-CSDN博客

运行起来后端服务,再用浏览器访问端口可以看到页面了

4.2  以文件形式打开

可以在 vue.config.js 中加入publicPath为空的属性

这样双击就能打开了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做接口测试时遇到接口加密了该如何处理

对明文编码生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串。 摘要算法不要秘钥,客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。 对称加密 对称加…

C语言获取AIX单网卡的多IP地址

环境配置 在AIX上,可以使用smitty tcpip命令给单个网卡配置多个IP别名。操作步骤如下: 选择Further Configuration 选择Network Interfaces 选择 Network Interfaces Selection 选择 Configure Aliases 5.选择Add an IPV4 Network Alias 选择需要配…

Vue3:组合式写法入门

Vue3&#xff1a;组合式写法入门 Date: May 11, 2023 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script><script setup> imp…

超声波都应用在哪些领域中?功率放大器如何放大超声波?

超声波是声波的一部分&#xff0c;它的频率高于20kHz&#xff0c;是无法被人耳听到的声波&#xff0c;超声波与声波有共通之处&#xff0c;即它们都是由物体振动所产生&#xff0c;只能在介质中进行传播。无论是在自然界&#xff0c;还是人们的日常生活之中&#xff0c;超声波都…

Power BI DAX函数

1、聚合函数——由表达式定义的列或表中所有行的&#xff08;标量&#xff09;值&#xff0c;例如计数、求和、平均值、最小值或最大值。 函数说明APPROXIMATEDISTINCTCOUNT在列中返回唯一值的估计计数AVERAGE返回列中所有数字的平均值&#xff08;算术平均值&#xff09;AVER…

基于 Python 和深度学习技术实现的人体姿态识别

人体姿态识别是计算机视觉领域的一个重要应用&#xff0c;它通过识别人体的关键点和关节位置&#xff0c;能够准确地判断人体的姿态和动作。这项技术可以应用在很多领域&#xff0c;比如运动训练、医疗康复、安保监控等&#xff0c;为人们的生活和工作带来了很大的便利和效益。…

Fiddler抓包工具之fiddler设置弱网测试

弱网测试 概念&#xff1a;弱网看字面意思就是网络比较弱&#xff0c;我们通称为信号差&#xff0c;网速慢。 意义&#xff1a;模拟在地铁、隧道、电梯和车库等场景下使用APP &#xff0c;网络会出现延时、中断和超时等情况。 Fiddler弱网测试流程&#xff1a; 一、限速操作…

redis学习记录

前言 1. 什么是Redis&#xff1f;它主要用来什么的&#xff1f; Redis&#xff0c;英文全称是 Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xf…

代码里乐观锁与悲观锁

乐观锁与悲观锁区别 synchronized与cas举例 cas算法自旋 乐观锁原理&#xff1a;cas算法自旋 1.cas算法 2.自旋 乐观锁工具类 Atomiclnteger原子类incrementAndGet方法源码解析

React Fiber架构

说到Fiber&#xff0c;不得不说说他的发展史&#xff1a; React15 架构 React16之前的版本比对更新虚拟DOM的过程是采用循环递归方式来实现的&#xff0c;这种比对方式有一个问题&#xff0c;就是一旦任务开始进行就无法中断&#xff0c;如果应用中数组数量庞大&#xff0c;主…

红黑树及插入过程详解

推荐可视化插入、删除节点的二叉树网站&#xff1a;Red/Black Tree Visualization (usfca.edu) 1. 概述 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff08;Binary Search Tree&#xff09;。它在普通二叉搜索树的基础上通过引入额外的颜色属…

DragGAN图像生成原理与实现

DragGAN图像生成原理与实现 DragGAN模型是什么呢1. DragGAN背景介绍2. 模型方法2.1 算法原理2.1.1 Motion Supervision2.1.2 点跟踪 3. 实现部署步骤3.1 安装PyTorch3.2 安装 DragGAN3.3 运行 DragGAN Demo3.4 功能介绍 项目地址&#xff1a;https://github.com/Zeqiang-Lai/Dr…

衡量有效的质量保证过程的10个基本指标

作者 | Tania Zhydkova 在开发的世界中&#xff0c;有一个永恒的规则&#xff0c;那就是你无法改进无法衡量的东西。当然&#xff0c;这条规则也适用于质量保证。 所生产软件的阵列呈指数级增长&#xff0c;这意味着保证质量所需的测试覆盖率也在以同样的程度增长。这也导致了…

浅谈Web渗透测试

目录 背景介绍 漏洞挖掘 渗透测试 个人看法 Web 渗透测试方法构想 PTES 简介 Web “PTES” 前期交互 信息收集 漏洞建模 漏洞分析 渗透利用 测试报告 Web渗透测试实例 前期交互 信息收集 漏洞建模 漏洞分析 渗透利用 报告 本文包括 背景介绍&#xff0c;We…

上传作品并投票的小程序微信中的微信投票微信小程序

现在来说&#xff0c;公司、企业、学校更多的想借助短视频推广自己。 通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给用户发挥的空间激发参与的热情&#xff0c;又可以让商家和企业实现推广的目的&am…

IDEA 创建 Springmvc 项目

一、概述 在18年的时候就开始接触 SpringBoot &#xff0c;然后就一直在使用它。众所周知 SpringBoot 内嵌 Tomcat&#xff0c;后续再也没有单独新建过Web 项目。作为IDEA 的用户&#xff0c;总想要用它来建一个Web 项目自己跑一跑&#xff0c;但建项目不是我最终目的~~ &…

为什么那么多人劝退软件测试?月薪1万以上的就别点进来了

2023年已经过了快一半了&#xff0c;今天跟大家聊一聊软件测试薪资这个话题 和大家说一句掏心窝的话&#xff1a;直到现在&#xff0c;软件测试依旧是寒门改变命运的一个最佳选择之一&#xff0c;要不是怕被喷&#xff0c;我都想把之一去掉&#xff0c;因为想了半天&#xff0…

【Bert、T5、GPT】fine tune transformers 文本分类/情感分析

【Bert、T5、GPT】fine tune transformers 文本分类/情感分析 0、前言text classificationemotions 数据集data visualization analysisdataset to dataframelabel analysistext length analysis text > tokenstokenize the whole dataset fine-tune transformersdistilbert…

Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例应用

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…