微信小程序项目的总结集合(美图网),2024-2024蚂蚁金服Web前端面试真题解析

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

this.request({

url: ‘http://service.picasso.adesk.com/v1/wallpaper/album’,

data: this.params

}).then(result => {

//当没有请求数据后,改变dataMore的状态

//并且return

if(result.res.album.length===0){

this.dataMore=false;

return;

}

//下面进行,表示result.res.album还有数据,那么进行叠加数据操作

// console.log(result);

if(this.banner.length===0){

//防止多次请求时其重复赋值

//这个是同个页面的其他请求数据

this.banner = result.res.banner;

}

//叠加数据

this.album = […this.album,…result.res.album]

// console.log(this.banner)

})

},

/触底事件/

lower(e){

// console.log(e)

if(this.dataMore){

//1.改变请求参数的数据

this.params.skip+=this.params.limit;

//2.重新发送请求

this.getList();

}else{

//当dataMore为false时,表示没有数据了,那么就弹出提示

uni.showToast({

title:‘没有数据了哦!’,

icon:‘none’

})

}

}

}

}

显示便签:

<scroll-view scroll-y @scrolltolower=“lower” class=“album_scroll_swiper”>

{{item.name}}

{{item.desc}}

+ 关注

结果:

举例

在这里插入图片描述

在这里插入图片描述

3.解决文字一行显示多出部分显示省略号,却撑开了盒子的问题

思路:给其父盒子加上

overflow:hidden;

文字一行显示的样式:

white-space:nowrap; 不换行

overflow:hidden; 截掉多出的部分

text-overflow:ellipsis; 显示省略号

在这里插入图片描述

4.实现A页面跳转到B页面时,传递参数给B页面
解析说明

1.在navigator标签中,指定url可以实现页面的跳转,在指定的url地址中,可以使用’?参数=XXX’的形式为指定地址的页面传递参数(这个参数一般作为一个标识符,比如我传递id,那么这个id一般用来再另一个页面中作为请求参数的id----${id},用来发送异步请求)

2.这里假设页面A使用navigator标签跳转到页面B,并向页面B传递参数id

3.那么再页面B中便可以在周期函数onLoad(options)中接受该参数

4.那么在页面B中根据id发送异步请求,根据请求得到的数据,然后动态渲染到页面上

比如请求地址这里就是要求指定id:

url: http://service.picasso.adesk.com/v1/wallpaper/album/${this.id}/wallpaper

在这里插入图片描述

在这里插入图片描述

结果演示:

打印输出

console.log(options)

在这里插入图片描述

后期处理后,页面最终效果

在这里插入图片描述

代码:

js部分:

template部分:

{{album.name}}

关注专辑

{{album.user.name}}

{{album.desc}}

总结:

得到由页面A传递过来的参数,

1.这里使用options.id获取

2.获取后,赋值给全局data下的id

3.然后便可以使用这个指定的id,调用request发送异步请求

4.发送异步请求,获取得到指定数据,然后进行渲染

(根据你点击A页面不同项,那么传过去B页面的id也不一样,因此获取到的数据也是特定的,即实现了两者之间的关联)

注意项

es6语法中,``一般都会于 结 合 使 用 , {}结合使用, 结合使用,{}包裹一变量

在这里插入图片描述

5.解决后台返回的数据时隐藏的json格式时

使用text标签

在这里插入图片描述

6.封装组件,多处使用
6.1需求分析:
6.1.1 实现功能

假设父组件为F(下图中的推荐页面中的图片,专辑详情页面),go-detail为组件页面A,imgdetail为组件页面B

go-detail组件主要实现以下功能

1.保存父组件F传过来的数据(list\index)

2.数据接收到将其保存到全局数据中(getApp().globalData)

3.实现跳转到页面B,页面B便可以获取到全局数据,然后整理数据之后,进行页面展示)

4.页面B时最终的展示效果,go-detail只是作为一个中间体,实现特定的功能)

在这里插入图片描述

在这里插入图片描述

上面两张图片都会跳转到图片详情页面,只不过需要一个实现一样功能的go-detail组件为中间体,在跳转至图片详情页面imgdetail

6.2封装组件的原因
  • 实现一样的功能

  • 多组件用到(月份和热门部分和专辑详情页面都有用到)

  • 提高代码的复用性

6.3公共组件的设计
6.3.1 公共组件go-detail代码部分(A)

页面实现template部分

<navigator @click=“handleClick”>

说明:这里的solt插槽,用户父组件中放置图片,是的点击图片时实现跳转

js逻辑部分(这里主要是现实点击事件handleClick)

6.3.2 父组件的使用(F)

1.在专辑详情中使用

2. 在推荐页中的热门图片的使用

热门

在这里插入图片描述

6.3 图片详情页面(B)

主要逻辑部分:

onLoad() {

const {

list,

index

} = getApp().globalData;

console.log(“由父组件传递过来的list\n”,list)

this.imgDetail = list[index];

console.log(“经过处理后的list–imgDetail\n”,this.imgDetail)

//moment函數接收的是毫秒,而傳過去的值为秒,因此需要*1000

// 将时间戳atime:1511308982----转换成-----xx年前的格式(配合moment.locale(“zh-cn”)使用)

this.imgDetail.cntime = moment(this.imgDetail.atime * 1000).fromNow();

//改变评论数据中的时间格式,并将其添加为cntime属性

this.hot.forEach(v => v.cntime = moment(v.user_atime * 1000).fromNow())

},

说明:

在这里插入图片描述

主要显示部分

在这里插入图片描述

图片详情页面(B)的使用步骤:

  • 先获取go-detail存储的全局数据

  • 对数据进行处理(因为父组件Fchuanguol的list时一个多个对象的数组,

  • 根据索引我便可以获取到特定的数据

  • 然后在页面显示的时传过来指定索引index数据对象数据

6.4总体结构

在这里插入图片描述

7.使用common.js处理时间格式

加粗样式

举例:

  • 比如后台返回的数据时时间戳的形式,例如:atime:1511308982

  • 那么我希望将其转换为我需要的如上图的格式(或者其他格式,可以查看相关的文档进行实现)

  • 将时间戳----转换成-----xx年前的格式(配合moment.locale(“zh-cn”)使用,因为原始返回的时英文格式)

import moment from ‘moment’;

//设置语言为中文

moment.locale(“zh-cn”)

export default {

onLoad() {

const {

list,

index

} = getApp().globalData;

this.imgDetail.cntime = moment(this.imgDetail.atime * 1000).fromNow();

//改变评论数据中的时间格式,并将其添加为cntime属性

this.hot.forEach(v => v.cntime = moment(v.user_atime * 1000).fromNow())

},

在这里插入图片描述

结果:

在这里插入图片描述

8.在页面中,对于结构相同的模块,为其设置相同的类名class,使得样式的复用
8.1 举例

在这里插入图片描述

在这里插入图片描述

9.改变数组元素特定属性值,并以新的属性返回

需求:

我想循环改变hot数组中每个对象元素的时间格式,并且将改变的值以新属性ctime返回

在这里插入图片描述

在这里插入图片描述

10. 将图片和视频下载到本地
10.1 uni.downloadFile(OBJECT)相关说明
  • 实质发送异步请求

  • 返回的时一个Promise对象

在这里插入图片描述

在这里插入图片描述

10.2 下载图片
  • 1.使用uni.downloadFile(),将远程文件下载到本地内存中(小程序会返回一个临时路径,这里使用const {tempFilePath} = result1[1];结构出临时路径,然后这个路径用于2.中的板寸到本地)

  • 2.然后使用uni.saveImageToPhotosAlbum({}),将小程序内存中的临时文件下载到本地上,

  • 实现逻辑代码

  • 在这里插入图片描述

说明:我这里使用的时ES7的async await语法,也可以使用官方提供的方式,

上面的代码并没有对用户点击取消下载时做处理,下面进行如下优化:

  • 页面

<view class=“down_button” @click=“handleDownload”>

下载图片

  • 逻辑

//点击下载图片按钮,触发事件

async handleDownload() {

// uni.downloadFile({url:this.imgDetail.img}).then(result=>{})=====等价于async awiat

// 1.将远程文件下载到本地内存中(小程序会返回一个临时路径)

//触发下载图片的事件,然后弹出

uni.showLoading({

title: “下载中”

})

const result1 = await uni.downloadFile({

url: this.imgDetail.img

})

const {

tempFilePath

} = result1[1];

// console.log(tempFilePath)

//2.将小程序内存中的临时文件下载到本地上

uni.saveImageToPhotosAlbum({

filePath: tempFilePath,

success:()=>{

// console.log(‘下载成功’)

uni.hideLoading(

uni.showToast({

title: “下载成功”,

})

)

},

fail: () => {

// console.log(‘下载失败’)

uni.hideLoading(

uni.showToast({

title: “取消下载”,

})

)

}

})

}

  • 结果:

在这里插入图片描述

在这里插入图片描述

  • 当用户点击保存时,文件保存后关闭加载中的提示,并弹出下载成功的提示;

  • 当用户点击取消时,关闭加载中的提示,同时弹出取消下载的提示

10.3 下载视频(同理与下载图片)
  • 页面

<view class=“onload_button” @click=“onLoadToLocal”>

下载高清

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》

前端面试题宝典

前端校招面试题详解

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Njg3MjEyMQ==,size_16,color_FFFFFF,t_70)

在这里插入图片描述

  • 当用户点击保存时,文件保存后关闭加载中的提示,并弹出下载成功的提示;

  • 当用户点击取消时,关闭加载中的提示,同时弹出取消下载的提示

10.3 下载视频(同理与下载图片)
  • 页面

<view class=“onload_button” @click=“onLoadToLocal”>

下载高清

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》

[外链图片转存中…(img-ziPe7GpS-1713589969714)]

[外链图片转存中…(img-t01MsVzI-1713589969714)]

[外链图片转存中…(img-pM9tL1Vb-1713589969715)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-3nbXMylC-1713589969715)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值