uniapp 高频面试题合集

这篇具有很好参考价值的文章主要介绍了uniapp 高频面试题合集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

谈谈你对uni-app的理解

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

条件注释的作用和使用方法

        条件注释定义

        条件注释的语法

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

uniapp中为什么会出现跨域问题,如何解决


谈谈你对uni-app的理解

详情请点击此处

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

使用条件注释

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

条件注释的作用和使用方法

uni-app 已将常用的组件、JS API 封装到框架中,开发者按照 uni-app 规范开发即可保证多平台兼容,大部分业务均可直接满足。

但每个平台有自己的一些特性,因此会存在一些无法跨平台的情况。

  • 大量写 if else,会造成代码执行性能低下和管理混乱。
  • 编译到不同的工程后二次修改,会让后续升级变的很麻烦。

C 语言中,通过 #ifdef#ifndef 的方式,为 windowsmac 等不同 os 编译不同的代码。 uni-app 参考这个思路,为 uni-app 提供了条件编译手段,在一个工程里优雅的完成了平台个性化实现。

条件注释定义

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

条件注释的语法

写法: #ifdef  #ifndef  %PLATFORM% 开头,以 #endif 结尾。

  • #ifdefif defined 仅在某平台存在
  • #ifndefif not defined 除了某平台均存在
  • %PLATFORM%:平台名称

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

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

uniapp中为什么会出现跨域问题,如何解决

原因

        uniapp在web端进行适配时,会产生跨域问题

解决

        配置代理

封装统一的http请求

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

封装的目的

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

封装代码 文章来源地址https://www.toymoban.com/news/detail-401021.html

const proxy = {

    "/api":{

             target:"http://59.111.104.104:8086",

             pathRewrite:'^/api'

    }

}

//http://59.111.104.104:8086/course

/// 作用: 根据当前的url和代理得到完整url

// 输入: 当前的url

// 输出: 完整的url

function getUrl(url){

    for(let key in proxy){

             if(url.startsWith(key)){

                       // 匹配到了代理

                       if(proxy[key].pathRewrite){

                                // 需要进行前缀重写

                                url = url.replace(new RegExp(proxy[key].pathRewrite),"")

                       }

                       url = proxy[key].target + url

                       break;

             }

    }

    ///返回处理后的url

    return url;

}



function getHeader(header={}){

    return {

                       "Content-Type":"application/x-www-form-urlencoded",

                       // #ifndef H5

                       "Cookie":uni.getStorageSync("cookie"),

                       // #endif

                       ...header

             }

}

function request(options){

    return new Promise((reslove,reject)=>{

             if(!options.header) options.header = {}

             const header = getHeader(options.header);

            

             // 请求之前进行一些操作

             // 加载代理

             // #ifndef H5

             options.url = getUrl(options.url)

             // #endif

             console.log(options.url)

             uni.request({

                       // 设置超时时间10s

                       timeout:10000,

                       ...options,

                       header,

                       success(res) {

                                // 响应之前进行一些操作

                                reslove(res)

                       },

                       fail(err) {

                                reject(err)

                       }

             })

    })

}



export function get(url,options){

    return request({

             url,

             ...options,

             method:"GET"

    })

}



export function post(url,data,options){

    return request({

             url,

             data,

             ...options,

             method:"POST"

    })

}













//配置代理

//vue.config.js

module.exports = {

    devServer: {

             proxy: {

                       "/api": {

                                "target": "https://wk.myhope365.com",

                                "pathRewrite": {

                                          "^/api": ""

                                }

                       }



             }

    }

}

到了这里,关于uniapp 高频面试题合集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 九耶丨阁瑞钛伦特-Java高频面试题-请谈谈 ReadWriteLock 和 StampedLock

    ReadWriteLock包括两种子锁 (1)ReadWriteLock ReadWriteLock 可以实现多个读锁同时进行,但是读与写和写于写互斥,只能有一个写锁线程在进行。 (2)StampedLock StampedLock是Jdk在1.8提供的一种读写锁,相比较ReentrantReadWriteLock性能更好,因为ReentrantReadWriteLock在读写之间是互斥的,使用的

    2024年02月12日
    浏览(82)
  • 入职微软一月后的感悟,谈谈面试经历及入职体验,web前端常见面试题

    在某一天,我在某 App 上被一个微软的陌生人勾搭,简单地电面后一拍即合,我向他投递了简历。 正式的面试一共有四轮,三轮技术面 + 一轮 AA 面(大老板),每轮持续时间一个小时左右。 除了最后一面聊了聊人生、理想、逻辑推理等非技术内容。其他三面基本上是项目算

    2024年04月26日
    浏览(48)
  • 微信小程序和uniapp高频面试题

    一.微信小程序主要目录和文件的作用? 1.project.config.json 项目配置文件,做一些个性化配置,例如界面颜色、编译配置等等 2.app.json 当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等 3.sitemap 配置小程序及其页面是否允许被微信索引

    2023年04月08日
    浏览(67)
  • 【面经】谈谈你对FastDFS的了解

    2024年02月06日
    浏览(40)
  • 谈谈你对倒排索引的理解

    谈谈你对倒排索引的理解 在聊倒排索引之前,我们需要先了解一下‘索引’概念。 什么是索引呢? 索引是为了加速对表中数据行的检索而创建的一种分散的存储结构 。 通俗的来讲索引好比就是 新华字段中拼音的首字母还有偏旁 ,根据拼音的首字母和偏旁能很快的查找到你

    2024年02月07日
    浏览(37)
  • 18.谈谈你对JSON的理解

    JSON 是一种 基于文本的轻量级的数据交换格式 。它可以被 任何的编程语言读取 和作为 数据格式 来传递。 在项目开发中,使用 JSON 作为前后端数据交换的方式 。在前端通过将一个符合 JSON 格式的数据结构序列化为 JSON 字符串,然后将它传递到后端,后端通过 JSON 格式的字符

    2024年02月22日
    浏览(43)
  • 让我们谈谈你对 ThreadLocal 的理解

    从 JDK1.2 开始,ThreadLocal 是一个被用来存储线程本地变量的类。在 ThreadLocal 中的变量在线程之间是独立的。当多个线程访问 ThreadLocal 中的变量,它们事实上访问的是自己当前线程在内存中的变量,这能确保这些变量是线程安全的。 我们通常使用 ThreadLocal 解决线程中的变量冲

    2023年04月16日
    浏览(38)
  • 谈谈你对 Spring AOP 的理解

    Java面试目录 谈谈你对 Spring AOP 的理解 Spring AOP是面向切面编程,通过代理模式来实现。 我们将与业务逻辑无关,同时又需要在业务执行前后调用的逻辑封装起来,利用代理来进行统一调度。可以减少系统的重复代码,降低耦合度,增加可维护性。使用场景包括:事务处理,

    2024年01月22日
    浏览(46)
  • 1、什么是面向对象?谈谈你对面向对象的理解

    对比面向过程,是两种不同的处理问题的角度 面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、及各自需要做什么 比如 : 洗衣机洗衣服 面向过程会将任务拆解成一系列的步骤(函数),1、打开洗衣机 …2、放衣服…3、放洗衣粉…4、清洗…

    2024年02月13日
    浏览(41)
  • 分布式 - 谈谈你对分布式的理解,为什么引入分布式?

    不啰嗦,我们直接开始! 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。 能否在设计中对系统稳定性方面考虑周全。 能构建高 QPS 健壮的系统架构。 问题分析: 各种分布式框架层出不穷,Spring Cloud,阿里的 Dubbo,无论使用哪一个,原理都相同,考察下基

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包