小程序、uniapp、原生微信小程序高频面试题总结(一)

本文总结了关于小程序和uniapp的常见面试问题,包括它们的概念、区别、常见框架、页面跳转与传参方式、生命周期、性能优化策略、用户权限管理、数据绑定与加载、以及父子组件通信的方法。内容涵盖了从基础概念到进阶技巧,适合开发者复习和准备面试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 什么是小程序

小程序是一种轻量级的应用程序,可以在手机等设备上运行,而无需用户下载和安装。它结合了移动应用程序的功能和网页应用程序的便捷性,允许用户在一个封闭的环境中直接使用应用程序。特点:无需下载安装;轻量级;跨平台兼容;互联网便携;

2.小程序和传统网页应用程序的区别是什么

  1. 安装和访问:传统web需要输入url地址进行网页的访问,而小程序通过扫描二维码和搜索进行访问并且不需要进行安装
  2. 功能和能力:小程序除了能和浏览器一样调用设备信息等接口,还具有蓝牙,定位等接口的调用,用户的交互性大大提高,而传统web受限于网页浏览器并不具备小程序的上述功能
  3. 数据存储与缓存:小程序使用的是本地缓存,提供更好的用户体验,而网页应用程序是使用的浏览器的缓存机制进行数据的缓存,有一定的局限性
  4. 跨平台兼容性强:uniapp开发的项目可以在多个平台进行发布使用,而传统网页应用程序需要考虑不同版本的浏览器进行兼容和测试,开发繁琐

3.常见的小程序框架

  1. 微信小程序框架:基于WXML, WXSS, JavaScript的开发框架
  2. 支付宝小程序框架: 基于AXML,ACSS,JavaScript的开发框架
  3. 百度小程序框架:基于Swan,Csss,JavaScript的开发框架

4.小程序实现页面跳转的方式

  1. navigator组件
// 使用自带的原生组件navigator
<navigator url="/pages/index/index">点击跳转</navigator>
  1. API [wx.navigatorTo、wx.redirectTo、wx.reLaunch、wx.switchTab]
    1. wx.navigatorTo: 点击跳转页面会将当前页面加入页面栈中进行存储,可以使用返回按钮返回上一页,同时可以进行页面的传参,在onLoad里面接收参数
    2. wx.redirectTo: 点击跳转页面之后上一页会被卸载掉,不能进行返回,页面栈中只会保留当前页
    3. wx.reLaunch: 关闭当前的所有页面,创建新的页面栈,跳转之后的页面会被设定为新的栈顶页面
    4. wx.switchTab: 专门用于跳转到tabbar页面,会关闭其他的非tabbar页面,不能进行传参
    5. wx.navigataBack: 用于返回上一页使用

5.小程序实现页面传参的方式

  1. url传参
    该方法可以在搭配navigatorTo进行页面跳转的时候在后面拼接上需要传递的参数,常用于传递id等值,如果目标页面需要进行详情的数据渲染,当前页面就是详情页的所有数据,如果数据较少的情况下可以直接转为json格式的数据直接拼接到url地址后面进行传递,这适用于数据量较少的情况下,相反还是使用vuex或者浏览器缓存进行传递
  2. 全局参数
    原生小程序可以在app.js文件中的APP({…})定义全局的数据进行共享使用,数据是以对象的方式进行存储,如果哪个页面需要就调用getApp().变量名 就可以获取到这个全局变量进行使用
// app.js
App({
   
	name: 'xiaowu',
	age: 20
})

// 目标页面
...
let name = getApp().name;
let age = getApp().age;
...
  1. 浏览器缓存
    使用wx.setStorageSync(key, value)将目标页面需要的数据存储到本地浏览器缓存中,在目标页面使用getStorageSync(key)的方式将数据又重缓存中读取出来,一般用于存储token,详情信息等
  2. vuex/pinia
    如果你的项目使用到了vue框架,可以用vuex、pinia进行数据的统一状态管理,哪个页面需要该数据直接调用getter就行,极大的方便统一的管理和调用
  3. 事件绑定
    适用于父子组件间的数据传输和通信,子组件通过this.$emit(name, value)方法传递数据给父组件,父组件在子组件上自定义一个事件,就可以监听并接收子组件传递过来的数据

6.小程序的生命周期钩子函数

  1. onLaunch: 只在小程序启动的时候加载,全局只会执行一次
  2. onLoad: 只要页面一加载的时候就会执行,比较常用,可以用来url传递过来的参数;调用方法等;
  3. onReady: 监听页面初次渲染完成的时候调用
  4. onShow / onHide: 进入当前页面触发 、 离开当前页面触发
  5. onError: 小程序发生错误时触发,比如api调用失败
  6. onShareAppMessage:点击分享时触发
  7. onUnload: 页面卸载的时候触发

7. 小程序性能优化的方法

  1. 减少http的请求
    将请求到的数据进行缓存或者进行状态统一管理,可以减少http的请求
  2. 使用缓存或者框架的统一状态管理工具(vuex, pinia)
  3. 使用异步请求,避免回调地狱
  4. 图片懒加载
    -uniapp可以使用自带的image组件的lazy-load属性但是只能在page页面和scroll-view组件中的image使用,也可以使用外部插件
    -原生小程序可以使用节点布局相交状态 IntersectionObserver 这个api来判断是否是否出现在页面可视区实现图片的懒加载
// index.wxml
<view wx:for="{
   {imageList}}" 
面试官问到uniapp微信小程序相关的试题时,你可以参考以下问题答案: 1. 什么是uniapp- uniapp个基于Vue.js开发跨平台应用框架,可以同时开发iOS、Android、H5微信小程序等多个平台的应用。 2. 什么是微信小程序- 微信小程序种在微信平台上运行的应用程序,用户可以在微信中直接使用,无需下载安装。 3. uniapp微信小程序有什么关系? - uniapp可以开发微信小程序,通过uniapp的跨平台特性,开发者只需要编写套代码,就可以同时在多个平台上运行。 4. uniapp开发微信小程序的优势有哪些? - 跨平台开发:只需编写套代码,即可在多个平台上运行。 - 开发效率高:使用Vue.js进行开发,具有简洁、灵活的语法,提高开发效率。 -的UI组件:uniapp提供了套统的UI组件库,方便开发者快速构建界面。 - 支持原生能力:uniapp支持调用原生API,可以实现更多的功能。 5. uniapp开发微信小程序的限制有哪些? - 对于些特定的微信小程序API,uniapp可能无法直接调用,需要通过插件或自定义组件来实现。 - 由于不同平台的差异,些特定的样式功能在不同平台上可能会有差异。 6. uniapp中如何实现微信小程序的页面跳转? - 可以使用uniapp提供的`uni.navigateTo`、`uni.redirectTo`、`uni.switchTab`等方法来实现页面跳转。 7. uniapp中如何调用微信小程序原生API? - 可以使用uniapp提供的`uni.request`、`uni.showToast`等方法来调用微信小程序原生API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值