微信小程序常见面试题

2023-11-20

1、小程序有几个文件

  • WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构;
  • WXSS: 用于描述 WXML 的组件样式;
  • js: 逻辑处理;
  • json:小程序页面配置。

2、微信小程序与 H5 的区别

  • 运行环境:小程序的运行环境是微信客户端,H5 是浏览器。
  • 开发成本:小程序只在微信中运行,所以不用再去顾虑浏览器兼容性;H5 需要考虑。
  • 用户体验:小程序依然基于 APP 端去实现,在使用时更流畅。
  • 权限获取:小程序相比于 H5 能获得更多的系统权限,比如网络通信状态、数据缓存能力等;
  • 上线发布:小程序上线发布前要上传项目给微信官方审核,H5 无需通过官方审核。

3、简述微信小程序原理

  • 微信小程序本质就是一个单页面应用,采用 JavaScript、WXML、WXSS 进行开发;
  • 小程序使用数据驱动的架构模式,UI 和数据是分离的,通过对数据的更改来实现页面更新;
  • 小程序分为 webview 和 appService 两部分。其中 webview 用来展现 UI ,appService 用来处理业务逻辑。它们在两个进程中运行,这两个线程的通信会经由微信客户端,逻辑层发送网络请求也经由微信客户端转发。

4、小程序 WXSS  CSS 的区别

  • 新增尺寸单位为 rpx, rpx 是响应式像素,可以根据屏幕宽度进行自适应;
  • 小程序样式使用 @import 引入外联样式文件;
  • wxss 中不能使用本地图片;
  • wxss 仅支持部分 css 选择器:.class、#id、element、选择器分组(element, element)、::after、::before。

5、微信小程序与 vue 区别

  • 生命周期不一样,小程序生命周期比较简单;
  • 小程序数据绑定需要使用 {{ }},vue 则是使用 v-bind 来绑定;
  • 小程序使用 bindtap(bind+event) 绑定事件,vue 使用 v-on:event 绑定事件;
  • 小程序使用 wx-if 和 hidden 控制元素的显示和隐藏,vue 则使用 v-if 和 v-show 来控制;
  • 小程序列表渲染使用 wx:for="{{array}}",vue 使用 v-for="item in array";
  • 小程序条件渲染使用 wx:if="{{condition}}",vue 使用 v-if="condition";
  • 小程序使用 <block> 元素来渲染一个包含多节点的结构块,vue 使用 <template> 元素;
  • 小程序使用 this.setData({ key :value }) 来更新绑定数据。vue 使用 this.data.key = value。

6、微信小程序 Page 的生命周期有哪些

  • onLoad:页面加载时触发。一个页面只会调用一次,可在 onLoad 的参数中获取打开当前页面路径中的参数;
  • onShow:页面显示或切入前台时触发;
  • onReady:页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互;
  • onHide:页面隐藏或切入后台时触发。 如 navigateTo 或  tab 切换到其他页面,小程序切入后台等;
  • onUnload:页面卸载时触发。如 redirectTo 或 navigateBack 到其他页面时。

7、小程序的双向绑定和 Vue 哪里不一样

        小程序里面自己触发双向绑定要使用 this.setData({ key :value }) 来更新值。vue 使用 this.data.key = value 即可。

8、哪些方法可以用来提高微信小程序的应用速度

  • 提高页面加载速度
  • 用户行为预测
  • 减少默认 data 的大小
  • 组件化方案

9、如何封装微信小程序的数据请求

  • 将所有的请求接口配置(url)放在一个 js 文件中并导出;
  • 将请求方法(如:get、post 等)封装于一个 js 文件中并导出;
  • 导入前面两个 js 文件获取 url 和请求方法,然后发送数据请求。

10、小程序怎么给事件传值

        在组件标签上通过绑定 data-key = value , 然后事件处理函数里面通过 e.currentTarget.dataset.key 来获取标签上绑定的值。

<button bindtap="get" data-name="测试"> 拿到传值</button>
get(e){ console.log(e.currentTarget.dataset.name) }

11、bindtap 和 catchtap 区别 

        bindtap 不会阻止冒泡,catchtap 可以阻止冒泡。

12、小程序有哪些传递数据的方法

  • 使用全局变量实现数据传递。在 app.js 文件中定义全局变量 globalData, 将需要存储的信息存放在里面;
  • 使用 navigateTo 与 redirectTo 的时候,可以将数据拼接在 url 后面,然后在目标页面的 onLoad 生命周期中获取传递过来的值;
  • 使用本地缓存 storage。

13、简述下 navigateTo(),redirectTo(),switchTab(),navigateBack(),reLaunch() 的区别

  • wx.navigateTo():保留当前页面,然后跳转到某个页面。但是不能跳转到 tabbar 页面;
  • wx.redirectTo() :关闭当前页面,然后跳转到某个页面。但是不能跳转到 tabbar 页面;
  • wx.switchTab():跳转到某个 tabbar 页面,并关闭其他所有非 tabbar 页面;
  • wx.navigateBack():关闭当前页面,返回到上一页面或目标页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层;
  • wx.reLaunch():关闭所有页面,打开某个页面。

14、小程序 wx:if 和 hidden 的区别

        wx:if 有更高的切换消耗,hidden 有更高的初始渲染消耗。如果频繁切换,用 hidden,如果在运行时条件不轻易改变则使用 wx:if。

15、在小程序中如何获取用户信息

        使用 button 并设置其属性:open-type="getUserInfo",在 bindgetuserinfo 绑定的回调函数中通过 e.detail 获取。

<button open-type="getUserInfo" "bindgetuserinfo"="eventhandle">获取用户信息</button>

16、小程序中如何实现分享功能

  • 转发给朋友:监听用户点击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,然后在页面的 onShareAppMessage() 函数中自定义转发内容。
  • 分享到朋友圈:监听右上角菜单“分享到朋友圈”按钮的行为, 然后在页面的  onShareTimeline() 函数中自定义分享内容。

17、小程序中如何用像Vant一样的第三方组件

  • 在命令行中执行:npm init,初始化项目
  • 安装组件
  • 在小程序开发工具中,选择【工具】菜单 -> 选择【构建 npm】命令

18、小程序如何实现父子组件传参

  • 父传子:在子组件中定义属性,父组件在引用子组件的时候通过设置属性的值给子组件传值;
  • 子传父:在组件中绑定一个自定义事件,在子组件中通过 triggerEvent('myevent', myEventDetail) 触发这个事件,给父组件传值。

19、如何实现下拉刷新

  • 通过在 app.json(全局)或者页面的 json 中配置 "enablePullDownRefresh": true,开启下拉刷新;
  • 也可使用 scroll-view 组件,当滚动到顶部会触发 scrolltoupper 事件,在这个事件里自定义实现下拉刷新。

20、小程序 onPageScroll 方法的使用注意什么

        由于此方法调用频繁,不需要时应该去掉,不要保留空方法,避免在此方法中频繁调用 setData() 或同步 API。

21、小程序视图渲染结束后回调

        使用 setData(data, callback),在 callback 回调方法中添加后续操作代码。

22、webview 的页面怎么跳转到小程序导航的页面

        小程序导航的页面可以通过 switchTab 跳转,但默认情况是不会重新加载数据的。若需加载新数据,则在 success 属性中处理:

success: function (e) {
    var page = getCurrentPages().pop();
    if (page == undefined || page == null) return;
    page.onLoad();
}

        webview 的页面,则通过:

wx.miniProgram.switchTab({
    url: '/pages/index/index'
})

23、webview 中的页面怎么跳回小程序中?

        webview 网页中可使用 JSSDK1.3.2 提供的接口返回小程序页面

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

// javascript
wx.miniProgram.navigateTo({url: '/pages/login/login'+'$params' })

24、微信小程序登陆流程 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序常见面试题 的相关文章

  • nrm 切换 npm 源

    npm 配置仓库 查看当前仓库配置 npm config list 查看配置 npm config ls l 查看详细配置 可以看到 registry 配置 就是仓库地址 简述修改配置的 3 种方式 1 通过 config 配置 npm c
  • cesium for ue->CesiumUtility

    该模块共18个文件 3152行 含注释 截至2022年11月9日 剩下13个文件 1443行
  • 贝叶斯相关公式(Bayes)

    这里只是记录一下 非常推荐马同学高等数学 文末有原文 点击这里看里面的例一应该是理解贝叶斯公式最好的例子 如果你稍微有一些基础 我觉得文末第二个链接中的例一更加适合你 代数推导 1 贝叶斯公式 是根据条件概率推导的 P A B P AB P
  • 基于ssm+ajax实现的多条件带省略号分页

    ssm ajax layui实现的多条件分页源码 案列种包含数据库和前后台完整源码 演示地址 ssm ajax实现的多条件分页源码 前台核心代码 layui use form function var form layui form for
  • 一些论文审稿方面的体会

    本人小硕在读 老师也让帮忙审了论文 多是与自己领域相关的 老师让多学习学习 每次审论文都感觉诚惶诚恐 要是提的问题太多吧 感觉万一给拒了作者该多伤心啊 这挑的问题少吧 这明显对不起更多的人嘛 大体总结一下自己遇到的问题吧 一 现在论文提交量
  • Win10+CUDA8.0+Visual Studio2013安装、环境配置教程

    最近刚开始接触opencv的GPL编程 所以自己搜了下网上有关配置CUDA的过程 经过摸索整理 配置成功 现将教程整理如下 1 下载CUDA安装包 下载地址https developer nvidia com cuda downloads
  • 使用CUDA和CUFFT进行快速1D卷积的示例

    使用CUDA和CUFFT进行快速1D卷积的示例 在计算机视觉 数字信号处理和机器学习中 卷积是一种常见的操作 然而 卷积操作通常需要大量计算 因此需要一种高效的方法来完成 CUDA和CUFFT可以用于对使用FFT的快速1D卷积进行加速 在本
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua

随机推荐

  • c3p0数据库连接池死锁问题和mysql重连,连接丢失

    c3p0参数解释 最常用配置 initialPoolSize 连接池初始化时创建的连接数 default 3 取值应在minPoolSize与maxPoolSize之间 c3p0 initialPoolSize 10 minPoolSize
  • 敏捷项目管理ACP解析会笔记

    互联网时代企业环境现状 产品生命周期急剧缩短 市场环境变化太快 客户不满意 客户 团队 产品 产品需求界定不清 什么是敏捷项目管理 低成本 快速度 高质量 交付更高质量 敏捷宣言 个体和交互 重于过程和工具 可工作的软件 重于面面俱到的文档
  • Java高并发处理方案

    java高并发 如何解决 什么方式解决 一 什么是高并发 二 高并发解决思路 三 高并发解决方案 一 什么是高并发 1 1 高并发 High Concurrency 是互联网分布式系统架构设计中必须考虑的因素之一 它通常是指 通过设计保证系
  • 实现一个函数,判断一个数是不是素数

    include
  • Stream实现List和Map互转总结

    本文来说下Stream实现List和Map互转总结 文章目录 实体类 Map转List代码 List转Map代码 实体类 本篇介绍Stream流List和Map互转 同时在转换过程中遇到的问题分析 package cn wideth col
  • 找到专业的软件外包开发公司

    今天给大家分享怎么样找软件开发公司开发 而且找到的是既负责又专业的 那怎么去找呢 看哪些方面 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 1 案例看实力 在选择软件定制开发公司时 必须要留意对方的案例如何 有否做过大型的
  • 理解HTTP headers之Expires、Cache-Control、IF-Modified-Since

    一 什么是Http headers 当你在浏览器地址栏里键入一个url 你的浏览器将会类似如下的http请求 GET tutorials other top 20 mysql best practices HTTP 1 1 Host net
  • Hive函数row_number实现

    需求 查询一批用户最后三次登陆时间 ip数据 理解需求是实现分组取前n个值 实现方式是先按照uid字段升序或倒序 时间字段倒序排序数据集合 然后遍历数据集合 用row number函数遍历uid字段 相同则row number值 1 取ro
  • el-table添加border边框线不显示

    el table添加border属性 使用作用域插槽 会不现实左边的边框线 或者右边的边框线 总结问题 1 固定了表格的高度 height 250 把高度去掉
  • JavaScript(函数,作用域和闭包)

    目录 一 什么是函数 1 1 常用系统函数 1 2 函数声明 1 3 函数表达式 二 预解析 2 1 函数自调用 2 2 回调函数 三 变量的作用域 3 1 隐式全局变量 四 作用域与块级作用域 五 作用域链 六 闭包 一 什么是函数 类似
  • 微信小程序:图片高度设置无效问题

    控制台查看元素 显示其style中多了一个没有设置的高度值 找了很久发现是因为image标签设置了mode widthFix 此时高度会自适应 样式中设置高度无效
  • 对接百度api的工具类:Base64Util,FileUtil,HttpUtil

    对接百度api的工具类 Base64Util FileUtil HttpUtil package com baidu ai aip utils Base64 工具类 public class Base64Util private stati
  • Windows中安装GCC教程

    GCC的安装教程 GCC简介 GCC编译器通常在Linux系统下使用 一般来说大部分发行的系统会默认安装 GCC编译器使用gcc指令在终端进行shell操作 对于新接触Linux的朋友来说 简单的在Windows中练习过渡一下应该就足够了
  • Python数据库接口以及API

    非常详细的解释 包含数据库分类以及各种数据库的特点 https wiki python org moin DatabaseInterfaces
  • flex布局详解

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 flex基本概念 任何一个容器都可以指定为Flex布局 例如 box displa
  • 3min利用Python实现9种经典排序算法可视化!(附源代码)

    来源 恋习Python 本文附视频 建议收藏 本文为你分享实现9种经典排序算法可视化的方法 3分钟即可实现 导 读 近在某网站上看到一个视频 是关于排序算法的可视化的 看着挺有意思的 也特别喜感 不知道作者是怎么做的 但是突然很想自己实现一
  • Qt中使用QFrame,并使得边框周围添加阴影的效果

    参考大神博客 https blog csdn net wzz953200463 article details 100533435 1 使用Qframe实现阴影的效果 首先我们需要放置一个frame控件在界面上 2 需要加上头文件 incl
  • 代码文档生成工具:Doxygen

    1 什么是 Doxygen Doxygen是一个程序的文档生成工具 可以将程序中的注释转换成说明文档或者说是API参考手册 同时也支持Markdown等文本工具 从而减少程序员整理文档的时间 程序中的注释需要遵循一定的规则书写 才能让Dox
  • SQL触发器编写与查看

    1 已有数据查看 2 编写触发器 以更新表一为条件 go create trigger TG Insert 创建触发器 on DB TABLE 20210528 定位某张表 for UPDATE 表 DB TABLE 20210528 更新
  • 微信小程序常见面试题

    1 小程序有几个文件 WXML 是框架设计的一套标签语言 结合基础组件 事件系统 可以构建出页面的结构 WXSS 用于描述 WXML 的组件样式 js 逻辑处理 json 小程序页面配置 2 微信小程序与 H5 的区别 运行环境 小程序的运