草庐IT

前端面试题之——小程序篇

赫兹/Herzz 2023-04-09 原文

小程序面试题

1.数据请求怎么封装

  • 将所有的接口放在统一的 js 文件中并导出(或者将请求地址、头、方法在一个 js 文件里统一定 义为一个常量并导出)
  • 在 app.js 创建封装请求数据的方法
  • 在子页面中调用封装的方法请求数据

2.参数传值的方法
给 HTML 元素中添加 data-*属性来传递需要的值,之后通过 e.currentTarget.dataset 或 onload 的 param 参数获取。注意不能有大写字母,不可以存放对象 跳转页面时通过 navigator 传递需要的参数值 设置 id 的方法标识,通过 e.currentTarget.id 获取设置的 id 值,然后通过设置全局变量的方法来传 递数值
3.提高小程序的应用速度的方法

  • 减少默认 data 的大小
  • 组件化方案,公用的如弹框等写个自定义的组件,然后调用

4.小程序的优点

  • 无需下载

  • 打开速度快

  • 开发成本低

  • 为用户提供良好的安全保障。发布有一套严格的审查流程,不能通过审查的程序无法发布上线

  • 服务请求快

    5.小程序的缺点

  • 依托微信,不能开发后台管理功能

  • 大小限制不能超过 2M,不能打开超过 5 个层级的页面

6.简述小程序原理

  • 小程序分为两个部分 webview 和 appService,webview 用来展现 UI,appService 用来处理业
    务逻辑、数据及接口调用,它们在两个进程中运行,通过系统层 JSBridge 实现通信,完成 UI 渲 染、事件处理。

7.怎么解决异步请求问题

  • 不封装接口的话可以在返回成功的回调里面处理逻辑

  • 可以用 Promise 来封装

  • 可以引用 runtime 来使用 async await

  • 使用 wepy 或着美团的小程序框架,可以通过安装库解决

  • 在回调函数中调用下一个组件的函数

    8.webview 中的页面怎么跳回小程序中
    先在管理后台配置域名白名单, 然后引入 jweixin-1.3.2.js(https://res.wx.qq.com/open/js/jweixin-1.3.0.js),最后 wx.miniProgram.navigateTo({url: ‘/pages/login/login’+‘$params’}) wx.miniProgram.navigateTo({url: ‘/path/to/page’}) webview 的页面怎么跳转到小程序导航的页面? 小程序导航的页面可以通过 switchTab,但默认情况是不会重新加载数据的。若需加载新数据,则在 success 属性中加入以下代码即可: success: function (e) { var page = getCurrentPages().pop(); if (page == undefined || page == null) return, page.onLoad(); }` webview 的页面,则通过 wx.miniProgram.switchTab({ url: ‘/pages/index/index’ })
    9.小程序和 Vue 写法的区别

  • 循环遍历:小程序是 wx:for=“list”,vue 是 v-for=“inforin list”

  • 调用 data 模型:小程序是 this.data.unifo,vue 是 this.unifo

  • 给模型赋值:小程序是 this.setData({unifo:1}),vue 是直接 this.unifo=1

10.小程序的双向绑定和 vue 哪里不一样

  • 小程序直接 this.data 的属性是不可以同步到视图的,必须调用 this.setData({})
  • 1px = 2rpx

11.生命周期函数

  • onLoad——页面加载,调一次
  • onShow——页面显示,每次打开页面都调用
  • onReady——初次渲染完成,调一次
  • onHide——页面隐藏,当 navigateTo 或底部 tab 切换时调用
    onUnload——页面卸载,当 redirectTo 或navigateBack 时调用

12.几种跳转,小程序内的页面跳转

  • wx.navigateTo——保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面(参数必 须为字符串)

  • wx.redirectTo——关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面

  • wx.switchTab——跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,路径后不能带参数

  • wx.navigateBack——关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取
    当前的页面栈,决定需要返回几层

  • wx.reLaunch——关闭所有页面,打开到应用内的某个页面 通过 navigator 跳转

13.如何自定义组件

  • 先创建一个 components 文件夹,用来存放所有自定义组件的,目录结构依然是 js,wxml,json,wxss

  • 基本配置: .json——进行自定义组件声明 { “component”: true }

  • 使用组件: 假如在 index.wxml 中使用这个自定义的组件,首先在 index.json 中进行声明 {
    “usingComponents”: { “toastdemo”: “/components/toastdemo/toastdemo” }
    }

  • 接着在 index.wxml 中引用

  • 然后在 index.js 进行配置

  • 使用时直接执行 this.toastdemo.showToast(‘弹框组件调用成功’,2000)就可以了

14.如何实现下拉刷新
先在 app.json 或 page.json 中配置 enablePullDownRefresh:true page 里用 onPullDownRefresh 函数,在下拉刷新时执行 在下拉函数执行时发起数据请求,请求返回后,调用 wx.stopPullDownRefresh 停止下拉刷新的状态
bindtap 和 catchtap 的区别是什么
bindtap 不会阻止冒泡事件,catchtap 阻止冒泡
15. setData 的回调函数
微信小程序的 setData 实现是和 react 的 setData 实现类似的,所以它也是一个异步函数,并且有 回 调函数的参数,当然平时小量数据我们可能并没有感觉到它的异步,但是为了确保逻辑的正确执行,在需要 用到 setData 后 data 里的数据的步骤,请写入 setData 的回调函数中,如下示例:
this.setData({ a: this.data.a++ },()=>{ })
16.小程序和小程序之间的跳转

  • 在同一主体公众号上关联 2 个小程序 appid,

  • 用 navigator,对应设置一些属性即可

  • target:miniProgram——其他小程序

  • target:self——当前小程序

    17.小程序顶部自定义导航怎么写
    原生导航栏
    自定义导航栏:在 app.json 的 window 对象中定义导航的样式 navigationStyle:“custom” https://www.cnblogs.com/jiangbeixiaoqiao/p/10826291.html
    18.小程序的单向数据绑定
    {{属性名}},this.setData{{}}setdata 和页面数据的线程机制
    多 线 程 Worker: 执 行 多 条 并 行 线 程 , https://blog.csdn.net/weixin_40440167/article/details/78386412?depth_1-utm_source=dist ribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task 1.https://www.jb51.net/article/165372.htm
    2.https://www.cnblogs.com/idreamo/p/10853965.html 3.https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.html
    19.分包的操作,发布的时候是选择某个包来发吗

  • 分包:主包添加跳转路径,分包放内容,在 app.json 配置 subpakeages 声明项目分包结构。代码 包总包大小为
    12M,单个主包/分包大小不能超过 2M。

  • 按照功能划分的打包原则:可以按照功能的划分,拆分成几个分包,当需要用到某个功能时,才加载 这个功能对应的分包;公共逻辑、组件放在主包内。

  • 首次启动时,先下载小程序主包,显示主包内的页面;如果进入了某个分包的页面,再下载这个对应分 包,下载完毕后,显示分包的页面,

  • 总结:首先配置好打包路径,tabbar 页面必须在主包内。各分包之间不能互相调用,能调用主包内 的分包加载,预分包加载

20.小程序的微信支付是哪个 API,参数是哪些及怎么获取的

  • wx.requestPayment

21.说几个常用的 API

  • wx.login

  • wx.request

  • wx.navigateTo

  • wx.redirectTo

  • wx.switchTab

  • wx.naviageteBack

  • wx.reLaunch
    等等…
    22.授权验证登录怎么做,用户退出后下次进入还需要再次授权吗

  • 一次性授权:wx.login 获取到一个 code,拿这 code 去请求后台得到 openId, sessionKey, unionId。 调 wx.getUserInfo

  • 永久授权:调取授权登录接口并把获取到的用户公开信息存入数据库

23.小程序有常用的 UI 库吗,是什么
WeUI可按需下载,把下载的压缩好放入项目里,项目目录为 weui-miniprogram。 https://developers.weixin.qq.com/miniprogram/dev/extended/weui/download.html
24.验证授权是自动弹出还是触发的

  • 按钮触发的,open-type 指定为 getUserInfo 类型

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

  • 使用全局变量实现数据传递:在 app.js 文件中定义全局变量 globalData将需要存储的信息存放在里面: // app.js
    App({ // 全局变量 globalData: { userInfo: null } })

  • 使用的时候,直接使用 getApp()拿到存储的信息

  • 使用 wx.navigateTo 和 wx.redirectTo 的时候,可以将部分数据放在 url 里,并在新页面 onLoad 的
    时候初始化

26.小程序网络请求封装
网 络 请 求 小 程 序 提 供 了 wx.request
https://segmentfault.com/a/1190000014789969
27.怎么解决小程序的异步请求问题
小程序支持大部分 es6 语法:在返回成功的回调里面处理逻辑;Promise 异步
28.小程序关联微信公众号如何确定用户的唯一性
unionid 是相同且唯一的
29.如何实现下拉刷新
在全局 config 中的 window 配置 enablePullDownRefresh
30.小程序页面见传值的方式有几种

  • url( 跳 转 ) storage(wx.storageSync) console.log(obj1) // {a:1,b:4,c:5}

  • 全局变量(getApp)

有关前端面试题之——小程序篇的更多相关文章

  1. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  2. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  3. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  4. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  5. Spring Boot中的微信支付(小程序) - 2

    前言微信支付是企业级项目中经常使用到的功能,作为后端开发人员,完整地掌握该技术是十分有必要的。一、申请流程和步骤图1-1注册微信支付账号获取微信小程序APPID获取微信商家的商户ID获取微信商家的API私钥配置微信支付回调地址绑定微信小程序和微信支付的关系搭建SpringBoot工程编写后台支付接口发布部署接口服务项目使用微信小程序或者UniAPP调用微信支付功能支付接口的封装配置jwt或者openid的token派发原生微信小程序完成支付对接二、注册商家2.1商户平台商家或者企业想要通过微信支付来进行商品的销售,必须先通过微信平台(pay.weixin.qq.com)去将商家进行注册。注册成

  6. 华为OD机试 -旋转骰子(Python) | 机试题算法思路 【2023】 - 2

    最近更新的博客华为OD机试-卡片组成的最大数字(Python)|机试题算法思路华为OD机试-网上商城优惠活动(一)(Python)|机试题算法思路华为OD机试-统计匹配的二元组个数(Python)|机试题算法思路华为OD机试-找到它(Python)|机试题算法思路华为OD机试-九宫格按键输入(Python)|机试算法备考思路华为OD机试-身高排序(Python)|备考思路使用说明参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。华为OD清单查看地址:blog.csdn.net/hihell/catego

  7. 软件工程毕业设计课题(81)微信小程序毕业设计PHP校园跑腿小程序系统设计与实现 - 2

        项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构;通过后台管理跑腿的用户、查看跑腿信息和对应订单。意义:手机网络时代,大学生通过手机网购日常用品、外卖外卖、代取快递等已不再是稀奇的事情。此外,不少高校还流行着校园有偿工作,校园跑腿就成了大学生创业服务项目。        因为你在校园里,所以不会有进入的限制。并不是所有的外卖平台都可以随意进入校园,比如小黄和小蓝的双打外卖平台。许多大学禁止送餐进入学校,更不用说送餐进入宿舍了。这一措施使得校园服务市场的竞争相对不

  8. 简洁易用的记账小程序——微点记账 - 2

    沙雕审核,你告诉我什么是宣传?哪些是过渡宣传?删掉哪些内容?沙雕背景由于每个月的信用卡账单太过吓人,记性也不是特别的好,加上微信和支付宝账单中有些明细不是很明确。比如在京东花销的明细不会记录用户购买了什么,只会记录哪个通道支出的。所以,才会有了想自己开发一款记账小程序,来实现自己的每笔支出都很详细!(这里如有特殊功能也可提供给小编,功能实用的话,也会添加到小程序内的哦)您的博文《简洁易用的记账小程序——微点记账》因涉及过度宣传,审核不通过,建议删除相关过度宣传后发布。上面这句话是你们审核说的,我就问问你,那些内容是宣传了?你懂什么叫宣传吗?SX实现效果图首页(账单)效果首页,功能主要是分为:通

  9. 基于C++实现一个支持简单交互绘图小程序 - 2

    资源下载地址:https://download.csdn.net/download/sheziqiong/86763967资源下载地址:https://download.csdn.net/download/sheziqiong/86763967基于C++实现一个支持简单交互绘图小程序一、概要设计1.1开发环境IDE:VisualStudio2019Commity运行环境:window10专业版配置要求:内存4g显卡无要求CPU无要求目的调试编译通过图形应用编码、熟悉flk1.2结构化模块设计图UML类图1.3主要模块功能接口描述Graph.cppvoidShape::add(Pointp)//

  10. 网络安全岗位面试题 - 2

    前言介绍了网络安全岗位常见的面试题,仅供参考!一、常识部分1.Linux服务器种用户关键信息存储在那个文件中?启动、停止、重启、开机自启mysql服务命令?如何查找/etc/test.txt文件中"password"关键字信息?如何精确查找80端口?/etc/passwdsystemctlstartmysqld或systemmysqldstart 启动systemctlstopmysqld或systemmysqldstop 停止systemctlrestartmysqld或systemmysqldrestart 重启systemctlenablemysqld或systemmysqldenabl

随机推荐