202104 -- 小程序

1. 请谈谈微信小程序作用?

  • app.json 是小程序的配置文件入口,整个小程序的全局配置

  • app.js 监听处理小程序的生命周期函数,声明全局变量

  • app.wxss 全局配置的样式文件

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

  • index.json 配置当前页面标题和引入组件等

  • index.wxml 页面结构

  • index.wxss 页面样式表

  • index.js 页面的逻辑,请求和数据处理等

2. 小程序的全局变量 globalData 和 storage,时效性是一样的吗?

  • globalData 是内存,storage 是缓存。即小程序退出 globalData 会清空,storage 则不会

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

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

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

  2. wxss 是一套样式语言,用于描述 wxml 的组件样式

  3. js 逻辑处理,网络请求

  4. json 小程序配置,如页面注册,页面标题及 tabBar

4. 请谈谈 wxml 与标准的 html 的异同?

  • 都是用来描述页面的结构

  • 都由标签、属性等构成

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

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

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

  • 组件封装不同, wxml 对组件进行了重新封装,

  • 小程序运行在 jsCode 内,没有 DOM 树和 window 对象,小程序中无法使用 window 对象和 document 对象。

5. 小程序的生命周期函数?

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

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

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

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

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

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

  1. 使用 promise 封装 request

  2. 在 service 文件夹集中管理和使用 api

  3. 在子页面中调用 service 文件夹中的 api 方法请求数据

7. 有哪些参数传值的方法?

  1. 给 HTML 元素添加 data-* 属性,然后通过 e.currentTarget.dataset 或 onload 的 param 参数获取。但 data-名称 不能有大写字母和不可以存放对象

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

  3. 在 navigator 中添加参数传值

8. 你使用过哪些方法,来提高微信小程序的应用速度?

  1. 提高页面加载速度

  2. 用户行为预测

  3. 减少默认 data 的大小

  4. 组件化方案

9. 简述微信小程序原理

  1. js 是运行在微信中的而不是浏览器,因此一些 h5 支持的 api 并不适用于小程序;微信提供独有的某些 api,h5 也不支持或支持的不是很好

  2. wxml 微信基于自己XML语法开发的,无法使用 html 的标签

  3. wxss 具有 css 的大部分特性

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

  • 小程序分为两部分:webview 和 appService

    • webview 主要用来展现 ui

    • appService 用来处理业务逻辑、数据和接口调用

    • 分别在两个进程中运行,通过系统层 JSBridge 实现通信,实现 ui 渲染、事件的处理

10. 小程序的双向绑定和 vue 哪里不一样

  • 小程序直接 this.data 的属性是不可以同步到视图的,必须使用 this.setData({属性: 属性值})
posted on 2021-10-25 21:46  pleaseAnswer  阅读(39)  评论(0编辑  收藏  举报