Vue-Waterfall-Easy插件详细使用教程

2023-05-16

前言

自己在做信息管理系统后台所遇到的一些问题,困扰了我好几天,于是将这个用法记录下来,希望能够大家在学习vue的道路上一路长虹。我想要展示一些照片,展示大学课余生活以及一起参加活动的一些片段。当然,我们百度搜照片他们就是一些瀑布流的布局。首先瀑布流分为等高瀑布流、等宽瀑布流等。而且我们还发现百度搜出来的照片下滑就可以看到更多的照片,这就用到了懒加载,加载更多的照片,来展示。我现在用的是vue来写管理系统后台,自然,我们需要用到Vue-Waterfall-Easy插件,它的优点就在于我们不用去再封装懒加载的部分内容,我们只需要拿到数据,发送axios请求对应的数据就可以了。

安装

npm install vue-waterfall-easy --dev--save

使用插件

<template>
  <div id="content">
  	 <!-- 使用组件 -->
    <vue-waterfall-easy></vue-waterfall-easy>
  </div>
</template>
<script>
// 第一步:导入组件
import vueWaterfallEasy from "vue-waterfall-easy";
export default {
  name:'express',
  // 注册局部组件
  components:{
    vueWaterfallEasy
  }
 }
</script>

重要细节

组件绑定参数

  • imgsArr : 要求内容是一个数组,数组中的元素为一个个对象,对象最起码包含两个键值src、href src代表要展示图片的地址,href代表点击图片将会跳转的路径
  • getData(函数):为scrollReachBottom提供的事件,简单来说就是下拉时加载更多照片,然后对此就行数据的拼接。当然文档中也有说明,有一个是替量更新,有一个是增量更新。当然,官方文档中说我们在开发过程中更多的就是使用增量更新,比较省资源。

布局要求

父级需要设置一些样式,才能显示瀑布流,要不然可能什么都不会显示。当然,你所遇到的可能和我的不太一样,你可以改css样式来达到自己写的网页效果。具体看自己如何写

#content{
  position: absolute;
  top: 80px;
  bottom: 0;
  left: 250px;
  width: 80%;
}

说完了这些,想必觉得都很简单吧,接下来我们看下面的内容,自己边写接口边写网页就觉得还挺难的。我的接口使用nodejs+express+json开发的。我也是一个刚入前端的小白,接口写的马马虎虎。数据全靠json去模拟,没有用数据库。

imgs.json:

很重要,刚开始我一直想着怎么通过api接口返回这些图片,后来一想通过这个可以解决我想要的,然后我就把这些图片放在了本地服务器上面,也就是phpstudy上面,然后这样来完成对图片的请求。当然这个问题困扰了我好久,比较深刻。也算是自己比较愚钝吧。大佬们轻喷

[
  {
    "src": "http://localhost/img/1.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/2.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/3.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/4.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/5.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/6.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/7.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/8.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/9.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/10.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/11.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/12.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/13.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/14.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/15.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/16.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/17.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/18.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/19.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  },
  {
    "src": "http://localhost/img/20.jpg",
    "href": " /test",
    "info": "一些图片描述文字"
  }
]

api接口具体内容

// express 框架
const express = require('express')
// 定义路由
const router = express.Router()
// imgs数据
const score_info = require('../data/imgs.json')
const success_data = {
  data:score_info,
  meta:{
    status:200,
    msg:"请求成功"
  }
}

router.get('/imgs',(req,res)=>{
  res.send(success_data.data)
})
// 导出路由
module.exports = router

app.js

const express = require('express')
// 对post参数进行解析
const bodyParser = require('body-parser')
const app = express()
// 解决跨域问题
const cors = require('cors');
// 导入路由
const imgs = require('./router/imgs')
// 使用路由
app.use('/api',imgs)
const hostname = 'localhost';
const port = 8888
app.listen(port,()=>{
  console.log('Server running at http://'+hostname+':'+port+'/')
})

Express.vue

<template>
  <div id="content">
    <!-- 使用组件 -->
    <vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData">
    </vue-waterfall-easy>
  </div>
</template>

<script>
import vueWaterfallEasy from "vue-waterfall-easy";

export default {
  name:'express',
  data(){
    return {
      imgsArr:[]
    }
  },
  components:{
    vueWaterfallEasy
  },
  created(){
    this.getData()
  },
  methods:{
    getData(){
// 上面定义的api接口,直接发起get请求api/imgs,访问成功则会返回我们想要的数据。然后通过增量更新数据。就完成了瀑布流。
// 当然,官方文档说的也比较清楚,一般懒加载就是通过group的数来进行请求更新,我这里并没有用这个。我感觉明白到这个地方就足够了。剩下的就	
//是通过group的值来控制返回的数据就ok
      this.$http.get('api/imgs').then(res=>{
        console.log(res.data);
          this.imgsArr = this.imgsArr.concat(res.data)
      })
    }
  }
}
</script>

<style>
#content{
  position: absolute;
  top: 80px;
  bottom: 0;
  left: 250px;
  width: 80%;
}
</style>

结尾

到这里我们就可以看到vue瀑布流的效果了。下面给大家看看最后的样子吧,是不是比较炫酷啊,我的文章也到了尾声了,大家觉得有错误的可以指出来,我们共同学习,共同进步。谢谢大家的观看

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue-Waterfall-Easy插件详细使用教程 的相关文章

  • vue3.0删除node_modules 无用的依赖

    安装插件 npm i depcheck 查看无用的插件 npx depcheck 对应删除 npm uninstall kd layout
  • vue3 vue-router 钩子函数

    全局路由守卫 vue router4 0中将next取消了 可写可不写 return false取消导航 undefined或者是return true验证导航通过 router beforeEach to from gt next是可选参
  • vue+C#后台上传excel处理数据

    比较简洁的excel处理方法 希望对大家有所帮助 1 界面
  • java上传图片、文件和富文本内容到服务器上,查看和删除文件

    1 上传富文本内容 前端的富文本内容传到后端 将富文本内容拼接成html页面代码 将内容转换成html文件上传到服务器指定位置进行存储 String profile data xiangmu linux服务器上项目文档存放目录 String
  • element-plus中 el-image :src属性发送get请求

    项目场景 Element plus 中
  • Vue + Element UI 前端篇(十一):第三方图标库

    Vue Element UI 实现权限管理系统 前端篇 十一 第三方图标库 使用第三方图标库 用过Elment的同鞋都知道 Element UI提供的字体图符少之又少 实在是不够用啊 幸好现在有不少丰富的第三方图标库可用 引入也不会很麻烦
  • ip正则表达式

    var Sip rule value callback gt if 2 5 0 5 0 4 d 0 1 d 1 2 2 5 0 5 0 4 d 0 1 d 1 2 3 test value false callback new Error
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • Vue项目的部署(服务器)

    Vue项目的部署 服务器 前几天帮朋友写了一个可以动态查看地点温度的前端项目 目前已经部署上线了 访问链接点这里 服务器是朋友的 倒时候打不开会很正常 说不定又使用服务器玩大数据项目去了 效果图 图一 图二 当然 温度也都是实时跟新的 而且
  • Vue出现弹出层时,禁止底部页面跟随滑动

    背景 最近在写一个vue项目 当出现弹出层时 发现底部页面跟随滚动 但是产品不想要这种效果 于是找各种资料 发现很多说法 但是试了试 发现有的根本就不行 比如说有人提出用vue中提供的 touchmove prevent方法来解决 但是我试
  • vue element select下拉框树形多选

    components 文件下新建 SelectTree文件 index vue SelectTree index vue
  • 前端的工程化、模块化和组件化

    什么是工程化 工程化是一种思想而不是某种特定的技术 当然我们在实现项目工程化的过程中 我们也会去使用一些技术 前端工程化是使用软件工程的技术和方法来对前端的开发流程 技术 工具等进行规范化 标准化 其主要目的为了提高效率和降低成本 即提高开
  • 大数据毕业设计之前端03:logo、menu的折叠展开实现

    关键字 BuildAdmin pinia logo aside menu 菜单折叠 Vue ElementUI 前言 上一篇文章中 借助aside的实现讲了一些开发的小技巧 以及css的解读 本篇文章主要写一下如何填充aside的内容 as
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • (vue)el-popover鼠标移入提示效果

    vue el popover鼠标移入提示效果 效果 代码
  • vue项目日期处理day.js

    dayjs安装 1 npm 安装 npm install dayjs save 2 项目使用 import dayjs from dayjs ES 2015 dayjs format 使用介绍 1 秒 获取或设置秒 接受0到59的数字 如果
  • 拓展:vue 父组件调用子组件方法ref(且父组件可通过ref调用的方法传值给子组件)

    1 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 一 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 div class formBtn fl 111 div div
  • vue项目日期处理day.js

    dayjs安装 1 npm 安装 npm install dayjs save 2 项目使用 import dayjs from dayjs ES 2015 dayjs format 使用介绍 1 秒 获取或设置秒 接受0到59的数字 如果
  • 根据点值更改瀑布图颜色

    我想根据图表值更改瀑布图的颜色 例如 如果值为负 则设置红色 如果值为正 则设置绿色 我从下面得到了代码excel vba根据点值更改数据点的条形图颜色 https stackoverflow com questions 13849488

随机推荐