- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
微信小程序面试题及参考答案
一、基础概念类
问:微信小程序和普通H5的核心区别是什么?实际开发中要注意哪些差异?
答:核心区别集中在运行环境、权限、性能和开发规范上:
运行环境:H5跑在浏览器内核(webkit/blink),小程序是微信自研的双线程渲染引擎(逻辑层JSCore+视图层WebView),脱离浏览器沙箱;
权限能力:小程序能调用微信原生能力(如支付、地理位置、相册、蓝牙),H5受浏览器权限限制,很多原生能力无法使用;
性能表现:小程序启动时会预加载基础库,本地缓存能力更强,首屏加载比H5快,但包体积有严格限制(主包2M内);
开发规范:小程序有固定的目录结构(pages.json/app.json)、组件体系(原生组件+自定义组件),H5无强制规范,灵活性更高。
实际开发注意:小程序不能操作DOM/BOM(如document、window),需用wxAPI替代;样式不支持通配符*、复杂选择器,需适配rpx单位;路由跳转有固定API(wx.navigateTo等),不能用a标签。
问:小程序的双线程模型是什么?为什么要这么设计?
答:双线程指“逻辑层”和“视图层”分离:
逻辑层(AppService):运行在JSCore引擎,负责业务逻辑(数据处理、接口请求、事件响应),不能直接操作DOM;
视图层(View):运行在WebView,负责页面渲染,通过数据绑定接收逻辑层数据。
设计原因:①隔离逻辑和渲染,避免JS执行阻塞页面渲染,提升流畅度;②限制逻辑层权限(无DOM操作能力),保障微信生态安全;③便于微信统一管控API和性能优化(如基础库预加载)。
补充:双线程通过“数据通信”交互,逻辑层setData后,数据会被序列化传递到视图层,视图层重新渲染,这个过程有一定延迟,所以不能频繁setData。
二、配置与目录类
问:小程序的app.json、page.json、sitemap.json分别有什么作用?实际配置时容易踩什么坑?
答:
app.json:全局配置,包括页面路径(pages数组,第一个为首页)、窗口样式(navigationBarTitleText、backgroundColor)、底部tabBar(list数组,最少2个最多5个)、网络超时(networkTimeout)、权限设置(permission)等;
page.json:页面单独配置,优先级高于app.json,可针对单个页面修改窗口样式(如隐藏导航栏)、设置页面路由参数、配置下拉刷新等;
sitemap.json:控制小程序页面是否被微信索引,通过rules数组设置“allow”(允许索引)或“disallow”(禁止索引),未配置则默认允许。
常见坑:①pages数组路径写错(如少写文件夹层级),导致页面无法加载;②tabBar的list数组中,pagePath必须是pages数组中已注册的路径,否则tab不显示;③窗口背景色backgroundColor仅支持十六进制颜色,不支持rgb或rgba。
问:小程序的分包加载是什么?为什么要用分包?配置时要注意什么?
答:分包加载是将小程序代码拆分成“主包”和“分包”,主包包含基础库、全局配置和首页,分包包含其他页面和资源,用户打开对应分包页面时才下载分包,减少首屏加载时间。
用分包的原因:小程序主包体积限制2M,分包单个最大20M,总大小不超过20M,拆分后可容纳更多资源(如图片、大型组件),提升用户体验。
配置注意:①在app.json中用“subpackages”数组配置分包,每个分包需指定“root”(分包根目录)和“pages”(分包内页面路径);②主包和分包不能有同名页面;③分包之间不能直接引用资源(如分包A不能用分包B的图片),但主包可引用所有分包资源,分包可引用主包资源。
三、组件与视图类
问:小程序的原生组件和自定义组件有什么区别?自定义组件的生命周期有哪些?
答:
原生组件:微信自带的基础组件(如view、text、image、button、scroll-view),由微信原生渲染,性能好,支持微信特有能力(如button的open-type=getUserInfo),样式和行为有固定规范,修改难度大;
自定义组件:开发者根据业务需求封装的组件(如弹窗、列表项),由wxml/wxss/js/json四个文件组成,可复用、可自定义样式和逻辑,灵活性高,但渲染性能略低于原生组件。
自定义组件生命周期(核心):
created:组件实例创建时触发,此时不能调用set
原创力文档


文档评论(0)