微信小程序面试题

时间:2024-10-03 18:14:01

一.微信小程序主要目录和文件的作用?

项目配置文件,做一些个性化配置,例如界面颜色、编译配置等等

当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab

配置小程序及其页面是否允许被微信索引

里面包含一个个具体的页面

页面样式, 作为全局样式,会作用于当前小程序的所有页面,局部页面样式  仅对当前页面生效。

小程序的逻辑

页面逻辑

页面配置

页面结构

二.wxml与标准的html的异同?

1.都是用来描述页面的结构;

2.都由标签、属性等构成;

3.标签名字不一样,且小程序标签更少,单一标签更多;

4.多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式

仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览

6.组件封装不同, WXML对组件进行了重新封装,

7.小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象。

三.WXSS和CSS的异同?

1.都是用来描述页面的样子;

具有 CSS 大部分的特性,也做了一些扩充和修改;

新增了尺寸单位,WXSS 在底层支持新的尺寸单位 rpx;

仅支持部分 CSS 选择器;

提供全局样式与局部样式

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

1.的接口放在统一的js文件中并导出

中创建封装请求数据的方法, 并且添加统一的配置, 使用promise对象来封装请求

3.页面中调用封装的方法请求数据

五.小程序页面之间有哪些(传值)传递数据的方法?

1.设置标签的data-*属性,在方法中通过.dataset获取到数据

六.小程序的双向绑定和vue的异同?

小程序直接的属性是不可以同步到视图的,必须调用setData

七.小程序的生命周期函数

App:

Onlaunch()  生命周期回调——监听小程序初始化

Onshow() 生命周期回调——监听小程序启动或切前台

Onhide()生命周期回调——监听小程序切后台

页面:

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

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

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

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

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

组件

  组件生命周期函数-在组件实例刚刚被创建时执行, setData

组件生命周期函数-在组件实例进入页面节点树时执行

组件生命周期函数-在组件布局完成后执行

  组件生命周期函数-在组件实例被移动到节点树另一个位置时执行

组件生命周期函数-在组件实例被从页面节点树移除时执行

组件生命周期声明对象

组件所在页面的生命周期声明对象

八.简述微信小程序原理

小程序的页面主要由四部分组成,分别是wxml、wxss、js、json。wxml用于构建用户界面,wxss用于编写界面的样式,js用于编写界面逻辑,json用于界面的配置。

微信的架构,是数据驱动的架构模式,它的 UI 和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现

程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端做中转,逻辑层发送网络请求也经由Native转发。

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

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

WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,

js 逻辑处理,网络请求

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

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

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

小程序的公共样式

十.哪些方法来提高微信小程序的应用速度?

1.精简代码,降低WXML结构和JS代码的复杂性;

2.合理使用setData调用,减少setData次数和数据量

3.必要时使用分包优化

十一分析微信小程序的优劣势?

优势.

  1. 入口众多

  1. 使用便捷

  1. 体验良好,有接近原生app的体验

  1. 微信助力,容易推广

  1. 成本更低

劣势

1.大小限制为2M,这导致无法开发大型的应用。

2.不能直接分享到朋友圈。

3.需要像app一样审核上架,这点相对于H5的发布要麻烦一些

4.微信对小程序的开发也有限制

十二.小程序和H5的区别?

  1. 是运行环境的不同

传统的HTML5的运行环境是浏览器,包括webview,而微信小程序的运行环境并非完整的浏览器,是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对小程序专门做了优化,配合自己定义的开发语言标准,提升了小程序的性能。

  1. 开发成本的不同

只在微信中运行,所以不用再去顾虑浏览器兼容性,不用担心生产环境中出现不可预料的奇妙BUG

3. 获取系统级权限的不同

系统级权限都可以和微信小程序无缝衔接

4.在生产环境的运行流畅度

长久以来,当HTML5应用面对复杂的业务逻辑或者丰富的页面交互时,它的体验总是不尽人意,需要不断的对项目优化来提升用户体验。但是由于微信小程序运行环境独立

十三.解决微信小程序的异步请求问题?

1.精简代码,降低WXML结构和JS代码的复杂性;

2. 合理使用setData调用,减少setData次数和数据量

3.必要时使用分包优化

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

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

十五.小程序如何实现下拉刷新?

1.需要在的window选项中或页面配置中开启enablePullDownRefresh。

2.可以通过触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。

3.当处理完数据刷新后,可以停止当前页面的下拉刷新。

4.用户执行下拉刷新的时候会触发onPullDownRefresh函数

十六.bindtap和catchtap的区别?

事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

十七.(),(),(),(),()的区别?

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

():关闭当前页面,跳转到应用内的某个页面。但是不能跳转 tabbar 页面

():跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

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

十八.小程序和Vue写法的区别?

1.数据请求

在页面加载请求数据时,两者钩子的使用有些类似,vue一般会在created或者mounted中请求数据,而在小程序,会在onLoad或者onShow中请求数据。

2.数据绑定

vue动态绑定一个变量的值为元素的某个属性的时候,会在变量前面加上冒号:

小程序绑定某个变量的值为元素属性时,会用两个大括号括起来,如果不加括号,为被认为是字符串

3.显示隐藏

vue中,使用v-if 和v-show控制元素的显示和隐藏

小程序中,使用wx-if和hidden控制元素的显示和隐藏

4.数据处理

vue:使用v-on:event绑定事件,或者使用@event绑定事件

<button v-on:click="counter += 1">Add 1</button>

<button v-on:="counter+=1">Add1</button>  //阻止事件冒泡

小程序中,全用bindtap(bind+event),或者catchtap(catch+event)绑定事件

<button bindtap="noWork">明天不上班</button>

<button catchtap="noWork">明天不上班</button>  //阻止事件冒泡

5.绑定事件传参

在vue中,需要在触发事件的方法中,把需要传递的数据作为形参传入就可以了

<button @click="say('明天不上班')"></button>

new Vue({

  el: '#app',

  methods:{

    say(arg){

    (arg)

    }

  }

})

在小程序中,不能直接在绑定事件的方法中传入参数,需要将参数作为属性值,绑定到元素上的data-属性上,然后在方法中,通过.*的方式获取

<view class='tr' bindtap='toApprove' data-></view>

Page({

data:{

    reason:''

},

toApprove(e) {

    let id = ;

  }

})

十九.小程序与原生App那个好?

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

二十.小程序的发布流程(开发流程)

1.申请注册微信小程序账号,注意:注册账号之后会有一个AppID,下载微信开发者工具,新建项目的时候需要填上,否则很多功能用不了,比如不能预览、不能上传代码等问题。

2.通过微信开发工具新建项目。

3.根据业务需求配置小程序,并进行业务代码的开发。

4.如果涉及到发送请求,需要在小程序后台管理页面配置服务器合法域名,或者关闭域名校验(部署则必须配置合法域名,域名必须是https协议的,并且已经备案了)(这里有可能问http和https的区别)

5.开发完成之后点击上传代码可以将小程序发不到体验版

6.体验版确定无误后提交审核,审核通过后就可以正式上线了。