微信小程序面试题

1. 简单叙述小程序的相关文件类型

微信小程序项目构成主要有四个文件类型:

  WXML 是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构,内部主要是微信自己定义的一套组件

  WXSS是一套样式语言,用于描述WXML的组件样式。

  js逻辑处理,网络请求

  json 小程序设置,如页面注册、页面标题、tabBar

  app.json:必须要有的文件,如果没有这个文件,项目无法运行,因为这个文件作为微信小程序文件入口,整个小程序的全局配置,包括页面注册,网络设置,以及小程序窗口的背景颜色,配置导航条样式,配置默认标题

  app.js:必须要有的文件,没有也是会报错的,但是这个文件创建了就行,什么都不需要写以后我们可以在这个文件中监听并处理小程序声明周期函数,声明全局变量。

  app.wxss:全局样式

2.你是怎么封装小程序的数据请求的?

  讲所有的接口放在同一的js文件中并导出

  在app.js中创建封装请求数据的方法

  在子页面中调用封装的方法请求数据

  

3.有那些参数传值的方法?

  给html元素添加data-*属性来传递我们需要的参数,用currentTarget.dataset或者onload的param参数获取。但是data-*不能有大写字母不可以存放对象

  设置id的方法标识通过e.currentTarget.id获取设置的id值,然后通过设置全局对象的方法来传递参数

  在navigator中添加参数传值

4.使用过那些方法,提高小程序的应用速度

  提高页面加载速度

  用户行为预测

  减少默认data的大小

  组件化方案

5.小程序与原生app哪个好?

  小程序除了拥有公众号的低开发成本,低获客成本以及无需下载等优势,在服务请求延时与用户使用体验是都得到较大幅度的提升,使得其他能够承载更复杂的服务功能以及使用获得更好的用户体验

6.简述小程序原理

  小程序采用js、WXML、WXSS三种技术进行开发,从技术讲和现有的前端开发差不多,但深入挖掘的话却有所不同

  js:首先js的代码试运行在微信app的,并不是运行在浏览器,因此一些h5技术的应用,需要微信api支持,而这些限住h5技术的应用,且并不能称为严格的h5,同理,微信提供独有的某些api,h5也不支持。

  WXML:WXML微信自己基于XML语法开发的,因此开发时,只能使用微信提供的现有标签,HTML的标签是无法使用的。

  WXSS:WXSS具有css的大部分特性,但并不是所有的支持,而且支持哪些,不支持哪些,并没有详细的文档

  微信的架构,是数据缺东模式,他的ui和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现。

  小程序分为两个部分webview和AppService。其中webview主要是用来展示ui,AppService是用来处理业务逻辑、数据以及接口调用。他们在两个进程中运行,通过系统层JSBridge实现同行,实现UI的渲染、事件的处理

6.小程序的双向绑定和vue有什么不同

  vue:this.data

  小程序:this.setdata({ })

7.如何实现下拉刷新

  首先在全局的config中的window配置enablePullDownRefresh

  在page中定义onPullDownRefresh钩子函数,到达下拉刷新条件后,该钩子函数执行,发起请求方法。

  请求返回后,wx.stopPullDownRefresh停止刷新

8.  bindtab和catchtap的区别

  都是点击事件,bindtap不会阻止冒泡,catchtap是阻止冒泡的

9.页面跳转

  wx.navigateTo():保留当前页,跳转到应用内某个页面,但是不能跳转到tabbar

  wx.redirectTo():关闭当前页,跳转到用用内某个页面,但是不能跳到tabbar

  wx.switchTab():跳转到tabbar,并关闭其他所有非tabbar页面

  wx.navigateBack():关闭当前页面,返回上一页或者多页,可通过getCurrentPage() 获取当前的页面栈,决定需要返回几层

  wx.reLaunch():关闭所有页面,打开到应用内的某个页面

10.小程序生命周期

  onLoad():页面加载时触发,只会调用一次,可获取当前页面路径中的参数

  onShow():页面显示/切入前台时触发,一般用来发送数据请求

  onReady():页面初次渲染完成时触发,只调用一次,代表页面已可和视图进行交互

  onHide():页面隐藏/切入后台时触发,如底部tab切换到其他页面或小程序切入后台等

  onUnload():页面卸载时触发,如redirectTo或navigateBack到其他页面时

posted on 2020-09-28 00:28  Veritas_Yang  阅读(936)  评论(0编辑  收藏  举报