小程序面试题

小程序面试题

1.简单描述微信小程序的相关文件类型

微信小程序项目结构主要有四个文件类型:
1.wxml 模块文件,是框架设计的一套标签语言,结合基础组件、事件系统、可以构建出页面的结构;
2.wxss 样式文件,是一套样式语言,用于描述wxml的组件样式;
3.js 脚本逻辑文件,逻辑处理网络请求;
4.json 配置文件,小程序设置,如页面注册,页面标题及tabbar;
5.app.json 整个小程序的全局配置,包括:
1.pages :(所有页面路径)
2.网络设置(网络超时时间)
3.界面表现(页面注册)
4.window(背景色、导航样式、默认标题)
5.底部tab等
6.app.js 监听并处理小程序的生命周期函数、声明全局变量;
7.app.wxss 全局配置的样式文件。

2.wxml与标准的html的异同
  1. 都是用了描述页面的结构
  2. 都由标签、属性等构成
  3. 标签名字不一样,且小程序标签更少,单一标签更多
  4. 多了一些wx:if这样的属性及 {{ }} 这样的表达式
  5. wxml仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览
  6. 组件封装不同,wxml对组件进行了重新封装
  7. 小程序运行在 JS Core 内,没有 DOM 树和 window 对象,小程序中无法使用window 对象和 document 对象
3.wxss与css的异同
  1. 都是用来描述页面的样式
  2. wxss 具有 css 大部分的特性,但是也做了一些扩充和修改
  3. wxss新增了尺寸单位,wxss 在底层支持新的尺寸单位 rpx
  4. wxss 斤支持部分css 选择器
  5. wxss提供全局样式与局部样式
  6. wxss不支持windowdom文档流
4.怎么封装微信小程序的数据请求
  • 方案一

    1. 将所有的接口放在统一的js文件中并导出
    2. app.js中创建封装请求数据的方法
    3. 在子页面中调用封装的请求数据
  • 方案二

  1. 在根目录下创建utils目录及api.js文件和apiConfig.js文件
  2. apiConfig.js封装基础的请求方法,设置请求体,带上token和异常处理等
  3. api.js中引入apiConfig.js封装好的请求方法,根据页面数据请求的urls,设置对应的方法并导出
  4. 在具体页面导入

例如
api.js

	export const configUrl = 'https://websit.tolandhealth.cn'

apiConfig.js

	import { baseUrl } from './api.js'
// const baseUrl="https://websit.tolandhealth.cn";
// 没有token
export function GetAuthService(url, data) {
	return new Promise(function(reslove, reject) {
		uni.request({
			header: {
				'Content-Type': 'application/x-www-form-urlencoded'
			},
			url: baseUrl + url, //这是接口路径
			method: "POST", //get   post 
			data: data, //接口传参
			success: res => {
				console.log('RES', res)
				if (res.statusCode == 200) {
					// console.log('200', res.data)
					// 600039


				} else {
					console.log('1234')
				}
				let aa = '';
				aa = res.data
				reslove(aa) //获取返回
			},
			fail: () => {},

			complete: () => {}
		})
	})

}
// 带token
export function GetServerData(url, data) {
	return new Promise(function(reslove, reject) {
		uni.request({
			header: {
				'Content-Type': 'application/x-www-form-urlencoded'
			},
			url: baseUrl + url, //这是接口路径
			method: "POST", //get   post 
			data: data, //接口传参
			success: res => {
				// console.log('RES', res)
				if (res.statusCode == 200) {
					// console.log('200', res.data)
					// 600039


				} else {
					console.log('1234')
				}
				let aa = '';
				aa = res.data
				reslove(aa) //获取返回
			},
			fail: () => {},

			complete: () => {}
		})
	})

}

页面引入

import {GetAuthService,GetServerData} from '../../../utils/apiConfig.js'

//没有token

var json = {
					userName:'userName',
					password: 'password'
				}
				
GetAuthService('/webservice/wtWebApiH/GetAuthService', json).then((res) => {
console.log(res)
})

//带token

GetServerData('/webservice/wtWebApiH/GetServerData', {
							token: token,
							infoType: '',
							jsonValue: JSON.stringify(json)
						}).then((res1) => {
						console.log(res1)
						})
5.小程序的传值方法有哪些
  1. 给HTML元素添加data-*属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data-名称不能有大写字母和不可以存放对象
  2. 设置id 的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值
  3. 使用全局变量实现数据传递
  4. 页面跳转或重定向时,使用url带参数传递数据
  5. 使用组件模板template传递参数
  6. 使用缓存传递参数
  7. 使用数据库传递参数
6.小程序页面跳转?
  1. wx.navigateTo():保留当前页,跳转到应用内某个页面,但是不能跳转到tabbar
  2. wx.redirectTo():关闭当前页,跳转到用用内某个页面,但是不能跳到tabbar
  3. wx.switchTab():跳转到tabbar,并关闭其他所有非tabbar页面
  4. wx.navigateBack():关闭当前页面,返回上一页或者多页,可通过getCurrentPage() 获取当前的页面栈,决定需要返回几层
  5. wx.reLaunch():关闭所有页面,打开到应用内的某个页面
7.bindtap和catchtap的区别
bind事件绑定不会阻止冒泡事件向上冒泡
catch事件绑定可以阻止冒泡事件向上冒泡
8.小程序生命周期
  1. onLoad():页面加载时触发,只会调用一次,可获取当前页面路径中的参数
  2. onShow():页面显示/切入前台时触发,一般用来发送数据请求
  3. onReady():页面初次渲染完成时触发,只调用一次,代表页面已可和视图进行交互
  4. onHide():页面隐藏/切入后台时触发,如底部tab切换到其他页面或小程序切入后台等
  5. onUnload():页面卸载时触发,如redirectTo或navigateBack到其他页面时
9.小程序和vue双向绑定
在vue中进行数据绑定后,当数据修改了会直接更新到视图上
但是在小程序中呢,data数据修改是不会直接同步到,必须调用this.setData()这个方法
	this.setData({
	    // 这里设置
	})
10.微信小程序的优劣势
** 优势 **
即用即走,不用安装,省流量,省安装时间,不占用桌面
依托微信流量,天生推广传播优势
开发成本比 App 低
** 缺点 **
用户留存,即用即走是优势,也存在一些问题
入口相对传统 App 要深很多
限制较多,页面大小不能超过2M。不能打开超过10个层级的页面
11.怎么解决小程序的异步请求问题

小程序支持大部分 ES6 语法
在返回成功的回调里面处理逻辑
Promise 异步

12. 小程序关联微信公众号如何确定用户的唯一性

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 unionid 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 unionid 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用, unionid 是相同的

13. 如何实现下拉刷新

首先在全局 config 中的 window 配置 enablePullDownRefresh
在 Page 中定义 onPullDownRefresh 钩子函数,到达下拉刷新条件后,该钩子函数执行,发起请求方法
请求返回后,调用 wx.stopPullDownRefresh 停止下拉刷新

14. 简述下 wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch()的区别
  1. wx.navigateTo():保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
  2. wx.redirectTo():关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
  3. wx.switchTab():跳转到 abBar 页面,并关闭其他所有非 tabBar 页面
  4. wx.navigateBack()关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层
  5. wx.reLaunch():关闭所有页面,打开到应用内的某个页面
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值