微信小程序面试题总结
A类问题
1 请谈谈微信小程序主要目录和文件的作用?
project.config.json 项目配置文件,用得最多的就是配置是否开启https校验;
App.js 设置一些全局的基础数据等;
App.json 底部tab, 标题栏和路由等设置;
App.wxss 公共样式,引入iconfont等;
pages 里面包含一个个具体的页面;
index.json (配置当前页面标题和引入组件等);
index.wxml (页面结构);
index.wxss (页面样式表);
index.js (页面的逻辑,请求和数据处理等);
2 请谈谈wxml与标准的html的异同?
都是用来描述页面的结构;
都由标签、属性等构成;
标签名字不一样,且小程序标签更少,单一标签更多;
多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式
WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览
组件封装不同, WXML对组件进行了重新封装,
小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象。
3 请谈谈WXSS和CSS的异同?
都是用来描述页面的样子;
WXSS 具有 CSS 大部分的特性,也做了一些扩充和修改;
WXSS新增了尺寸单位,WXSS 在底层支持新的尺寸单位 rpx;
WXSS 仅支持部分 CSS 选择器;
WXSS 提供全局样式与局部样式
4 你是怎么封装微信小程序的数据请求的?
在根目录下创建utils目录及api.js文件和apiConfig.js文件;
在apiConfig.js 封装基础的get, post 和 put, upload等请求方法,设置请求体,带上token和异常处理等;
在api中引入apiConfig.js封装好的请求方法,根据页面数据请求的urls, 设置对应的方法并导出;
在具体的页面中导入;
5 小程序页面间有哪些传递数据的方法?
使用全局变量实现数据传递
页面跳转或重定向时,使用url带参数传递数据
使用组件模板 template传递参数
使用缓存传递参数
使用数据库传递数据
6 请谈谈小程序的双向绑定和vue的异同?
大体相同,但小程序直接this.data的属性是不可以同步到视图的,必须调用this.setData()方法!
7 请谈谈小程序的生命周期函数?
onLoad() 页面加载时触发,只会调用一次,可获取当前页面路径中的参数。
onShow() 页面显示/切入前台时触发,一般用来发送数据请求;
onReady() 页面初次渲染完成时触发, 只会调用一次,代表页面已可和视图层进行交互。
onHide() 页面隐藏/切入后台时触发, 如底部 tab 切换到其他页面或小程序切入后台等。
onUnload() 页面卸载时触发,如redirectTo或navigateBack到其他页面时。
8 简述微信小程序原理?
小程序本质就是一个单页面应用,所有的页面渲染和事件处理,都在一个页面内进行,但又可以通过微信客户端调用原生的各种接口;
它的架构,是数据驱动的架构模式,它的UI和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现;
它从技术讲和现有的前端开发差不多,采用JavaScript、WXML、WXSS三种技术进行开发;
功能可分为webview和appService两个部分;
webview用来展现UI,appService有来处理业务逻辑、数据及接口调用;
两个部分在两个进程中运行,通过系统层JSBridge实现通信,实现UI的渲染、事件的处理等。
9 请谈谈原生开发小程序、wepy、mpvue 的对比?
个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。
而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。
而如果如果团队前端强大,自己做一套框架也没问题。
B类问题
一.简单描述下微信小程序的相关文件类型?
wxml 模板文件,是框架设计的一套标签语言,结合基础组件、事件系统、可以构建出页面的结构
wxss 样式文件,是一套样式语言,用于描述WXML的组件样式
js 脚本逻辑文件,逻辑处理网络请求
json 配置文件,小程序设置,如页面注册,页面标题及tabBar
app.json 整个小程序的全局配置,包括:
pages:[所有页面路径]
网络设置(网络超时时间)
界面表现(页面注册)
window:{背景色、导航样式、默认标题}
底部tab等
app.js 监听并处理小程序的生命周期函数、声明全局变量
app.wxss 全局配置的样式文件
二.怎么封装微信小程序的数据请求?
将所有的接口放在统一的js文件中并导出
在app.js中创建封装请求数据的方法
在子页面中调用封装的请求数据
或
在根目录下创建utils目录及api.js文件和apiConfig.js文件;
在appConfig.js封装基础的get\post\put\upload等请求方法,设置请求体,带上token和异常处理等;
在api.js中引入apiConfig.js封装好的请求方法,根据页面数据请求的urls,设置对应的方法并导出;
在具体页面导入;
三.微信小程序有哪些传值(传递数据)方法?
给html元素添加data-*属性来传递值,然后通过e.currentTarget.dataset或onload的param参数获取。注:data-名称不能有大写字母、不可以存放对象
设置id的方法标识来传值,通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值
在navigator中添加参数数值
或
使用全局变量实现数据传递
页面跳转或重定向时,使用url带参数传递数据
使用组件模板template传递参数
使用缓存传递参数
使用数据库传递参数
四.哪些方法来提高微信小程序的应用速度?
提高页面的加载速度
用户行为预测
减少默认data的大小
组件化方案
五.微信小程序的原理?
微信小程序采用JavaScript、wxml、wxss三种技术进行开发,与现有前端开发的区别:
JavaScript的代码是运行在微信APP中的,因此一些h5技术的应用需要微信APP提供对应的API支持;
wxml微信自己基于xml语法开发的,因此在开发时只能使用微信提供的现有标签,html的标签是无法使用的;
wxss具有css的大部分特性,但并不是所有都支持没有详细文档(wxss的图片引入需使用外链地址,没有body,样式可直接使用import导入)。
微信的架构,是数据驱动的架构模式,它的UI和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现。
小程序功能分为webview和APPservice,webview主要用来展示UI,appservice用来处理业务逻辑、数据及接口调用。它们在两个进程中进行,通过系统层JSBridge实现通信,实现UI的渲染、事件处理。
六.分析微信小程序的优劣势?
优势:
容易上手,基础组件库比较全,基本上不需要考虑兼容问题;
开发文档比较完善,开发社区比较活跃,支持插件式开发;
良好的用户体验:无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多;
开发成本比APP要低;
为用户提供良好的安全保障(小程序发布 严格的审查流程)
劣势:
限制较多,页面大小不能超过1M,不能打开超过5个层级的页面;
样式单一,部分组件已经是成型了的,样式不可修改,例如:幻灯片、导航
推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广
依托于微信,无法开发后台管理功能
后台调试麻烦,因为api接口必须https请求且公网地址
真机测试,个别功能安卓和苹果表现迥异,例如安卓的定位功能加载很慢
七.怎么解决微信小程序的异步请求问题?
在回调函数中调用下一个组件的函数: **app.js** success:function(info){that.apirtnCallback(info) } **index.js** onLoad:function(){app.apirtnCallback = res =>{console.log(res)} }
八.小程序关联微信公众号如何确定用户的唯一性?
使用wx.getUserInfo方法 withCredentials为true时,可获取encryptedData,里面有union_id.后端需要进行对称解密。
九.使用webview直接加载要注意哪些事项?
必须要在小程序后台使用管理员添加业务域名;
h5页面跳转至小程序的脚步必须是1.3.1以上;
微信分享只可以是小程序的主名称,如要自定义分享内容,需小程序版本在1.7.1以上;
h5的支付不可以是微信公众号的appid,必须是小程序的appid,而且用户的openid也必须是用户和小程序的
十.小程序调用后台接口遇到哪些问题?
数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序;
小程序不可以直接渲染文章内容这类型的html文本,显示需借助插件
注:插件渲染会导致页面加载变慢,建议在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签。然后其他的标签让插件来做。
十一.微信小程序如何实现下拉刷新?
用view代替scroll-view,设置onPullDownRefresh函数实现
十二.webview中的页面怎么跳转回小程序?
wx.miniProgram.navigateTo({url:’pages/login/login’+’$params’ }) **//跳转到小程序导航页面** wx.miniProgram.switchTab({url:’/pages/index/index’ })
十三.bindtap和catchtap的区别?
bind事件绑定不会阻止冒泡事件向上冒泡
catch事件绑定可以阻止冒泡事件向上冒泡
十四.简述wx.navigateTo(),wx.redirectTo(),wx.switchTab(),wx.navigateBack(),wx.reLaunch()的区别?
在wxml页面中:
跳转新页面
在当前页打开
切换到首页Tab
在js页面中:分为‘应用内的页面’和‘tabBar页面’;
如果上述跳转遇到跳转失败或者无效的问题,请访问:wx.navigateTo/wx.redirectTo无效
十五.小程序的生命周期函数?
onLoad()页面加载时触发,只会调用一次,可获取当前页面路径中的参数
onShow()页面显示/切换前台时触发,一般用来发送数据请求
onReady()页面初次渲染完成时触发,只会调用一次,代表页面已可和视图层进行交互
onHide()页面隐藏/切入后台时触发,如底部tab切换到其他页面或小程序切入后台等
onUnload()页面卸载时触发,如redirectTo或navigateBack到其他页面时。
十六.微信小程序与H5的区别?
运行环境不同(小程序在微信运行,h5在浏览器运行);
开发成本不同(h5需要兼容不同的浏览器);
获取系统权限不同(系统级权限可以和小程序无缝衔接);
应用在生产环境的运行流畅度(h5需不断对项目优化来提高用户体验);
十七.小程序和Vue写法的区别?
遍历的时候:
小程序 wx:for = "lists"
Vue是 v-for = "item in lists"
调用data模型(赋值)的时候:
小程序:this.data.item //调用 this.setData({item:1}) //赋值
vue: this.item //调用 this.item =1 //赋值
常见问题
rpx:小程序的尺寸单位,规定屏幕为750rpx,可适配不同分辨率的屏幕。
本地资源无法通过wxss获取
RE:
background-image:可以使用网络图片,或者base64,或者使用标签
wx.navigateTo无法打开页面
RE:
一个应用同时只能打开5个页面,请避免多层级的交互方式,或使用wx.redirectTo
tabBar设置不显示
RE:
tabBar的数量少于2项或超过5项都不会显示;
tabBar写法错误导致不显示;
tabBar没有写pagePath字段(程序启动后显示的第一个页面)
微信小程序面试题总结相关推荐
- 2021面试题——微信小程序面试题
1.简单描述下微信小程序的相关文件类型 wxml模板文件:是框架设计的一套标签语言,结合基础组件,事件系统.可以构建出页面的结构: wxss样式文件:是一套样式语言,用于描述wxml的组合样式: js ...
- 微信小程序面试题(day08)
文章目录 微信小程序自定义组件的使用? 微信小程序事件通道的使用? 微信小程序如何使用vant组件库? 微信小程序自定义组件父传子子传父? 微信小程序自定义组件生命周期有哪些? 微信小程序授权登录流程 ...
- 微信小程序面试题大全
1.简述微信小程序的相关文件类型? WXML 搭建页面的结构 WXSS 页面样式文件 js 逻辑处理,网络请求 json 配置当前页面标题和引入组件等 app.js 可以在里边监听生命周期函数.声明全 ...
- 微信小程序面试题(个人学习)
文章目录 前言 1 微信小程序的相关文件类型 1. 1项目结构 1.2主要文件 2 简述微信小程序原理 3 小程序的双向绑定和vue哪里不一样 4 小程序的wxss和css有哪些不一样的地方? 5 小 ...
- 微信小程序面试题大全(持续更新)
1.请谈谈微信小程序主要目录和文件的作用? project.config.json:项目配置文件,用的最多的就是配置是否开启https校验 App.js:设置一些全局的基础数据等 App.json:底 ...
- 2019 微信小程序面试题
微信小程序相关的 微信小程序组件的生命周期? 答:生命周期函数-onLoad: 页面加载 一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数. onShow: 页 ...
- 第 7 节:前端面试指南 — 微信小程序篇(附面试题答案)
这周很多读者朋友都在「微信小程序」的视频了. 前 6 期没看的同学,建议先看完再来看这一期的,传送门: 第 1 期:「简历篇」含简历模板文件 第 2 期:「HTML篇」含面试题&答案 第 3 ...
- 面试题(2020)微信小程序常见面试题
面试题(2020)微信小程序常见面试题 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 1.微信的小程序的主要文件 WXML-- ...
- 微信小程序【常见面试题】
微信小程序常见面试题 小程序的登录需要请求几次? 小程序怎样使用自定义组件? 小程序的生命周期 小程序是双向数据绑定吗?怎么更新data 小程序本地存储有哪些常用api? wx.navigateTo和 ...
最新文章
- matlab中real函数,Matlab中del2()函数学习笔记
- 借助树的概率dp(期望)+数学-好题-hdu-4035-Maze
- pygame从入门到提高(1)
- VTK:Cell Edge Neighbors用法实战
- Kafka中topic的Partition,Kafka为什么这么快,Consumer的负载均衡及consumerGroup的概念(来自学习笔记)
- 反思开发新需求节省时间的方法
- java中 int 比较_java中Integer与int的种种比较你知道多少?
- 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础
- 我9月底的SAP Spartacus开发进展情况
- java 顶点着色_Shader笔记_002简单顶点/片元着色器扩展
- jQuery包裹节点用法完整示例
- Java Script 第09章 Ajax应用
- Zynq硬件开发之Xilinx官方技术手册解读(一)
- 微信人工客服24小时在线电话
- 画出计算机硬件系统结构图,一、计算机的硬件结构.ppt
- react项目运行出现进度卡住,Would you like to run the app on another port instead?
- input 起止时间_完整的时间(开始和结束时间)输入框验证js
- 词性标注集句和句法分析标注集
- Win10无法访问网上邻居共享设备及共享文件夹错误代码(0x80004005)
- unity3D 移动平台性能优化
热门文章
- Kyligence联合创始人兼CTO李扬:用智能数据云打造全链路数字化转型
- CDR X6设计师的福利,3折特惠!
- Cisco IOS配置环境,路由器和交换机的基本连接配置方法和连通性
- python字符串汇率转换,转换美元为人民币,复制数字+美元输出结果,数字四舍五入到百位数
- 开发在线文档时,这个技术难点你解决了吗?
- dimm和udimm_Adata推出32GB DDR4-2666 UDIMM和SO-DIMM
- 【Codeforces】1051F. The Shortest Statement【MST+LCA+最短路】
- Unity 进阶 之 实现简单的音频可视化封装(包括音频和麦克风)
- 批处理切换host文件
- android tts实现方案,Android自动朗读(TTS)的实现