前端面试题 微信小程序
1. 简单描述下微信小程序的相关文件类型
2. 简述微信小程序原理
3. 小程序的双向绑定和vue哪里不一样
4. 小程序的wxss和css有哪些不一样的地方
5. 小程序页面间有哪些传递数据的方法
6. 小程序的生命周期函数
7. 怎么封装微信小程序的数据请求
8. 哪些方法可以用来提高微信小程序的应用速度
9. 微信小程序的优劣势
10. 怎么解决小程序的异步请求问题
11. 小程序关联微信公众号如何确定用户的唯一性
12. 如何实现下拉刷新
13. bindtap和catchtap的区别是什么
14. 简述下wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch()的区别
1. 简单描述下微信小程序的相关文件类型
微信小程序项目结构主要有四个文件类型
WXML
:WeiXin Markup Language
是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。内部主要是微信自己定义的一套组件WXSS
:WeiXin Style Sheets
是一套样式语言,用于描述WXML
的组件样式js
: 逻辑处理,网络请求json
: 小程序设置,如页面注册,页面标题及tabBar
主要文件
app.json
必须要有这个文件,如果没有这个文件,项目无法运行,因为微信框架把这个作为配置文件入口,整个小程序的全局配置。包括页面注册,网络设置,以及小程序的window
背景色,配置导航条样式,配置默认标题app.js
必须要有这个文件,没有也是会报错!但是这个文件创建一下就行 什么都不需要写以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量app.wxss
可选
2. 简述微信小程序原理
微信小程序采用
JavaScript
、WXML
、WXSS
三种技术进行开发,本质就是一个单页面应用,所有的页面渲染和事件处理,都在一个页面内进行,但又可以通过微信客户端调用原生的各种接口
微信的架构,是数据驱动的架构模式,它的
UI
和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现
小程序分为两个部分
webview
和appService
。其中webview
主要用来展现UI
,appService
有来处理业务逻辑、数据及接口调用。它们在两个进程中运行,通过系统层JSBridge
实现通信,实现UI
的渲染、事件的处理
3. 小程序的双向绑定和vue哪里不一样
小程序直接 this.data
的属性是不可以同步到视图的,必须调用:
this.setData({// 这里设置
})
4. 小程序的wxss和css有哪些不一样的地方
WXSS
和CSS
类似,不过在CSS
的基础上做了一些补充和修改
- 尺寸单位
rpx
rpx
是响应式像素,可以根据屏幕宽度进行自适应。规定屏幕宽为 750rpx
。如在 iPhone6
上,屏幕宽度为 375px
,共有 750
个物理像素,则 750rpx = 375px = 750
物理像素
- 使用
@import
标识符来导入外联样式。@import
后跟需要导入的外联样式表的相对路径,用;表示语句结束
/** index.wxss **/
@import './base.wxss';
.container{color: red;
}
5. 小程序页面间有哪些传递数据的方法
- 使用全局变量实现数据传递 在
app.js
文件中定义全局变量globalData
, 将需要存储的信息存放在里面
// app.js
App({// 全局变量
globalData: {userInfo: null
}
})
使用的时候,直接使用 getApp()
拿到存储的信息
- 使用
wx.navigateTo
与wx.redirectTo
的时候,可以将部分数据放在url
里面,并在新页面onLoad
的时候初始化
//pageA.js
// Navigate
wx.navigateTo({url: '…/pageD/pageD?name=raymond&gender=male',
})// Redirect
wx.redirectTo({url: '…/pageD/pageD?name=raymond&gender=male',
})// pageB.js
...
Page({onLoad: function(option){console.log(option.name + 'is' + option.gender)
this.setData({option: option
})
}
})
需要注意的问题:
wx.navigateTo
和 wx.redirectTo
不允许跳转到 tab
所包含的页面
onLoad
只执行一次
- 使用本地缓存
Storage
相关
6. 小程序的生命周期函数
onLoad
页面加载时触发。一个页面只会调用一次,可以在onLoad
的参数中获取打开当前页面路径中的参数onShow()
页面显示/切入前台时触发onReady()
页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互onHide()
页面隐藏/切入后台时触发。 如navigateTo
或底部tab
切换到其他页面,小程序切入后台等onUnload()
页面卸载时触发。如redirectTo
或navigateBack
到其他页面时
详见 生命周期回调函数
7. 怎么封装微信小程序的数据请求
参考 这里
8. 哪些方法可以用来提高微信小程序的应用速度
1、提高页面加载速度
2、用户行为预测
3、减少默认 data
的大小
4、组件化方案
9. 微信小程序的优劣势
优势
- 即用即走,不用安装,省流量,省安装时间,不占用桌面
- 依托微信流量,天生推广传播优势
- 开发成本比
App
低
- 容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本上没有大问题;当然如果了解ES6+CSS3则完全可以编写出即精简又动感的小程序
- 基本上不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序;
- 基本组件库已经比较齐全:Toast,Loading框,Picker,定位及地图,Image,Input,Checkbox,Text,TextArea,ScrollView等常用的组件都有,而且使用也挺简单、方便;
- 发布、审核高效,基本上上午发布审核,下午就审核通过,升级简单,而且支持灰度发布;
- 微信官方提供使用人数、频率等数据统计,小程序js脚本执行错误日志;
- 开发文档比较完善,开发社区比较活跃;
- 最近刚开放的牛x功能,新增webview组件,可以展示网页啦,这个比较爽;
- 支持插件式开发,一些基本功能可以开发成插件,供多个小程序调用;
缺点
- 用户留存,即用即走是优势,也存在一些问题
- 入口相对传统
App
要深很多 - 限制较多,页面大小不能超过2M。不能打开超过10个层级的页面
10. 怎么解决小程序的异步请求问题
小程序支持大部分
ES6
语法
- 在返回成功的回调里面处理逻辑
Promise
异步
11. 小程序关联微信公众号如何确定用户的唯一性
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过
unionid
来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid
是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid
是相同的
12. 如何实现下拉刷新
- 首先在全局
config
中的window
配置enablePullDownRefresh
- 在
Page
中定义onPullDownRefresh
钩子函数,到达下拉刷新条件后,该钩子函数执行,发起请求方法 - 请求返回后,调用
wx.stopPullDownRefresh
停止下拉刷新
参考 这里
13. bindtap和catchtap的区别是什么
相同点:首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分
不同点:他们的不同点主要是 bindtap
是不会阻止冒泡事件的,catchtap
是阻值冒泡的
14. 简述下 `wx.navigateTo()`, `wx.redirectTo()`, `wx.switchTab()`, `wx.navigateBack()`, `wx.reLaunch()`的区别
wx.navigateTo()
:保留当前页面,跳转到应用内的某个页面。但是不能跳到tabbar
页面wx.redirectTo()
:关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到tabbar
页面wx.switchTab()
:跳转到abBar
页面,并关闭其他所有非tabBar
页面wx.navigateBack()
关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages()
获取当前的页面栈,决定需要返回几层wx.reLaunch()
:关闭所有页面,打开到应用内的某个页面
前端面试题 微信小程序相关推荐
- 前端学习(1840):前端面试题之小程序入门
- 面试题微信小程序开发经验总结
最近对微信小程序比较感兴趣,就上官网学习了一下,顺手做了一个java面试题小程序.在此总结一下微信小程序的开发流程和经验. 对微信小程序有兴趣的小伙伴可以去我的小程序看一下.我本人也工作快5年了,这个 ...
- 软件测试面试题微信小程序-IT界的驾考宝典
软件测试面试题库微信小程序,IT界的驾考宝典.运行上线了. 从软件测试基础理论到自动化测试,接口测试,性能测试,功能测试,互联网大厂面试真题,HR面试小技巧,应有尽有 上线运行一个月刷题人数已经达十五 ...
- h5前端基础面试题(微信小程序)
微信小程序基础面试题 1.微信小程序的优劣势? 优势: ①容易上手,基础组件库比较全,基本上不需要考虑兼容问题: ②开发文档比较完善,开发社区比较活跃,支持插件式开发: ③良好的用户体验:无需下载,通 ...
- 2021面试题——微信小程序面试题
1.简单描述下微信小程序的相关文件类型 wxml模板文件:是框架设计的一套标签语言,结合基础组件,事件系统.可以构建出页面的结构: wxss样式文件:是一套样式语言,用于描述wxml的组合样式: js ...
- 小程序服务器搭建前后端交互,微信小程序:request前后端交互 路由跳转 存储数据到本地和获取 小程序登入 授权...
一 request前后端交互 基本样式 wx.request({ url:'test.php', //仅为示例,并非真实的接口地址 data: { x:'', y:''}, header: {'con ...
- 微信小程序 App()方法与getApp()方法
简介 App():注册一个小程序,小程序的入口方法 getApp():获取全局对象,然后进行全局变量和全局方法的使用 demo app.js App({onLaunch: function(optio ...
- 前端面试题整理 (ES6篇)
分享一个前端面试题库小程序 MST题宝库 1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMA ...
- 2022 最新前端面试题汇总
VUE面试题 1.v-show 和 v-if的区别,v-show 和 keep-alive 的区别 答案: v-show是 CSS display 控制显示和隐藏 v-if 是组件真正的渲染和销毁,而 ...
最新文章
- Mac-连接Windows远程桌面软件
- 通讯录管理系统(C语言)
- 代码没问题,请求无响应,超时
- 25 万行逆向源码遭下架!
- 华为服务器系统图标,华为云 服务器图标 visio
- UE4读写txt文本文件(虚幻4)
- smartbi服务器缓存文件,Smartbi Config页面介绍 - Smartbi V9 帮助文档
- 毕业相关-自动问答综述
- oracle 10g express linux,使用Oracle10g express 版本方案介绍
- matlab实现彩色图像的直方图均衡化
- Synopsys VCS仿真编译选项
- JVM中的对象探秘(三)- 对象的实例数据与对齐填充
- php就业薪资排名_山东第三季度就业难度指数报告:重工行业就业难
- Arduino温度报警
- malloc函数分配内存失败的原因及解决方法
- 二战漫画爬虫(爱漫画网)
- 【蓝桥杯】——DS18B20模块
- Java打印程序设计全攻略
- android微信开放平台,申请移动应用的应用签名如何获取
- arm linux g 找不到,/ bin / sh:1:arm-linux-gcc:在ubuntu上找不到