【uni-app高频面试题——精品一】

news2025/1/16 23:21:29

uni-app高频面试题

  • 谈谈你对uni-app的理解🍕
  • uni中如何为不同的平台设置不同的代码
  • uniapp中封装接口请求相较于微信小程序有什么要注意的
  • uni-app中的本地存储数据和接收数据是什么✊
  • uni-app 路由与页面跳转💪
  • uni-app全局变量怎么定义,怎么获取🌝
  • uni中生命周期⭐
  • 提高微信小程序速度的方法✈️

谈谈你对uni-app的理解🍕

uni-app是一个使用vue.js开发所有前端应用的框架,开发者编写一套代码,可以发布到iOS、Android、web(响应式)、以及各种小程序(微信 / 支付宝 / 百度)、快应用等多个平台。

优点:

  • 跨平台。 正真做到一段代码多端发行,支持原生代码混写和原生sdk集成
  • 运行体验良好。 组件、api与微信小程序一致,兼容weex原生渲染
  • 通用技术栈,学习成本更低。 vue的的语法,微信小程序的api,对于前端开发人员来说更容易上手
  • 开放生态,组件更丰富。 支持通过npm安装第三方包;支持微信小程序自定义组件以及sdk;兼容mpvue组件及项目;app端支持与原生混合编码

缺点:

  • 缺少APP的灵活性,动画使用不方便,css动画使用多了会卡顿,所以整体APP的界面只能中规中矩
  • 兼容性问题依然有很多小细节问题
  • uvue 没有提供的原生功能,需要原生可发协助开发
  • 对于三端同时上线,一端存在 bug 的情况,Weex 并不能保证做到牵一发而不动全身。需要更加的小心

uni-app的功能框架图
效 果 图
在这里插入图片描述

uni中如何为不同的平台设置不同的代码

mpvue 是一个使用 Vue.js 开发小程序的前端框架,由美团点评技术团队开发在2018年3月开源。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

条件注释的语法 官网条件注释
写法:以 #ifdef #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

  • #ifdef:if defined 仅在 某平台存在
  • #ifndef:if not defined 除了 某平台均存在
  • %PLATFORM%:平台名称

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

在这里插入图片描述

该大写的必须大写

  • H5
// #ifdef  APP-PLUS
平台特有的API实现
// #endif

uniapp中封装接口请求相较于微信小程序有什么要注意的

uniapp和微信小程序都提供了网络请求API(uni.request(object) 和 wx.request(object)),但 uniapp 为了实现跨端兼容,需要注意网络请求跨域问题,微信小程序不用考虑多端兼容 ,也不会出现跨域问题。

简单讲: 如果uniapp要在web端进行适配,要注意请求跨域问题—需要配置代理

uniapp中的跨域问题依然可以通过在 vue.config.js 中配置Proxy代理解决;

封装的目的

  • 发送请求的时候调用更简洁
  • 添加一些通用的配置(超时时间,请求头)。 调用者没有传入配置的时候用默认的,调用者传入了相同
  • 优先使用调用者
  • 改成使用promise解决异步问题
  • 统一维护域名
  • 添加请求拦截器,在所有请求之前加一些通用的操作
  • 代码响应之前,进行一些通用的操作

封装统一的http请求
针对于uni.request我们可以沿用之前我们在小程序中的封装思路,封装http请求

效 果 图

// vue.config.js for less-loader@6.0.0
module.exports = {
    devServer: {
        proxy: {
        	// 代理的名称,一般以这种格式命名,当然你也可以随便起
            '/xxx-api': {
                target: 'http://1.111.xx.123:3000',  // 后台接口的协议、域名、端口号
                changeOrigin: true,  //是否跨域
                pathRewrite: {
                    '^/xxx-api': ''//路径重写
                    //如果不重写,则请求时的路径中会带有这个/xxx-api
                }
            },
        }
    }
};

uni-app中的本地存储数据和接收数据是什么✊

同步储存和读取

  • 存储:
    uni.setStorageSync(‘name’,‘LZJAPYX,ZDL’); // name为键名 LZJAPYX,ZDL为键值

  • 获取:
    uni.getStorageSync(‘name’) // 以健名取键值

  • 删除:
    uni.removeStorageSync(‘name’) // 删除该键名的数据

  • 异步存储和读取

  • 存储:

uni.setStorage({
    key: "name",          // 键名
    data: "你好,word"      // 键值
});
  • 获取:
uni.getStorage({
    key: "name",          // 键名
    success(res){
        console.log.(res.data)    // 你好,word
    }
});
  • 删除:
uni.reomveStorage({
    key: "name",          // 键名
    success(res){
        console.log.(res)    // ok
    }
});

uni-app 路由与页面跳转💪

跳转方式特点
uni.navigateTo({url: “/路径?参数=参数值”});保留当前页面,只能跳转非tabBar页面
uni.switchTab({url: “/路径?参数=参数值”});关闭所有非tabbar页面,只能打开tabbar页面
uni.redirectTo({url: “/路径?参数=参数值”});关闭卸载当前页面,只能打开非tabBar页面
uni.reLaunch({url: “/路径?参数=参数值”});关闭卸载所有页面,可以打开任意页面
uni.navigateBack({delta: 2});返回上一页面 delta:返回页数
标签< navigator >open-type属性决定跳转方式
uni.preloadPage({url: “/pages/test/test”});在这里插入图片描述

效 果 图

<navigator url="../message/message?id=99">界面跳转传参</navigator>

//获取路由参数,在界面的onLoad方法中获取
onLoad(options) {
	console.log(options)
},

uni-app全局变量怎么定义,怎么获取🌝

在app.js中设置globalData设置,在需要的地方的js文件let app=getApp() app.globalData.数据

uni中生命周期⭐

界面和应用的生命周期采用的绝大多数是小程序的生命周期
组件的生命周期采用的是vue的生命周期。想看更多细节 uni-app官网 链接奉上

1.APP页面

生命周期函数介绍
onLaunch当uni-app 初始化完成时触发(全局只触发一次)
onShow当 uni-app 启动,或从后台进入前台显示
onHide当 uni-app 从前台进入后台
onError当 uni-app 报错时触发
onUniNViewMessage对 nvue 页面发送的数据进行监听
onUnhandledRejection对未处理的 Promise 拒绝事件监听函数
onPageNotFound页面不存在监听函数
onThemeChange监听系统主题变化

2.pages页面
效果图
在这里插入图片描述

3.组件生命周期

函数名说明平台差异说明
beforeCreate在实例初始化之前被调用。详见
created在实例创建完成后被立即调用。详见
beforeMount在挂载开始之前被调用。详见
mounted挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档
beforeUpdate数据更新时调用,发生在虚拟 DOM 打补丁之前。详见 仅H5平台支持
updated由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见 仅H5平台支持
beforeDestroy实例销毁之前调用。在这一步,实例仍然完全可用。详见
destroyedVue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。详见

提高微信小程序速度的方法✈️

控制代码包的大小:

(1)代码包的体积压缩可以通过勾选开发者工具中“上传代码时,压缩代码”选项

(2)及时清理无用的代码和资源文件

(3)减少资源包中的图片等资源的数量和大小

分包加载,预加载:

将用户访问率高的页面放在主包里,将访问率低的页面放入子包里,按需加载;采用子包预加载技术,并不需要等到用户点击到子包页面后在下载子包

预请求:

请求可以在页面onLoad就加载,不需要等页面ready后在异步请求数据;尽量减少不必要的https请求,可使用 getStorageSync() 及 setStorageSync() 方法将数据存储在本地
避免不当的使用setData:
不要过于频繁调用setData,应考虑将多次setData合并成一次setData调用

使用自定义组件:
对于一些独立的模块我们尽可能抽离出来,这是因为自定义组件的更新并不会影响页面上其他元素的更新;各个组件也将具有各自独立的逻辑空间。每个组件都分别拥有自己的独立的数据、setData调用

That’s the beauty of music. They can’t get that from you.

这就是音乐的美丽。他们无法把这种美丽从你那里夺去。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python实战】“特种兵”们的专属游戏助手,助你吃鸡:极品小助手也是棒呆了~(“大吉大利,今W吃鸡”)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 “注意左边&#xff0c;左边有人&#xff0c;打他&#xff01;” “快上车&#xff01;&#xff0…

Spring Security(十九)--OAuth2:实现授权服务器(下)--环境准备以及骨架代码搭建

一、前言 本章我们将在上一章代码骨架搭建好的前提下对三种授权类型进行测试以及讲解如何配置授权服务器以颁发刷新令牌&#xff0c;所以本章是一个比较轻松的章节&#xff0c;但是唯一的要求就是需要小伙伴们对上一章内容要完成代码的搭建&#xff0c;否则这章学习也不知道个…

[附源码]计算机毕业设计springboot飞越青少儿兴趣培训机构管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

嘉创房地产冲刺港交所:半年营收4.7亿 现金及现金等价物减少

雷递网 雷建平 11月28日嘉创房地产控股有限公司&#xff08;简称&#xff1a;“嘉创”&#xff09;日前递交招股书&#xff0c;准备在港交所上市。半年营收4.73亿嘉创为一家精品住宅物业发展商&#xff0c;主要在大湾区的东莞、惠州及佛山迅速发展的住宅市场&#xff08;如东莞…

m半分布式JAC联合接纳控制与用户位置信息的垂直切换matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着无线通信技术的飞速发展&#xff0c;为支持多种不同无线接入技术、不同系统间协作、不同业务类型及终端差异性等需求&#xff0c;未来的无线网络将是一种协作式的异构网络融合架构&#xff0…

文理导航杂志文理导航杂志社文理导航编辑部2022年第12期目录

专题研究《文理导航》投稿&#xff1a;cn7kantougao163.com 初中科学生活化作业优化策略 唐黎娜; 4-6 揭密2022年新高考1卷解析几何解答题 陈思伽; 7-9 初中数学错题资源的有效运用 王丹; 10-12 浅谈陶行知思想在初中体育教学中的应用 王树华; 13-15 高中数…

Error: error:0308010C:digital envelope routines::unsupported(vue2项目报错)

问题描述 在 终端输入 npm run dev 命令&#xff0c;项目运行报错 Error: error:0308010C:digital envelope routines::unsupported 问题原因 node 版本过高&#xff0c;可以在命令行 输入 node -v 查看版本 因为 Node.js 版本是 17 以上所以会运行失败&#xff0c; Node.j…

MySQL为自动编号的字段赋值

insert users values(NULL,ming,fasdfasdfasd,22,1); 或者 insert users values(DEFAULT,ming,fasdfasdfasd,22,1);

分布式消息中间件RabbitMQ解析

RabbitMQ作为分布式消息存储和转发系统&#xff0c;已广泛使用于分布式系统中。本文简要介绍RabbitMQ相关概念、集群架构和消息转发流程&#xff0c;并与Kafka做了简要对比&#xff0c;以加深理解。 1、RabbitMQ相关概念 1.1 AMQP介绍 消息&#xff08;Message&#xff09;是…

【uni-app】详细总结uni-app基础知识和如何配置项目,运行到模拟器和小程序端,附案例和图(建议收藏)

1- uni-app 简介 1.1 介绍 uni-app 是一个使用 Vue.js 开发所有前端应用的框架。 开发者编写一套代码&#xff0c;可发布到 iOS、Android、H5、以及各种小程序&#xff08;微信/支付宝/百度/头条/QQ/钉钉/淘宝&#xff09;、快应用等多个平台。 详细的 uni-app 官方文档&#…

煤炭行业数据库-煤炭价格、消耗量、发电量分省市民用电、工业用电数据

&#xff08;1&#xff09;煤炭行业数据库 1、数据来源&#xff1a; WIND数据库煤炭资源网 2、时间跨度&#xff1a;至今 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 包含指标如下 煤炭价格 国际煤价&#xff08;周&#xff09; 秦皇岛煤炭价格&#xff08;…

【仿牛客网笔记】项目进阶,构建安全高效的企业服务——优化网站性能

Caffeine是最好缓存工具 登录凭证和用户有直接关联不适合存放在本地缓存 本地缓存和redis缓存的区别 本地缓存的效率高 整个缓存在使用的过程中详细流程 caffeine的使用 caffeine的使用手册 affeine的导包 设置自定义参数 去优化查询的方法&#xff0c;通常优化的是Servi…

MIT发现语言模型内的事实知识可被修改??

文 | 小伟前言众所周知&#xff0c;自回归语言模型(如GPT-2)里存储着大量的事实知识&#xff0c;比如语言模型可以正确的预测出埃菲尔铁塔所在的城市是巴黎市。那么语言模型是在什么地方存储这些知识呢&#xff1f;我们是否可以修改存储在语言模型里的知识呢&#xff1f;来自于…

流媒体传输 - RTP 荷载 H265

H265 码流结构 H265 码流和是由很多 NAL Unit 组成&#xff0c;所有 NAL Unit 均存在一个 16 位数据的 NAL Unit Header &#xff0c;一个 NAL Unit Header 的语法如下: ------------------------------|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|----------------|F| Type | La…

电感啸叫产生的根本原因及解决方法

电感啸叫产生的根本原因及解决方法 【摘 要】环形电感或工形电感啸叫问题&#xff0c;在稳压电源电路的设计经常遇到&#xff0c;根据稳压电源芯片的不同和外围电路的不同&#xff0c;解决方法也各不相同&#xff0c;本文档的宗旨是分析电感啸叫的根本原因&#xff0c;并综合各…

使用Psycopg2连接openGauss

文章目录1.简介2.接口介绍开发流程接口说明3.使用3.1环境准备3.2下载并加载python驱动3.3创建数据库连接用户3.4示例4.常见报错1.简介 Psycopg是一种用于执行SQL语句的PythonAPI&#xff0c;可以为PostgreSQL、openGauss数据库提供统一访问接口&#xff0c;应用程序可基于它进…

我们为什么喜欢看疯狂科学家开飞艇?

很多人可能不是科幻迷&#xff0c;也在日常生活中接触过蒸汽朋克。为什么呢&#xff1f;很简单——蒸汽朋克几乎无处不在。相比其他科幻流派&#xff0c;蒸汽朋克可能算是最“出圈”的一种。简单地说&#xff0c;蒸汽朋克是一种科幻小说类型&#xff0c;由“蒸汽 ”(steam)和“…

微服务框架 SpringCloud微服务架构 3 Eureka 3.5 服务发现

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构3 Eureka3.5 服务发现3.5.1 在order-service完成服务拉取3.5.2 总结3 Eure…

实习day1

今天部署东西&#xff1a; docker compose -f docker-compose.yml up -d 知道这个命令是什么意思 先进入decays里面&#xff0c;再进去corepack &#xff0c;在进入yarn安装代码。 需要进入路径然后run 这个东西 c:\Users\yuan\PycharmProjects\decsys\app\Decsys>dotnet…

IBM MQ命令:DEFINE AUTHINFO

此命令里有很多内容值得一看。 https://www.ibm.com/docs/en/ibm-mq/8.0?topiccommands-define-authinfo#q085490___6 一&#xff0c;CHCKCLNT CHCKCLNT This attribute determines the authentication requirements for client applications, and is valid only for an A…