微信开发小程序面试题
1.简单描述下微信开发小程序的相关文件类型?
1.wxml模板文件,是框架设计的一套标签语言,结合基本组件、事件系统、可以构建出页面的结构。
2.wxss样式文件。是一套样式语言,用于WXML的组件样式
3.js脚本逻辑文件,逻辑处理网络请求
4.json配置文件,小程序设置,如页面注册,页面标题及tabBar.
5.app.json整个小程序的 全局配置,包括:
- Pages:[所有页面路径]
- 网络设置(网络超时时间)
- 界面表现(页面注册)
- window:(背景色、导航样式、默认标题)
- 底部tab等
6.app.js监听并处理小程序的生命周期函数、声明全局变量
7.app.wxss全局裴矩的样式文件
2.请谈谈wxml与标准的html的异同?
- 都是用来描述页面的结构;
- 都是由标签、属性等构成;
- 标签名字不一样,且小程序标签更少,单一标签更多;
- 多了一些wx:if这样的属性以及{{}}这样的样式;
- WXML仅能在微信开小程序开发者工具中预览,而HTML可以在浏览器内预览
3.请谈谈wxss和css的异同?
- 都是描述页面的样子;
- wxss具有css大部分的特性,也做了一些扩大和修改;
- wxss仅支持部分css选择器;
- wxss提供全局式与局部样式
- wxss不支持window和dom文档流
4、小程序和Vue写法的区别?
遍历数组的时候:小程序wx:for = “lists”, 而Vue是v-for=“item in lists”
调用data模型(赋值)的时候:
小程序:
this.data.item //调用
this.setData{{item:1}} //赋值
Vue:
this.item //调用
this.item = 1 //赋值
5、小程序页面间有哪些传递数据的方法?
- 使用全局变量实现数据传递
- 页面跳转或重定向时,使用url带参数传递数据
- 使用组件化模板 template 传递参数
- 使用缓存传递参数
- 使用数据库传递数据
6、请谈谈小程序的生命周期函数?
onLoad()页面加载触发时,只会调用一次,可获取当前页面路径中的参数。
onShow()页面显示/切入前台时触发,一般用来发送数据请求。
onReady() 页面初次渲染完成时触发,只会调用一次,代表页面已可视化和视图层进行交互。
onHide()页面隐藏/切入后台时触发,如底部tab切换到其他或小程序切入后台等;
7.小程序内的页面跳转
- wx.navigateTo——保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面(参数必须为字符串)
- wx.redirectTo——关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
- wx.switchTab——跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,路径后不能带参数
- wx.navigateBack——关闭当前页面,返回上一页面或多级页面。可通过
- getCurrentPages() 获取当前的页面栈,决定需要返回几层
- wx.reLaunch——关闭所有页面,打开到应用内的某个页面
8.参数传递
- 给HTML元素中添加data-*属性来传递需要的值,之后通过e.currentTarget.dataset或onload的param参数获取。注意不能有大写字母,不可以存放对象
- 跳转页面时通过navigator传递需要的参数值
- 设置id的方法标识,通过e.currentTarget.id获取设置的id值,然后通过设置全局变量的方法来传递数值
9.如何自定义组件(弹窗)
- 先创建一个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)就可以了
10.小程序和vue写法的区别
- 循环遍历:小程序是wx:for=“list”,vue是v-for=“inforin list”
- 调用data模型:小程序是this.data.unifo,vue是this.unifo
- 给模型赋值:小程this.setData({unifo:1}),vue是直接this.unifo=1
11.小程序的双向绑定和vue哪里不一样
- 小程序直接this.data的属性是不可以同步到视图的,必须调用this.setData({})
12.小程序的优点和缺点
小程序的优点
- 无需下载
- 打开速度快
- 开发成本低
- 为用户提供良好的安全保障。发布有一套严格的审查流程,不能通过审查的程序无法发布上线
- 服务请求快
小程序的缺点
- 依托微信,不能开发后台管理功能
- 大小限制不能超过2M,不能打开超过5个层级的页面
13.简述小程序原理
- 小程序分为两个部分webview和appService,webview用来展现UI,appService用来处理业务逻辑、数据及接口调用,它们在两个进程中运行,通过系统层JSBridge实现通信,完成UI渲染、事件处理
14.提高小程序的应用速度的方法
- 减少默认data的大小
- 组件化方案,公用的如弹框等写个自定义的组件,然后调用
15.简述小程序原理
- 小程序分为两个部分webview和appService,webview用来展现UI,appService用来处理业务逻辑、数据及接口调用,它们在两个进程中运行,通过系统层JSBridge实现通信,完成UI渲染、事件处理
16.setData的回调函数
微信小程序的setData实现是和react的setData实现类似的,所以它也是一个异步函数,并且有回调函数的参数,当然平时小量数据我们可能并没有感觉到它的异步,但是为了确保逻辑的正确执行,在需要用到setData后 data里的数据的步骤,请写入setData的回调函数中,如下示例:
this.setData({a: this.data.a++},()=>{})
17.如何实现下拉刷新
- 先在app.json或page.json中配置 enablePullDownRefresh:true
- page里用onPullDownRefresh函数,在下拉刷新时执行
- 在下拉函数执行时发起数据请求,请求返回后,调用wx.stopPullDownRefresh停止下拉刷新的状态
18.bindtap和catchtap的区别是什么
bindtap不会阻止冒泡事件,catchtap阻止冒泡
19.微信小程序与H5的区别?
①运行环境不同(小程序在微信运行,h5在浏览器运行);
②开发成本不同(h5需要兼容不同的浏览器);
③获取系统权限不同(系统级权限可以和小程序无缝衔接);
④应用在生产环境的运行流畅度(h5需不断对项目优化来提高用户体验);
20.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'
})
21.小程序和小程序之间的跳转
- 在同一主体公众号上关联2个小程序appid,
- 用navigator,对应设置一些属性即可
- target:miniProgram——其他小程序
- target:self——当前小程序
22.数据请求怎么封装
- 将所有的接口放在统一的js文件中并导出(或者将请求地址、头、方法在一个js文件里统一定义为一个常量并导出)
- 在app.js创建封装请求数据的方法
- 在子页面中调用封装的方法请求数据
微信开发小程序面试题相关推荐
- 微信开发小程序云开发云存储中文件下载地址实时读取文件内容实时下载地址解读
微信开发小程序云开发云存储中文件下载地址解读 最近公司要我开发一款具备电子签名功能的微信小程序,虽然我是Android开发程序员,但...老总要求了那我就去做呗,好在微信小程序还算入门容易,网上有很多 ...
- APP软件开发、管理系统开发、网站建设、微信开发小程序分销商城等
APP开发:安卓.苹果.h5微信纯开发.微商城搭建.办公系统.财务系统.报名系统.活动.抽奖.促销系统.奖金结算系统.直播系统.网站建设.商城.全返系统.公众号开发.网站开发.软件开发 高端定制app ...
- 解决uniapp微信开发小程序背景本地图片渲染层网络层错误问题
一.首先看一下我们的源代码和报错原因 1.1源代码是这个样子的 1.2先来看下我们的页面 1.2.1原设计图是这个样子的 1.2.2而此时我们的页面 1.2.3然后来看下我们的报错 二.解决方法 2. ...
- 微信开发小程序报wxss编译错误
请尝试在控制台输入openVendor() ,删除里面的wcsc.exe 然后重启工具
- 微信小程序云开发用户身份登录_云开发版的微信商城小程序第一章
我们经过前面小程序基础和云开发基础的学习,今天就来带大家实现一个综合项目,上线一款属于自己的微信商城小程序. 文末有彩蛋 如果你有小程序基础可以跳过上面的基础,直接看下面的,如果没有小程序基础,建议你 ...
- c++如何让程序异常以后继续执行_微信商城小程序开发首页广告如何布局?c
小程序的开发使得商家变现微信流量越来越便利,因此各类小程序制作数量不断增加,特别是不少商家选择制作商城类小程序.而在进行小程序制作的时候,是需要布局相应广告来进行流量转化的,那么微信商城小程序开发首页 ...
- core和node开发小程序_成都小程序开发:微信小程序开发要多少钱?
定制开发一个微信小程序要多少钱呢? 成都小程序开发需要多少钱,成都小程序定制多少钱,成都小程序开发获得报价 微信小程序背靠腾讯的亿级流量,有着非常强大的线上引流功能,目前微信小程序的开发越来越火爆,选 ...
- 小程序获取头像试试水 02《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
本系列教程是针对粉丝的变现教程,还不是粉丝的可以关注我并且到社区:https://bbs.csdn.net/topics/603436232 进行打卡,不是老粉的也可以获取最终的技术变现学习,最终还有 ...
- 小程序的 HelloWord 01《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
本系列教程是针对粉丝的变现教程,还不是粉丝的可以关注我并且到社区:https://bbs.csdn.net/topics/603436232 进行打卡,不是老粉的也可以获取最终的技术变现学习,最终还有 ...
最新文章
- 各大浏览器 CSS3 和 HTML5 兼容速查表
- Arduino IDE增加ATmega32开发选项遇到的问题
- CentOS下python-mysqldb安装
- FlexRay车载网络标准
- find 和 DOM遍历孰快孰慢~
- 《Java8实战》笔记(03):Lambda表达式
- Java中线程池,你真的会用吗?
- 软件测试工程师-Python语言
- 部署邮件服务器之间相互通信
- 按月分表(create table)
- Spring常用注解。
- 用python的tkinter包设计一个随机点菜器
- 有哪些基于苹果HomeKit的全屋智能家居组合
- matlab colarbar设置,matlab color bar 如何改变色调
- Linux 进程结束前善后处理
- 《STL源码剖析》读书笔——(1)空间配置器
- 周鸿祎:无线互联网的垄断形势将更严峻
- Android剪贴板的使用
- 文件夹(system.)无法删除,打开时提示“引用了一个不可用的位置” 解决办法
- [论文阅读] (30)李沐老师视频学习——3.研究的艺术·讲好故事和论点
热门文章
- 能升级鸿蒙系统最便宜手机,这4部手机可升级至华为鸿蒙系统 网友:终于等到了...
- 针对QQ,TIM工作群提供服务的功能
- HTML5 3D书本翻页动画
- vs用ODBC连接MySQL数据库
- 设计模式 之 桥接模式 //依旧是游戏中的例子来解释设计模式
- 怎么用MathType给公式加三角着重号
- php java python go_python与java、php、go的优势对比,快进来看看哦
- Matlab---length函数
- 教师计算机学情分析模板,学习《信息技术课中的学情分析之浅见》心得体会
- python量化交易通达信_通达信交易策略,通达信量化交易