首页IT科技前端uni-app面试题(uniapp 高频面试题合集)

前端uni-app面试题(uniapp 高频面试题合集)

时间2025-04-28 09:13:53分类IT科技浏览3382
导读:目录...

目录

谈谈你对uni-app的理解

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

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

        条件注释定义

        条件注释的语法

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

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

谈谈你对uni-app的理解

详情请点击此处

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

使用条件注释

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

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

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

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

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

C 语言中               ,通过 #ifdef               、#ifndef 的方式            ,为 windows      、mac 等不同 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请求

封装的目的

封装代码 

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": ""                                 }                        }              }     } }
声明:本站所有文章   ,如无特殊说明或标注           ,均为本站原创发布   。任何个人或组织               ,在未征得本站同意时      ,禁止复制         、盗用               、采集         、发布本站内容到任何网站      、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益         ,可联系我们进行处理              。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
chat gpt免费手机版(把 ChatGPT 加入 Flutter 开发,会有怎样的体验?) javascript(JS中关于Class类的静态属性和静态方法)