12.17面试题

目录

讲下路由拦截器

缓存路由

uniapp页面跳多个页面返回根页面会有什么问题

vue动态路由跳转

uiapp有哪些跳转方式

前端团队有多少人?你在里面的定位?

[uniapp IOS和安卓打包上架](#uniapp IOS和安卓打包上架)

[pinia是怎么存数据的 一般都存的什么数据](#pinia是怎么存数据的 一般都存的什么数据)

接口如何封装的


讲下路由拦截器

beforeEach前置路由守卫afterEach后置路由守卫

javascript 复制代码
// 全局路由守卫
 
//前置路由守卫  初始化时被调用 每次路由切换之前被调用
// to  去哪儿 from 来自哪里 next 放行
router.beforeEach((to, from, next) => {
  if (!token && !to.query.token) {
    if (to.path == '/login') {
      next();
    } else {
      next('/login');
    }
  } else {
    next();
  }
});
 
 
// 后置路由守卫 初始化时被调用 每次路由切换之后被调用
router.afterEach((to, from, next) => {});
javascript 复制代码
          {
            path: '/news',
            name: 'News',
            meta: {
              isAuth: true
            },
            component: () => import('../views/news/news.vue'),
 
            // 独享路由守卫  只针对单个路由进行限制  只有前置 没有后置
            beforeEnter: (to, from, next) => {
              const token = localStorage.getItem('token');
              if (to.meta.isAuth) {
                if (!token && !to.query.token) {
                   if (to.path == '/login') {
                    next();
                  } else {
                    next('/login');
                  }
                } else {
                  next();
                }
              }
            }
 
          }
javascript 复制代码
组件内使用
 
//进入守卫 通过路由桂策 进入该组件时被调用
beforeRouteEnter(to,from,next){ }
 
//离开守卫 通过路由规则 离开该组件时被调用
beforeRouteLeave(to,from,next){ }

缓存路由

方法1:使用<keep-alive>

作用:让不展示的路由组件保持挂载 不被销毁

如:组件中的Input输入后 切换别的组件 回来输入的值还在

javascript 复制代码
const router = new VueRouter({
  routes: [
    {
      path: '/home',
      component: () => import('./components/Home.vue')
    },
    {
      path: '/profile',
      component: () => import('./components/Profile.vue')
    }
  ]
})

然后在你的App.vue或者相应的父组件中使用<keep-alive>来缓存这些组件

javascript 复制代码
<template>
  <keep-alive>
    <router-view></router-view>
  </keep-alive>
</template>
方法2:使用meta字段和动态<keep-alive>

如果你想要更细粒度地控制哪些路由需要被缓存,你可以在路由配置中使用meta字段,并在父组件中根据路由的meta信息决定是否使用<keep-alive>

修改路由配置,添加meta字段:

javascript 复制代码
const router = new VueRouter({
  routes: [
    {
      path: '/home',
      component: Home,
      meta: { keepAlive: true } // 标记此路由需要被缓存
    },
    {
      path: '/profile',
      component: Profile,
      meta: { keepAlive: false } // 标记此路由不需要被缓存
    }
  ]
})

然后在父组件中动态使用<keep-alive>

javascript 复制代码
<template>
  <keep-alive v-if="$route.meta.keepAlive">
    <router-view></router-view>
  </keep-alive>
  <router-view v-else></router-view>
</template>

uniapp页面跳多个页面返回根页面会有什么问题

vue动态路由跳转

在 Vue 中实现动态路由跳转,主要依赖于 Vue Router 组件的 <router-link> 标签或 this.$router.push() 方法。

uiapp有哪些跳转方式

  • uni.navigateTo 保留当前页面
  • uni.redirtectTo 瑞得ruai可特 关闭当前页面
  • uni.relaunch 关闭所有页面
  • uni.switchTab 套转到tabtar页面 并关闭所有非tabtar页面
  • uni.navigateback 关闭当前页面 返回上一页面或多级页面

前端团队有多少人?你在里面的定位?

uniapp IOS和安卓打包上架

pinia是怎么存数据的 一般都存的什么数据

接口如何封装的

以我负责的微信小程序项目为例,其中包含了loading统一处理,请求拦截器,响应拦截器,错误处理,接口超时的时间等

首先定义基础配置 其中包含url,timeout,loading,loadingText,showErrorToast等

然后用new promise包裹wx.request,接收参数 URL,method,data,hearder等参数,合并默认配置和自定义配置

添加请求拦截器 请求拦截中hearder头中添加缓存token 判断token是否存在 不存在跳转登录页 存在存到header头中 或者是请求拦截器中header头中添加app版本号或者设备号

添加响应拦截器 先统一解析数据 成功返回核心数据 失败则统一处理(如 401 自动刷新 token 并重试请求或者跳转到登录页,500服务器错误,其他错误提示用户)

注意事项:

loading控制:请求成功或失败之后记得关闭loading 避免忘记关闭页面卡死

相关推荐
青枣八神2 小时前
如何让手机访问电脑本地的前端服务器网页(Vite等前端项目)
服务器·前端·web·手机访问
榴莲omega2 小时前
第14天:React 工程化与设计模式
前端·react.js·设计模式
FmZero2 小时前
后端全栈路线(9小时前端速成)
前端·vscode·学习
万世浮华戏骨2 小时前
Web 后端 Python 基础安全
前端·python·安全
Dontla2 小时前
JWT认证流程(JSON Web Token)
前端·数据库·json
余人于RenYu7 小时前
Claude + Figma MCP
前端·ui·ai·figma
杨艺韬10 小时前
vite内核解析-第2章 架构总览
前端·vite
我是伪码农11 小时前
外卖餐具智能推荐
linux·服务器·前端
2401_8858850411 小时前
营销推广短信接口集成:结合营销策略实现的API接口动态变量填充方案
前端·python
小李子呢021111 小时前
前端八股性能优化(2)---回流(重排)和重绘
前端·javascript