行业动态
11>前端微信小程序常见面试题(附答案)
2024-03-24

1. 微信小程序组件的生命周期?

答案:

生命周期函数-onLoad: 页面加载

一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。

-onShow: 页面显示

每次打开页面都会调用一次。

-onReady: 页面初次渲染完成

一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。

-onHide: 页面隐藏

当navigateTo或底部tab切换时调用。

-onUnload: 页面卸载

2 简单描述下微信小程序的相关文件类型

答案:

微信小程序项目结构主要有四个文件类型,如下

.json 后缀的 JSON 配置文件

.wxml 后缀的 WXML 模板文件

.wxss 后缀的 WXSS 样式文件

.js 后缀的 JS 脚本逻辑文件

3、app.json 是对当前小程序的全局配置,讲述三个配置各个项的含义

答案:

pages字段 —— 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。

window字段 —— 小程序所有页面的顶部背景颜色,文字颜色定义在这里的

tab字段—小程序全局顶部或底部tab

4.小程序的wxss和css有哪些不一样的地方

答案:

新像素单位 rpx

样式可直接使用import导入

5:小程序有哪些参数传值的方法

答案:

给HTML元素添加data-*属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data-名称不能有大写字母和不可以存放对象;

设置id 的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值;

在navigator中添加参数传值。

6:小程序有哪些参数传值的方法?

答案:

一、给HTML元素添加data-*属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data-名称不能有大写字母和不可以存放对象

二、设置id 的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值

三、在navigator中添加参数传值

7:如何提高微信小程序的应用速度?

答案:

一、提高页面加载速度

二、用户行为预测

三、减少默认data的大小

四、组件化方案

8.微信小程序与H5的区别?

答案:

**条是运行环境的不同

传统的HTML5的运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能。

第二条是开发成本的不同

只在微信中运行,所以不用再去顾虑浏览器兼容性,不用担心生产环境中出现不可预料的奇妙BUG

第三条是获取系统级权限的不同

接系统级权限都可以和微信小程序无缝衔

9小程序获取场景值的方法

let options = wx.getLanchOptionsSync()

10 小程序onPageScroll方法的使用注意什么

由于此方法调用频繁,不需要时,可以去掉,不要保留空方法,并且使用onPageScroll时,尽量避免使用setData(),尽量减少setData()的使用频次。

11 小程序视图渲染结束回调

使用setData(data, callback),在callback回调方法中添加后续操作代码

12小程序同步API和异步API使用时注意事项

像wx.setStorageSync这种以Sync结尾的API为同步API,使用时使用try-catch来查看异常,如果判定API为异步,可以在其回调方法success、fail、complete中进行下一步操作。

13小程序对wx:if 和 hidden使用的理解

wx:if 有更高的切换消耗。

hidden 有更高的初始渲染消耗。

因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

14.小程序简单介绍下三种事件对象的属性列表

基础事件(BaseEvent)

type: 事件类型

timeStamp:事件生成时的时间戳

target:触发事件的组件的属性值集合

currentTarget:当前组件的一些属性集合

自定义事件(CustomEvent)

detail

触摸事件(TouchEvent)

touches

changedTouches

15.小程序的双向绑定和vue的异同?

答案:

大体相同,但小程序直接this.data的属性是不可以同步到视图的,必须调用this.setData()方法!

16小程序页面间有哪些传递数据的方法?

答案:

使用全局变量实现数据传递

页面跳转或重定向时,使用url带参数传递数据

使用组件模板 template传递参数

使用数据库传递数据

17.小程序wxml与标准的html的异同?

答案:

都是用来描述页面的结构;

都由标签、属性等构成;

标签名字不一样,且小程序标签更少,单一标签更多;

多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式

WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览

组件封装不同, WXML对组件进行了重新封装,

小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象。

18.小程序WXSS和CSS的异同?

答案:都是用来描述页面的样子;

WXSS 具有 CSS 大部分的特性,也做了一些扩充和修改;

WXSS新增了尺寸单位,WXSS 在底层支持新的尺寸单位 rpx;

WXSS 仅支持部分 CSS 选择器;

WXSS 提供全局样式与局部样式


1063568276