微信小程序面试题解析:原理、架构与开发技术

2024-06-09
来源:网络整理

之前准备过一些 Vue 面试常见问题,今天整理了一些小程序面试常见问题。

1.你知道微信小程序吗?简单描述一下小程序的原理。

微信小程序采用WXML、WXSS三种技术开发,其本质是一个单页应用,所有页面渲染、事件处理都在一个页面内进行,但可以通过微信客户端调用各种原生接口。

微信的架构是数据驱动的架构模型,它的UI和数据是分离的,所有的页面更新都需要通过改变数据来实现。

小程序分为 和 两部分,主体部分用于展示UI,另一部分用于处理业务逻辑、数据、接口调用,运行在两个进程中,通过系统层进行通信,实现UI的绘制和事件处理。

2.小​​程序项目主目录文件

..json是项目的配置文件,用于进行一些个性化的配置,比如界面颜色,编译配置等。

app.json是当前小程序的全局配置,包括所有页面路径配置、接口表现、网络超时、底部tab等。

.json配置小程序及其页面是否允许被微信收录;

它包含一个特定的页面。

wxml()是一套为框架设计的标签语言,结合基础组件、事件系统可以构建页面的结构。

wxss() 是用于描述WXML组件样式的样式语言。

app.wxss为全局样式,会应用到当前小程序的所有页面。

page.wxss只对当前页面有效;

app.js 小程序逻辑

js逻辑处理,网络请求

json 页面配置

3.小程序的双向绑定和Vue有什么区别?

小程序中 this.data 的属性不能直接同步到视图,必须调用:

这。({

//在这里设置

})

4. 小程序页面生命周期函数

页面加载完成时触发,一个页面只会调用一次,参数中可以获取当前页面路径中的参数(监听页面加载情况)

()页面显示/切入前台时触发(监听页面显示)

()页面首次渲染时触发,一个页面只调用一次,表示页面已经准备好,可以与view层交互了(监听页面首次渲染完成)

() 页面隐藏/进入后台时触发,例如底部tab切换到其他页面时,小程序进入后台等(监听页面隐藏)

() 页面卸载时触发。例如,当你转到其他页面时(监听页面卸载)

5. 微信小程序的优点和缺点

优势:

即用,无需安装,节省流量,节省安装时间,不占用桌面

依托微信流量,在推广传播上具有天然优势

开发成本比App低

为用户提供良好的安全性和用户体验

缺点:

用户留存和即用即走是优势,但也存在一些问题

入口比传统应用程序更深

限制较多,页面大小不能超过2M,不能打开10级以上的页面

依赖微信,无法开发后台管理功能

6.小程序中wxss和css有什么区别?

WXSS与CSS类似,但是在CSS的基础上进行了一些添加和修改。

尺寸(单位:rpx)

rpx 是响应式像素,可以自适应屏幕宽度,屏幕宽度指定为 ,例如上例中,屏幕宽度为 ,一共有750个物理像素,那么 = = 750个物理像素

使用@标识来导入外部样式,@后面跟着需要导入的外部样式表的相对路径,;表示语句的结束。

/** index.wxss **/ @import './base.wxss'; .container{ color: red; }

7.小程序页面间传递数据有哪几种方式?

(1)使用全局变量实现数据传递。在app.js文件中定义全局变量,将需要存储的信息存放在其中。

// app.js App({ // 全局变量 globalData: { userInfo: null } })

使用的时候直接使用()就可以获取存储的信息

(2)在使用wx.和wx.的时候,可以在URL中放一些数据,在新页面打开的时候进行初始化。

小程序开发解决异步时间问题_异步开发模式概念_异步开发模式

//pageA.js // Navigate wx.navigateTo({ url: '../pageD/pageD?name=raymond&gender=male', }) // Redirect wx.redirectTo({ url: '../pageD/pageD?name=raymond&gender=male', }) // pageD.js ... Page({ onLoad: function(option){ console.log(option.name + 'is' + option.gender) this.setData({ option: option }) } })

注意事项:

wx. 和 wx. 不允许跳转到选项卡中包含的页面

仅执行一次

(3)使用本地缓存

8. 小程序绑定微信公众号时如何判断用户唯一性

如果一个开发者有多个移动应用、网站应用、公众账号(含小程序),可以利用这个来区分用户的唯一性,因为只要是同一个微信开放平台账号下的移动应用、网站应用、公众账号(含小程序),用户的唯一性都是唯一的。也就是说,同一个用户在同一个微信开放平台下的不同应用,其ID都是相同的。

9.如何实现下拉刷新

首先在全局配置h

在Page中定义一个钩子函数,当达到下拉刷新条件时,执行钩子函数,发起请求方法。

请求返回后,调用wx.停止下拉刷新

10. 和 有什么区别

相同点:首先都是点击事件函数,点击的时候都会触发,这点上是一样的,可以不加区分的用。

区别:它们的主要区别在于,它们不会阻止冒泡事件,但会阻止冒泡

11. 'wx.()', 'wx.()', 'wx.()', 'wx.()', 'wx.()' 之间的区别

wx.():保留当前页面并跳转到应用程序中的某个页面。但不能跳转到页面

wx.():关闭当前页面,并跳转到应用中的某个页面,但不允许跳转到该页面。

wx.():跳转到该页面,并关闭其他所有非页面

wx.():关闭当前页面,返回上一页或者多个页面,可以用()获取当前页面堆栈,决定返回到第几层。

wx.():关闭所有页面并在应用程序中打开一个页面

12.运算符和运算符与()方法的区别

它是一个用于检测数据类型的运算符,例如基本数据类型null、、、、和引用数据类型,但对于正则表达式、日期和数组等引用数据类型,它会将它们全部识别为;

它也是一个可以很好的识别数据是哪种引用类型的运算符,和 的区别在于, 是用来检测构造函数的原型是否存在于指定对象的原型链中; 是用来检测调用此方法的对象是否存在于指定对象的原型链中,因此检测对象本质上是不同的。

13.call()和()的区别

其实功能和call是一样的,只是传入的参数列表的格式不一样。

(this对象,[参数1,参数2,...])即使只有一个参数,也必须写入数组中

call(this对象, 参数1, 参数2, ...) 可以接受多个任意参数,第一个参数相同,后面跟着一串参数列表

14.微信小程序如何给事件传值

在HTML元素上添加data-*属性来传递我们需要的值,然后通过e..或者的参数来获取。但是data-name不能有大写字母,不能存储对象。

15. 微信小程序与 Vue 的区别

• 生命周期不同,微信小程序生命周期相对简单

• 数据绑定也不同,微信小程序数据绑定需要使用 {{}},而 Vue 则直接使用即可:

• 控制元素的显示与隐藏,在小程序中使用wx-if,控制元素的显示与隐藏;在vue中使用v-if和v-show

• 事件处理方式不同,小程序中所有事件都是使用 (bind+) 或者 (+) 进行绑定,Vue: 使用 v-on: 进行事件绑定,或者使用 @ 进行事件绑定。

• 双向数据绑定也有所不同,在vue中只需要在form元素上加v-,然后在data中绑定一个对应的值,当form元素的内容发生变化时,data中对应的值也会随之变化,这是vue非常nice的一点,微信小程序必须获取form元素变化后的值,然后将该值赋给data中声明的一个变量。

16.有什么方法可以提高微信小程序的应用速度?

提高页面加载速度

用户行为预测

减少默认数据的大小

组件化解决方案

17.如何解决小程序异步请求问题

• 小程序支持大部分 ES6 语法

• 在返回成功的回调中异步处理逻辑

18.小程序wxml与标准html有哪些相同和不同之处?

相同的:

• 两者都用于描述页面的结构;

• 它们都是由标签、属性等组成;

不同的:

• 标签名称不同,小程序标签较少,单个标签较多;

分享