以下要记住,如果说vue的特性,一般uniapp也是有的,不要在面试馆问你的时候脑子转不过来弯。
uniapp的好处是什么 / 你为什么选择uniapp
答: uniapp轻量化,并且多端适用,一套代码可以适配小程序、H5甚至ios和安卓APP,可扩展性比较强。并且是基于vue的,上手比较容易。
你简历中写的 await / async 实现了异步的请求,具体是怎么实现的?
前置知识:异步与同步—await / async
答:首先定义了一个用来获取计算结果的函数并且设为async函数,在进行数据计算的时候,发送请求并且用await修饰,请求计算有延迟,页面开始异步等待,等待结束后返回给一个变量,当获取到变量的时候,通过uniapp的双向绑定,将数据渲染出来
uniapp的预加载功能是怎么实现的呢?
答: 因为uniapp有提供一个预加载的API,uni.preloadPage。该项目的有个页面因为有视频,每次都加载的很慢,但是我如果每次进入APP时,就调用uni.preloadPage,这样视频页面就提前渲染,进入页面也就更快了。
uni.preloadPage({url: "/pages/test/test"}); //花括号里写需要预加载的页面
uniapp / vue的生命周期是什么
你接入微信支付的流程是怎么样的
首先通过选中的商品信息或者购物车中的商品进行计算,通过需要购买的商品信息和用户身份验证向后端生成一份订单,其中包括订单的详细信息、订单号等等。
我拿着订单号向后端请求支付,后端会通过请求微信的官方接口,获取验证签名、时间戳等信息,并且返回给前端,前端接受到参数后,用uni.requestPayment的API调起微信的支付页面。
后端收到支付的结果后,更改当前订单的支付状态,并且锁定支付行为,避免重复支付,(如果问具体的,你就说这个是后端做的)前端在拿到订单为已支付的状态之前,一直轮询订单状态,知道支付状态更新,整个支付流程结束。
你uniapp是怎么接入用户登录的
通常采用的是token验证的方式。
首先先引导用户点击登录按钮,根据微信的规则,通过登录按钮能拿到一个session,拿着这个session,可以获取到用户的具体信息和在小程序中的唯一ID:openid,这时在将数据存进数据库中,生成一条用户信息。后端通过用户信息返回一条可过期的token,我之后接入任何请求的时候只要验证token是否合法,把token带进header里就可以了。
uniapp中是怎么接入接口的
可以直接用httpGet/Post的方式,也可以用Uniapp中封装好的uni.request函数,只需要传入地址、请求方法、参数就可以发送请求,也可以根据需求修改请求头。
更多需要深入了解
简历中写有通过canvas保存二维码,能讲讲具体怎么实现的么
前置知识:canvas相关
我是这样做的,先通过html2canvas这个插件将需要保存的节点转化为canvas,然后canvas可以生成base64格式的图片,并且转化为图片展示,用户可以长按图片就保存到本地了。
能够讲讲双向绑定的理解吗
双向数据绑定就是,只要数据变化视图就变化,如果视图变化数据就变化,不管是vue还是uniapp,都是采用数据双向绑定的方法。其主要原理就是通过Watcher订阅者的方式对数据变化的监听,如果数据改变就及时更新,这也是vue的一个比较好的特性,防止数据改变了但是视图状态没改变的情况出现。
vue和uniapp如何获取dom
什么是dom?
通过给元素设置ref挂载在refs上,通过refs对象可以获取到对应的元素,就可以进行相关操作了
<div class="content" ref="btn">
console.log(this.$refs.btn);