饿了么element 饿了么饿了么饿了别叫妈
饿了么开源的骨架屏插件原理分析
Skeleton Screen(骨架屏) 指的在页面数据尚未加载前别叫先给用户展示出页面的大致结构,直到请求数据返回后再渲染页面,补充进需要显示的数据element内容。常用于内容列表页。
饿了么element 饿了么饿了么饿了别叫妈
饿了么element 饿了么饿了么饿了别叫妈
一、page-skeleton-webpa殠ck-plugin
page-skeleton-webpack-plugin 是一款由 ElemeFE 团队开发的webpack 插件,该插闳件的目的是根据你项目中不同的路殠由页面生成相别叫应楱的骨架屏页面,并将骨架屏页面通过 webpack 打包到对应的静态路由页面中。
二、插件自动生成骨架屏的主要原理
先demo展示一下如何荭自动生成骨架屏,后续再通过代码具体分析吜如何生成 侴骨架屏:
安装运行环境
依赖环境:
安雠装puppeteer可参考:
启动puppeteer并打开要生成骨架屏的页面
接下来分析makeS么kele疝ton是如何生豁成骨架屏代码
入口代码在 page-skeleton-webpack-plugin/src/skeleton.js
初始化核心逻辑:
具体各块的骨架结构如何生成的接下来会一一分析
1、SVG块生成骨架结构
非隐藏的元素,会把 svg 元素内部所有元素删锕除,减少终生成的酬骨架页面体丒积魍,其次,设置svg 元素的羴宽、高和形状等。
2、按钮块生成骨架结构
button块的处理相对比较简单,去除边框踌和阴影,设定好统一的背景色和文字,按钮块就处理完成了。
3、背景块生成骨架结构
背景块指有背景图或者背景色的元素。统一设置背景色即可。
4、块生成骨架结构
5、伪元素魍块处理骨架结构
6、文本块处理骨架结构
文本块相对处理起来会比较复杂些,所以放到来夿讲。
文本块定梼义腌:任何包含文本的元素都是文本块。
计算文本块黐的文本行数、文字高度(即要绘制的文本块 媸高度=fontSize):
通过线性渐变生成条纹背景的文本块:
单行文本需喌要计算文本宽度和text-aligin属性
以上就是elementUI开源的骨架屏插件的主要逻辑啦。当然还有涉及工程化相关逻辑这里就没贴出来了,后续可以再慢慢探讨。
我抽空把生成骨架屏的逻辑单独抽出来,方便大家定制对骨架屏的工程化处理及调试
Vue项目 UI框架介绍(第六天上)
1.什么是elementUI?
E搒lementUI是饿了么前端团队推出的篪一款基于Vue的桌面端UI框架踌
大白话: 和Bootstrap一样对原生的HTML标签进行了封装, 进行了美化, 让我们能够专注于业务逻辑而不是UI界面
2.梼elemen炿tUI使用
3.elementUI优化
默认情况下无论我们有没有使用到某个组件, 在打包的时候都会将elementU镬I中所有的组件打包到我们的项目中
这样就导致了我们的项目体积比较大, 用户访问比较慢
4.如何优化
为了解决这个问题, elementUI推出了按需导入, 按需打包. 也就是只会将我们用到的组件打包了我们的项目中
没有用到的组件不会被打包
1.什么是MintUI?
MintUI是饿了么前端团队推出的一款基于Vue的移动端U框架
大白话:和Bootstrap一样对原生的HTML标签进丒行了封装,让我们能够专注于业务绉逻辑懤而不是UI界面
2.mintUI使用
3.注意楱点: MintUI和 瞓Elem幚e啻ntU歯I的个不同, 就是在MintUI中需要通过来告诉Vue我们需要使用
1.什么是Vant?
在使用MintUI的过程中发现有很多的坑,所以个人不在移动端中选择Mi饿了ntU 峁IXant是有赞薨前端开发团队又推出的一款 基于Vue的移动 砺端UI框架
大白话:和Bootstrap一样 侴对原生的HTML标签进行了封装,进行了美化,让我们能够专注于业务逻辑而不是UI界面
V伬ue.use只能use插件,不能use组件
那牰么如何将一个㤘组件封装成一个插件敕呢?
1.Vue.us晷e()做了什么事情?
Vue.use的作用是注册一个Vue插件(注册组件), Vue.use必须在new Vue之前使用
2.什么时候需要定义插件?
当某亜一个组蜯件或者功能经常需要被使用到时, 我们就可以将这畴个组件或者功能定义成疝一个插件袤
例如: 网络加载指示器
3.如果自定义一个褫插件?
在vue+element中如何实现表格分页
众所周知Element 是一套 Vue.js 后台组件库,它能够帮助你更轻松更螭快速地开发后台项目。下面这篇文章主要给大家介绍了关于利用vue + element实现表格分页和前端搜索的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
前言
ElementUI魉是饿了么前端开源的一个基于Vue的前端框架,已经帮我们封装好了一系列功能性篪的组件,比如栅格系胄统、表格、俦表单、树形菜单敕、通知等。对于搞后台管理界面的项目,特驺别是不需要考虑兼容ie8、ie9以下的项目、ElementUI是一个不错的选择。
而且ElementUI的文档写得十分详尽,参照demo可以很快上手。
本文主要介绍了关于vu饿了e + e魉lement实现表格分页和前端搜晷索的相么关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
实现思路
1.籀前端后台管理会存在很多表格,表格数据过多就需要分页;嚟
2.前镑端交互每次搜索如果敕都请求会加大饿了篪的压力,所以在数据量不是很大的情况下可以一次性将数据返回,前端做检索
3.下面贴胄上一个demo
示例代码
:data="tableDataEnd" border > prop="date" label="日期" width=镑"180"> prop="n吜ame" label="姓名" width="180"> prop绉="address" label="地址">
@size-change="handleSizeChange紬" @current-change="handleCurrentChange" :current-page="cu呪rrentPage" :page-sizes="[1, 2, 3, 4]" :p怞ag砥e-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalItems">
export default {
data() {
return {
tableDataBegin: 瘛[
{date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄"
},
{砥da螭te: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄"
},
{date: "2016-05-03",
name: "王二羴虎",
address: "上海市普陀区金沙江路 1519咮 弄"
},
{date: "2016-05-04",
name: "王二虎",
address: "上海市普陀区金沙江路 1516 弄"
},
{d炿ate: "2016-05-05",锕
name: 腌"王三虎",
address: "上海市普陀呪区金沙江路 151砾8 弄"
},
{date: "2016-薨05-06",亜
name: "王喌三虎",
address: "上海市普陀区金沙江路 1517 弄"
},
{date: "2016-05么-07",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},妈
{date: "2016-05-08",
name: "王小虎闳",
address: "上海市普陀区金沙江路 1516 弄"
}],
tableDataName: "",
tableDataEnd: [],
currentPage: 4,
page墀Selementize: 2,
totalItems: 0,
filterTableDataEnd:[],
flag鳝:false
};
},
creat 骤ed() {
this.totalItems = this.tableDataBegin.length;
if (thi歯s.totalItems > this啻.pageSize) 砾{
for (le敕t index =坻 0; index 瞓 < this.pageSize; index++) {
this.tableDataEnd.push(this.t畴ableDataBegin[index]);
}} else {
this.tableDataEnd = this.t藿ableDataBegin;
}},
mods: {
//前端搜索功能菗需要区分是俦否检索,因为对应的字褫段的锕索引不同
//用两个变量接收currentChangePage函数的参数
doFilter(荭) {
if (this.tableDataName == "") {
this.$message.warning("查询条件不能为空!鸠");
return;
}this.t瘛ableDataEnd = []妈
//每次手动将数据俦置空,因为会出现多次点击搜索情况
this.鸱filterTableDataEnd伬=[]
this.tableDat别叫aBeg嗤in. 峁forEach((value, index) => {
if(value.name){
if黐(藿value.name鸱.ind魑exOf(this.tableDataName)>=0){
this.filterTableDataEnd雠.push(value)
}}
});
//页面数据改变重新统计数据数量和当前页
this.currentPage=1
this.totalItems=this.filterT酬ableDataEnd.length
//渲染表格,根据值
this.currentChangePa懋ge(this.filterTableDataEnd)
//页面初始化数据需要判断是否检索过
this.flag=true
},
openData镬() {},
handleSizeChange(怞val) {
conselementole.log㤘(`每页 ${val} 条`);
this.page 雠Size = va鳝l;
this.h鸠andleCurrentChan懋ge(this.currentPage);
},
hand幚leCurrent菗Change(val) {
consol夿e.log(`当前页: ${val}`)锕;
this.currentPage = val篪;
//需要判断是否检索
if(!this.flag){
this.currentChan 骤gePage(this.tableDataEnd牰)
}else{
this.curr搒entChangePage(this.filterTableDataEnd)
}}, //组件自带当前页码
curre竑ntChangePage(list紬) {
let from咮 = (this.currentP懤age -嗤 1) t偢his.pageSize;
let to = this.currentPage this.pageSize;
this.tableD嚟ataEnd = [];
for (; from < to; from++) {
if (峯list[from]) {
this.tableDataEnd 砺.push(lis 媸t[from]);
}}
}峯}
};
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
使用Vue.s俦et()如何实现数据动态响应
在vue中如何实现动态 雠绑定以及data返回路径
在vue中如何实现动态改element变静态以及请求网络
在Angular如何使用浏览器插件Batarang
在vue中预加籀载watch用法墀
在JS中如何实现offset和匀速动画
使用JS如何实现粘贴板功能偢
在JS中如何实现将html转为pdf功能
用vue一般都配合什么UI框架?
vue只是一个js库,不算框架,他不限制你使魑用使用UI框架,理论上你可以使用任意UI框架。常见的vue的UI框架有:elementUI(饿了么的UI框架么),Vux(微信UI风格),vue篪-strap,Vue-Blu等等。
element-ui是谁开源的?
袤ElementUI框架的开发者是饿了么前端团队。它是一套为开发者、设计师和产品准备的基于Vue3的桌面端组件库,ElementUI通过良好的封装,为开发豁者提供了一套完整的、丰富竑的组件库,可以非常方便的实现各类业务场景,比如数据加载与展示、表格、日历等。
element-妈ui和antd-vue哪个更好用
Element-ui是饿了饬坻么旗驺下出的一款 为设计师、开发者、产品开发的基于Vue的桌面端UI组件库;
Antd是 蚂蚁金服 饿了出的一款服务于企业级产品的设计,更专注于用户体验。
个蜯人建议:小项目用Element-ui;大项目用Antd
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。