小程序面试题(day07)

文章目录

  • 前言
    • 微信小程序自定义tabbar的理解?
    • 微信小程序怎么缓存数据?
    • 微信小程序怎么进行网络请求?
    • 微信小程序路由跳转以及传参如何实现?
    • 微信小程序生命周期的理解?
    • 微信小程序模块化?
    • 微信小程序所有api放在哪里,简单介绍几个api?
    • 微信小程序应用和页面生命周期触发顺序?
    • 微信小程序如何使用sass预编译?
    • 微信小程序开发文档界面都有哪些操作,列举几项?


前言

微信小程序自定义tabbar的理解?

在app.json里面添加tabBar配置

"pages":[
    "pages/index/index",
    "pages/logs/logs",
    "pages/goods/index"
  ],
 "tabBar": {
    "custom": true,
    "color": "#000000",
    "selectedColor": "#000000",
    "backgroundColor": "#000000",
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/goods/index",
      "text": "商品"
    }]
  }

配置完成后,不会出现tabBar,需要在custom-tab-bar这个微信小程序已经定义的文件夹,里面添加对应的路径配置。

1. 在custom-tab-bar创建四个目录

custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

2. 给index.wxml添加tabBar的结构代码

<!--miniprogram/custom-tab-bar/index.wxml-->
<cover-view class="tab-bar">
  <cover-view class="tab-bar-border"></cover-view>
  <cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
    <cover-image src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
    <cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
  </cover-view>
</cover-view>

3. 给index.js 添加数据配置 和 事件方法

Component({
  data: {
    selected: 0,
    color: "#7A7E83",
    selectedColor: "#3cc51f",
    list: [{
      pagePath: "/pages/index/index",
      iconPath: "/image/home2_icon.png",
      selectedIconPath: "/image/home1_icon.png",
      text: "首页"
    }, {
      pagePath: "/pages/goods/index",
      iconPath: "/image/readTrain2_icon.png",
      selectedIconPath: "/image/readTrain1_icon.png",
      text: "商品"
    }]
  },
  attached() {
  },
  methods: {
    switchTab(e) {
      console.log("执行跳转",e);
      const data = e.currentTarget.dataset
      const url = data.path
      wx.switchTab({url})
      this.setData({
        selected: data.index
      })
    }
  }
})

4. 给index.wxss 添加样式
此时,通过点击切换页面,就可以实现。如果在选择点击切换按钮时,页面没根据tabBar进行切换,问题很可能能在custom-tab-bar目录的index.js 的list数据配置的页面路径,一定要/开头, 如/pages/goods/index,这才能找到页面。

微信小程序怎么缓存数据?

本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在用户关闭小程序重新打开时可以恢复之前的状态。我们还可以利用本地缓存一些服务端非实时的数据提高小程序获取数据的速度,在特定的场景下可以提高页面的渲染速度,减少用户的等待时间。
小程序提供了读写本地数据缓存的接口,通过wx.getStorage/wx.getStorageSync 读取本地缓存,通过wx.setStorage/wx.setStorageSync 写数据到缓存,其中Sync后缀的接口表示是同步接口

  • wx.getStorage 异步读取本地缓存数据,使用success、fail等回调函数处理接口调用情况
// 异步读取本地缓存
wx.getStorage({
  key: 'key1',
  success: function(res) {
    // 异步接口在success回调才能拿到返回值
    var value1 = res.data
  },
  fail: function() {
    console.log('读取key1发生错误')
  }
})

  • wx.getStorageSync 同步读取本地数据缓存,使用try…catch…处理读取的错误信息。
try{
  var value2 = wx.getStorageSync('key2')
}catch (e) {
  console.log('读取key2发生错误')
}

  • 读取本地数据缓存接口的参数 :视情况选参

     key:字符串类型,必填项,本地缓存中指定的key
     success:异步接口调用成功的回调函数
     fail:异步接口调用失败的回调函数
     complete:异步接口调用结束的回调函数,无论成功失败都会执行
    

微信小程序怎么进行网络请求?

微信小程序支持GET,POST等请求。用method可以设置.
微信小程序提供了 wx.request(Object object) 这个API,用于发送网络请求,该API接受一个对象作为参数,该对象包含多个属性,其中常用的有:

url,请求的地址,string类型,必填。
data,请求的参数,可以是一个字符串或一个对象,非必填。
method,请求的方法,string类型,默认值是"GET"。
success,请求成功的回调函数,非必填。
fail,请求失败的回调函数,非必填。
getInfo(){
    vxwx.request({
      url: 'https://www.escook.cn/api/get',
      method:'GET',
      data:{
        name: 'zs',
        age:20
      },
      success:(res) => {
        console.log(res.data)
      }
    })
  },

可以在时间onload中定义fuction,调用get\post网络请求

getInfo(){
vxwx.request({
url: ‘https://www.escook.cn/api/get,
method:POST,
data:{
name: ‘zs’,
age:20
},
success:(res) => {
console.log(res.data)
}
})
}



onload: funtion(e){
postInfo()getInfo()

}
postInfo(){
}
getInfo(){
}

微信小程序路由跳转以及传参如何实现?

wx.switchTab(Object object):
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,路径后不能带参数。
wx.reLaunch(Object object):
关闭所有页面,打开到应用内的某个页面。
需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔。例如:‘path?key=value&key2=value2’

wx.redirectTo(Object object):
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。可传参
wx.navigateTo(Object object):
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。

wx.navigateBack(Object object):
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。不可路径传参,其他都可。

微信小程序生命周期的理解?

微信小程序分为:应用生命周期和页面生命周期。

- [ ] 应用生命周期

onLaunch(Object object):小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。

onShow:生命周期回调——监听小程序启动或切前台。
onHide:生命周期回调——监听小程序切后台。

- [ ] 页面生命周期

onError:错误监听函数。
onPageNotFound:页面不存在监听函数。
onUnhandledRejection:未处理的 Promise 拒绝事件监听函数。
onThemeChange:监听系统主题变化。

微信小程序模块化?

概念:
可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。

  • exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports
    的指向会造成未知的错误。所以更推荐开发者采用 module.exports 来暴露模块接口,除非你已经清晰知道这两者的关系。
  • 小程序目前不支持直接引入 node_modules , 开发者需要使用到 node_modules
    时候建议拷贝出相关的代码到小程序的目录中,或者使用小程序支持的 npm 功能。

步骤:

  • 定义模块
    创建utils文件夹,并在utils文件夹下创建common.js文件
// common.js
function sayHello(name) {
  console.log(`Hello ${name} !`)
}
function sayGoodbye(name) {
  console.log(`Goodbye ${name} !`)
}

module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye
  • ​在需要使用这些模块的文件中,使用 require 将公共代码引入
var common = require('common.js')
Page({
  helloMINA: function() {
    common.sayHello('MINA')
  },
  goodbyeMINA: function() {
    common.sayGoodbye('MINA')
  }
})

微信小程序所有api放在哪里,简单介绍几个api?

介绍:小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。详细介绍请参考 API 文档。

 **小程序全局对象是: wx,所有的 API 都保存在 wx 对象中**

小程序 API 类型:

  • 事件监听 API:以 on 开头,用来监听某些事件的触发

     wx.onWindowResize(function callback) 监听窗口尺寸变化的事件
    
  • 同步 API:以 Sync 结尾的 API 都是同步 API

     wx.setStorageSync('key', 'value') 向本地存储中写入内容
    
  • 异步 API:大多数 API 都是异步 API,如 wx.request,wx.login 等。这类 API 接口通常都接受一个 Object 类型的参数,需要通过 success、fail、complete 接收调用的结果。

     wx.request() 发起网络数据请求,通过 success 回调函数接收数据
    

例如常用API:
页面跳转: wx.navigateTo()等
设置本地存储:wx.setStorageSync(‘名’,值)
读取本地存储:wx.getStorageSync(‘名’)
用在视频滑动时: wx.createIntersectionObserver()
上传图片wx.uploadFile({

   name:为上传的文件设置一个名称,

   url:设置上传文件的URL地址,由后台提供,

   filePath:设置上传文件的路径及文件名,格式为字符串,

   header:设置上传文件时的附加请求头数据,格式为对象,

   formData:设置上传文件时的附加普通数据,格式为对象,

   success:res=>{}

})
(1)该API方法一次只能上传1个文件。

(2)上传文件的接口必须是POST类型。

(3)上传文件时name属性时必不可少的。

微信小程序应用和页面生命周期触发顺序?

如图:
在这里插入图片描述
由此我们知道了小程序 程序生命周期函数和页面生命周期函数的调用顺序,这两者之间的事件顺序一般如上图所示小程序周期函数在前,页面周期函数触发在后

微信小程序如何使用sass预编译?

1.我们可以借助 easysass 插件实现在微信开发中使用 sass
2,导入已安装的vscode扩展

微信开发者工具 视图 => 扩展 => 右侧三个点 => 导入已安装的vscode扩展,接下来打开微信开发者工具的扩展文件夹。编辑 => 打开编辑器扩展文件
在这里插入图片描述
3.修改 spook.easysass-0.0.6/package.json 文件中的配置
在这里插入图片描述
4.重启开发者工具,就 OK 了。

微信小程序开发文档界面都有哪些操作,列举几项?

在这里插入图片描述
在这里插入图片描述

开放式选答,例如:我们想要查找跳转相关api的时候,可以点击搜索,搜索路由,就可以看到关于小程序页面跳转以及传参的五种方式了。基本功能描述以及实例代码都展示的非常详尽。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4657.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高并发系统设计:缓存、降级、限流、(熔断)

高并发系统设计&#xff1a;缓存、降级、限流、(熔断) 在开发高并发系统时有三把利器用来保护系统&#xff1a;缓存、降级和限流。 非核心服务可以采用降级、熔断&#xff0c;核心服务采用缓存和限流&#xff08;隔离流量可以最大限度的保障业务无损&#xff09;。 缓存 缓…

Scala隐式转换

Scala 的隐式转换是一种自动类型转换机制&#xff0c;它可以在编译器自动插入一些代码&#xff0c;将一个类型自动转换成另一个类型。这种转换可以发生在函数调用、赋值、类型转换等多种场景中。 隐式转换的机制可以让 Scala 代码更加简洁、优雅。例如&#xff0c;我们可以通过…

“体育游戏第一股”投资未来,望尘科技走向价值兑现周期

2022年的游戏市场&#xff0c;遗憾以疲弱之势落下帷幕。游戏市场规模与用户数量&#xff0c;均出现了小幅下降&#xff0c;显示出存量市场的典型特征。 但与此同时&#xff0c;更多垂直领域的拳头产品、响应市场需求的精品游戏&#xff0c;却屡屡掀起热潮。去年随世界杯而来的…

Darknet-YOLOv4训练步骤

1、打开终端&#xff0c;克隆项目 git clone https://github.com/AlexeyAB/darknet.git2、修改Makefile文件 其中&#xff0c;GPU和CUDNN是GPU加速&#xff0c;CUDNN_HALF是特定硬件加速&#xff0c;OPENCV是否使用OpenCV&#xff0c;AVX和OPENMP是CPU加速opencv编译问题htt…

JavaScript常用知识点

1-包装数据类型 一个基本数据类型当你使用的时候会自动转换成复杂数据类型&#xff0c;当你使用完毕&#xff0c;会自动转换为基本数据类型 比如 字符串 string是基本数据类型&#xff0c;但是它可以使用 length这个方法 &#xff0c;就是因为字符串也是一个包装数据类型&…

Spring整合

Spring整合6&#xff0c;Spring整合6.1 Spring整合Mybatis思路分析6.1.1 环境准备步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:添加Mybatis核心配置文件步骤8:编写应用…

Canny 边缘检测算法-python实现(附代码)

文章目录1、调用opencv进行canny边缘检测2、图像灰度化3、高斯模糊处理4、图像梯度、梯度幅值、梯度方向计算5、NMS&#xff08;非极大值抑制&#xff09;6、双阈值的边界选取摘要 : Canny 边缘检测算法由计算机科学家 John F. Canny 于 1986 年提出的。其不仅提供了算法&#…

【Python】更精美的俄罗斯方块开发指南(步骤已写)

文章目录前言一、游戏介绍二、源码剖析1.引入库2.读入数据总结前言 最近想找一些Python相关的游戏开发例子&#xff0c;正好在itch.io上闲逛看到这个俄罗斯方块项目&#xff0c;瞬间被惊艳到了。作者是 Mikhail &#xff0c;项目(tetris_for_two)地址是&#xff1a; https://g…

数据库原理及应用(四)——SQL语句(2)SQL基础查询以及常见运算符

一、SELECT语句基础 数据库查询是数据库的核心操作&#xff0c;SELECT 语句用于从数据库中选取数据。 SELECT [ALL/DISTINCT] <列名>,<列名>...FROM <表名或视图名>,<表名或视图名>[WHERE <条件表达式>][GROUP BY <列名1> [HAVING <条…

Jetpack compose:炫酷的按钮点击效果

Jetpack compose&#xff1a;炫酷的按钮点击效果 屏幕的每个组件在与用户交互时都有其给用户反馈的方式。例如&#xff0c;当用户触摸 Toggle 按钮时&#xff0c;它会更改其状态以响应交互。这种交互给用户一种感觉。 在此博客中&#xff0c;我们将实现一些自定义点击效果&…

Air700E开发板|移芯EC618|4G Cat.1模组:概述及PinOut

文章目录基础资料概述主要功能外设分布PinOut&#xff08;管脚定义&#xff09;管脚功能说明固件升级正常开机模式&#xff1a;下载模式&#xff1a;IO 电平选择基础资料 Air700E文档中心 概述 EVB-Air700E 开发板是合宙通信推出的基于 Air700E 模组所开发的&#xff0c;包含…

AI遮天传 NLP-词表示

本文重点在第三部分“词嵌入”及对Word2vec的介绍&#xff0c;前面的知识主要用于小白对词表示和一些定义、名称的理解&#xff0c;和对一些方法不足的思考。一、词表示1.1 词表示的定义词表示是一种将自然语言中的词转换为机器可理解含义的过程其中意思&#xff08;meaning&am…

Docker之安装Docker

安装Docker1. Docker 基本组成2. 安装Docker3. 阿里云镜像加速4. 底层原理1. Docker 基本组成 镜像&#xff08;image&#xff09; docker 镜像就好比是一个模板&#xff0c;可以同通过这个模板来创建容器服务&#xff0c;如&#xff1a;tomcat 镜像 > run > tomcat1 容器…

网络技术这十个术语你知道吗?

你好&#xff0c;这里是网络技术联盟站。 网络技术术语是指在计算机网络领域中所使用的专业术语。由于计算机技术的快速发展&#xff0c;网络技术术语也在不断地更新和发展。本文将对网络技术术语进行一些介绍和解释&#xff0c;以帮助读者更好地了解和掌握网络技术。 一、协…

内网Nexus代理yum、epel 源私有仓库 + 内网设备配置(centos)

一、准备 一些常用的镜像开源站 yum: 阿里开源镜像源&#xff1a;http://mirrors.aliyun.com/centos 网易开源镜像站&#xff1a;http://mirrors.163.com/ Centos社区镜像站&#xff1a;http://mirror.centos.org/centos/ 中科大开源镜像站&#xff1a;http://centos.ustc.edu…

Web3中文|World ID与GPT-4同时上线,OpenAI创始人的另一场探险?

这两天GPT-4的到来&#xff0c;再次成为朋友圈及媒体热议的话题。此次升级、更新让大家看到了AI给科技和社会带来的潜在挑战性甚至革命性。在赞叹AI迅速发展的同时&#xff0c;也让人再次聚焦关注其背后拥有超强开发和创新能力的OpenAI团队。 令人刮目相看的是&#xff0c;由A…

JMeter使用教程

作为一名开发工程师&#xff0c;当我们接到需求的时候&#xff0c;一般就是分析需要&#xff0c;确定思路&#xff0c;编码&#xff0c;自测&#xff0c;然后就可以让测试人员去测试了。在自测这一步&#xff0c;作为开发人员&#xff0c;很多时候就是测一下业务流程是否正确&a…

【JAVA程序设计】(C00125)基于Springboot的人事管理系统

基于Springboot的人事管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于Springboot框架开发的人事管理系统共分为四个角色&#xff1a;系统管理员、财务专员、人事专员、普通用户 管理员角色包含以下功能&#xff1a; 管理员拥有所有功能&#xff1a;绩效考核&a…

华为OD机试题,用 Java 解【叠放书籍】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:叠放书籍 题目 书籍的长宽都是…

RabbitMQ中死信队列和延迟队列

目录一、死信队列1.过期时间代码实现2.长度限制代码实现3.测试消息拒收4.死信队列小结二、延迟队列1.代码实现1.1 生产者1.2 生产者一、死信队列 死信队列&#xff0c;英文缩写&#xff1a;DLX 。Dead Letter Exchange&#xff08;死信交换机&#xff09;&#xff0c;当消息成…
最新文章