碎碎念:
     好久不见,最近自己有些懈怠没更过多少博,主要原因之一是对自己学习方式的一些思考,翻看之前的博客多是记录学习笔记这反映出了自己对于前端还停留在学习-复习知识点的阶段压根没多少实践经验啊这让我有些惶恐,原因之二是前段时间接触并了解性地学习了amd,cmd模块,angular和vue,一些模板引擎,less预编译语言,以及开发相关的各种构建工具...讲真前端真的好杂,心有余而力不足有时就挺迷茫,所以这些仅仅只是接触是接触跟着官网了解学习并没有深入原理性的探索学习。
曾经我在一开始就尝试深入原理的学习,实践后发现这种学习方式并不适合初学新知识,对于新知识的学习应该还是要循序渐进由浅入深,想不通的点可以先放下到后来理解多了再领悟,不然一开始就探索原理会导致自己进入过度思考的误区深陷不出来,嗯,还是等有实践经验和时间的积累后自然而然就会想明白。就比如虽然我这次用VueJs和webpack工具流实现了一个简单的瀑布流组件,其实我是经历了如下心里路程:
1.因实验室项目需要学习了下瀑布流(JS方式)布局的实现,当然还有用纯css实现的方式(CSS3的学习--实现瀑布流),理清实现原理(瀑布流布局)后用HTML,CSS,JS快速实现了瀑布流的初版,对于JS的执行过程和页面的渲染过程我还是相对了解的于是也就没什么难度。

2.但是程序员不能总停留在编写这些没有复用的程序,开发过程效率低的阶段吧,他们说聚聚们都在玩转各种构建工具和框架,作为菜鸟的我碰巧最近在学习vueJS和Less,于是想把一些有趣的东西用vue写成组件的形式,一来作为一次自我尝试二来熟悉一下vue+webpack的开发流程(即使现在的我对于webpack的执行机制还是有些云里雾里的)。

3.于是需要对瀑布流小项目进行包装,vue框架还好本质上还是JS嘛,因为多了一层webpack构建工具让这个小项目看起来略复杂(如果你要究webpack的执行机制的话)。但是现阶段作为初学者的我只是会用但并没吃透webpack的原理,这个不急,项目先实现了再说。

4.对于nodeJS和npm,AMD,CMD,ES6有所了解这是前提,之后该项目需要用到如下技术和知识,没关系用的时候再翻看文档

vue-cli项目引用.vue组件

安装 | vue-router文档 npm package

Less快速入门

Vue组件

用vue-cli初始化本项目,和webpack搭配完成一套集开发,测试,发布的流程(简单起见我的项目省略了测试的步骤);
vue-router用于index主页的路由管理,因为之后想把VueComponent做成一个项目用来收纳各种有趣的组件,Waterfall.vue只是本次尝试实现的一个组件模块,后续可能还会有其它的组件;
Less用于Waterfall.vue组件中css的编写。

项目代码

Waterfall.vue组件的完整代码如下(后期可以完善ajax请求数据加载的功能):

<template><div id="wf"><div v-for="item in items"><img v-bind:src="item.src"></div></div>
</template><script type="text/javascript">
/*** init*/
var $items, itemWidth, time;
window.addEventListener('resize', function(){clearTimeout(time);time = setTimeout(function(){wf.arrange();}, 500);
});/*** 时间大小的设置决定是先加载img还是arrange布局*/
setTimeout(function(){$items = document.querySelectorAll('#wf div');itemWidth = $items[0].offsetWidth;wf.arrange();
}, 0);/*** 随机高度,随机图片,布局函数*/
var wf = {rdmImg: function(){var width = Math.floor(Math.random() * 100) + 300,height = Math.floor(Math.random() * 500) + 300;return "http://placekitten.com/" + height + '/' + width;},rdmHeight: function(){return Math.round(Math.random() * 200) + itemWidth;},arrange: function(){var viewWidth = document.documentElement.clientWidth || document.body.clientWidth,cols = Math.floor( viewWidth / itemWidth );//存放每列当前长度的数组并初始化var colsHeight = [];for(var i = 0; i< cols; i++){colsHeight.push(0);}//安置每一项item$items.forEach( function(ele, idx) {var curHeight = colsHeight[0], col = 0;for(var i = 0; i< colsHeight.length; i++){if(colsHeight[i] < curHeight){curHeight = colsHeight[i];col = i;}}ele.style.left = col * itemWidth + 'px';ele.style.top = curHeight + 'px';ele.style.height = wf.rdmHeight() + 'px';//console.log(ele.querySelector('img').src); // http://localhost:8080/
colsHeight[col] += ele.offsetHeight;});},
}/*** export数据层*/
var items = (function(){var arr = new Array();for(var i= 0; i< 10; i++){var img = {};img.src = wf.rdmImg();arr.push(img);}return arr;})();
export default{data () {return {items: items,}}
}</script><style lang="less">
@width: 200px;
@padding: 20px;#wf{position: relative;margin: 0 auto;div{width: @width;position: absolute;top: 0;left: 0;padding: @padding;border: solid 1px grey;border-radius: 4px;.transition(left 1s);img{width: 100%;position: relative;top: 50%;transform: translateY(-50%);}}
}.transition(@transition){-webkit-transition: @transition;-moz-transition: @transition;-o-transition: @transition;transition: @transition;
}
</style>

View Code

完整项目放于github:https://github.com/venoral/VueComponent

效果图:index主页略丑,仅实现路由功能了,后期会完善的。

最后想给自己说的话就是
      有想法就去实现啊,list列了一大堆而拖欠的人不配拥有想法。

转载于:https://www.cnblogs.com/venoral/p/5613921.html

vuejs和webpack项目(VueComponent)初尝试——瀑布流组件相关推荐

  1. (一)KitJs瀑布流组件特点

    (一)KitJs瀑布流组件特点 1. 瀑布流形式呈现图片加载,鼠标滚动到底加载新的数据 2. 瀑布条数随窗口大小改变而改变,支持任意缩放窗口 (二)使用方法 core需要引用kit.js,IE下通过条 ...

  2. js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...

  3. swiper 定义放多少张图片_小程序瀑布流组件:支持翻页与图片懒加载

    (给前端大全加星标,提升前端技能) 作者:老人羽海 https://segmentfault.com/a/1190000022680541 电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重 ...

  4. react-native-waterfall-flow 高性能瀑布流组件

    react-native-waterfall-flow React Native 高性能瀑布流组件 特性 性能方面表现突出,渲染速度快,滚动体验良好 无需手动设置item高度,一切计算工作由组件内部完 ...

  5. 小程序swiper怎么让内容撑开高度_小程序瀑布流组件:支持翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...

  6. 教你如何实现一个完美的移动端瀑布流组件(附源码)

    背景 瀑布流是大家日常开发过程中经常遇到的一个场景,我们公司内部的组件库中也提供了一些解决方案.但这些方案适用场景都很单一,且每个实现方案都或多或少存在一些问题,基于此,我们设计与开发了一个兼容多场景 ...

  7. 【Web技术】1206- 如何设计一款支持懒加载的瀑布流组件?

    前言 瀑布流布局算是一种比较流行的布局,参差不齐的多列结构,不仅能节省空间,还能在视觉展示上错落有致不拘一格.在一次业务需求中,找了几个开源的瀑布流组件,在使用的过程中总会有点小问题,便开发了此组件. ...

  8. 【实战】1364- 实现一个完美的移动端瀑布流组件(附源码)

    背景 瀑布流是大家日常开发过程中经常遇到的一个场景,我们公司内部的组件库中也提供了一些解决方案.但这些方案适用场景都很单一,且每个实现方案都或多或少存在一些问题,基于此,我们设计与开发了一个兼容多场景 ...

  9. Android 自定义View 手写瀑布流组件FlowLayout

    目录 FlowLayout实现关键步骤: 1.创建一个view继承自ViewGroup 2.重写并实现onMeasure方法 3.重写并实现onLayout方法 纸上得来终觉浅,绝知此事要躬行. 动手 ...

最新文章

  1. Cell | 小基因开启微生物组研究新领域——大规模鉴定微生物基因组编码的小蛋白质...
  2. c语言自动机的建立,C语言最优状态机规范
  3. AviCAD 2020 Pro v20.0中文版
  4. logback的使用和logback.xml详解[转]
  5. 数据结构进阶篇-跳表
  6. 采用GDI生成Code39条形码
  7. Visual Studio 安装失败
  8. Linux 操作系统开篇!
  9. 2007年春节,祝朋友们:身体健康,万事如意! 度过一个愉快春节!
  10. 《HTTP权威指南》读书笔记---HTTP概述
  11. vue + web 前端访问后端,跨域问题解决方案
  12. hyperv创建ubuntu20.10 ubuntu18.04虚拟机
  13. excel合并多个工作表_EXCEL动态合并工作表,操作其实很简单
  14. 每日一思(2022.5.19)——前无古人后无来者
  15. 关于计算机网络的英语演讲稿,幽默英语演讲稿
  16. CDA数据分析师认证辅导课
  17. led照明灯哪个牌子的比较好?质量超好的LED护眼台灯推荐
  18. 全栈工程师学习路线(自用)
  19. 惠普HP Color LaserJet Pro M454dn 打印机驱动
  20. e680i linux终端,E680I刷机说明

热门文章

  1. windows7环境下的http-server的问题 排查
  2. PyQt5-关闭窗体显示提示框(窗口界面显示器上居中)-5
  3. Scrapy shell调试网页的信息
  4. 4-10 :selected选中状态选择器
  5. 从零开始编写自己的C#框架(9)——数据库设计与创建
  6. Creating a Jabber Client using the agsXMPP Library
  7. 嵌入式Linux驱动程序
  8. Flash中如何使用滤镜
  9. iPhone屏幕知识点
  10. 用JavaScript实现动态省市县三级联动